Compare commits

..

40 Commits

Author SHA1 Message Date
Quixos Subtree Publisher c15a8a51fa Publish camino-package-runtime from fa363fa2f4e83d0996c1229ab1ecf9e0541d5d4f 2026-09-05 04:28:56 +00:00
timothy 2de080c09f Make package-runtime publication verify generated distribution 2026-09-04 21:28:56 -07:00
Quixos Subtree Publisher b7b4a63155 Publish camino-package-runtime from e77d2eb0eb5ed034fb5e20a3600412eda4e3c73d 2026-09-05 04:07:14 +00:00
timothy d83f82c90f Pin runtimes to persisted component protocol 2026-09-04 21:07:14 -07:00
timothy 04614be2c9 Introduce persisted Web Studio component capabilities 2026-09-04 21:04:43 -07:00
timothy 16b344c0ad Introduce repository-backed capability workspaces
- define and validate the capability and resource-lock languages
- provision workspace source repositories through Central Gitea
- build package runtimes from pinned standalone sources
- replace legacy schema compilation with workspace persistence plans
- add stable optimistic registers and Automerge CRDT documents
- modernize TypeScript/Nix package builds and runtime activation readiness
2026-09-04 19:08:10 -07:00
Quixos Subtree Publisher 385a5bd595 Publish camino-package-runtime from 321d5fa6c8b7619c1dc9cc4976318f246e645812 2026-09-05 01:30:55 +00:00
timothy 9771b0803e Host workspace repositories on Central Gitea 2026-09-04 18:30:55 -07:00
Quixos Subtree Publisher 2dfba87179 Publish camino-package-runtime from ce0dd80f56df35bf3db1be01236a949a704cb4c2 2026-09-04 17:41:38 +00:00
timothy ab46f4f136 Host workspace repositories on Central Gitea 2026-09-04 10:41:38 -07:00
Quixos Subtree Publisher 673575fc54 Publish camino-package-runtime from 64e5ed409717f2a7c59fe5d94ed0cf0dc7e24a2a 2026-09-04 17:23:43 +00:00
timothy dcdbd525fb Host workspace repositories on Central Gitea 2026-09-04 10:23:43 -07:00
Timothy J. Aveni 5d3bd68a63 Generate protobuf value declarations for runtime fields 2026-09-03 09:50:30 -07:00
Quixos Subtree Publisher 5c6f9b9de5 Publish camino-package-runtime from 29863fb4575e960d6f87cbeb6cc5ad69e44f0127 2026-09-03 16:50:30 +00:00
Timothy J. Aveni 69441e9465 Validate edge reference declarations directly 2026-09-03 09:47:35 -07:00
Quixos Subtree Publisher 6c3542d2ea Publish camino-package-runtime from 0afd5b03b7640bf6962d3059cd50aef76a3b56da 2026-09-03 16:47:35 +00:00
Timothy J. Aveni 833518c3ea Keep protobuf value types distinct from object refs 2026-09-03 09:44:56 -07:00
Quixos Subtree Publisher e564cfeb32 Publish camino-package-runtime from 988bb022bf279fb83d8720c239844a272c676e67 2026-09-03 16:44:56 +00:00
Timothy J. Aveni 013d4cf3c8 Send incremental CRDT changes from package runtimes 2026-09-03 09:41:08 -07:00
Quixos Subtree Publisher aec3a348b1 Publish camino-package-runtime from 9e02a6add77fb8f36c8d242c7a135069cabc783b 2026-09-03 16:41:08 +00:00
Timothy J. Aveni 8fc1060b65 Publish browser method runtime declaration 2026-07-18 12:11:20 -07:00
Quixos Subtree Publisher a83c43f9d9 Publish camino-package-runtime from 2acad11c4bcae2bbde2180327d45d5db9cffc9ed 2026-07-18 19:11:20 +00:00
Timothy J. Aveni b1d0667045 Add schema-driven project task creation 2026-07-18 12:10:00 -07:00
Quixos Subtree Publisher cad6057316 Publish camino-package-runtime from ee693da2ca152011d8bddf205cd5d44488335ea1 2026-07-18 19:10:00 +00:00
Timothy J. Aveni 9674ffa108 Publish updated Camino codegen artifacts 2026-07-18 10:35:48 -07:00
Quixos Subtree Publisher 1df06f4be7 Publish camino-package-runtime from 18c19a5b893e6196a357de9a3c52636b3ce9e33e 2026-07-18 17:35:48 +00:00
Timothy J. Aveni 02e2313aa9 Generate typed React component bindings 2026-07-18 10:33:55 -07:00
Quixos Subtree Publisher bd684cd07d Publish camino-package-runtime from 9f6f36f9932aa1f938eb507c5ed372200dee0096 2026-07-18 17:33:55 +00:00
Timothy J. Aveni df4946e016 Teach package runtime edge materialization 2026-07-15 07:54:17 -07:00
Quixos Subtree Publisher 765c321f8a Publish camino-package-runtime from 51607ba09c066e59a5c80a4b6cce46eb61fda501 2026-07-15 14:54:17 +00:00
Timothy J. Aveni d2e3172a62 Add undirected edge support to package runtime 2026-07-14 22:37:39 -07:00
Quixos Subtree Publisher fa6939d40c Publish camino-package-runtime from 24cede02e95c62c065d5e573d5793e3c426e8080 2026-07-15 05:37:39 +00:00
Timothy J. Aveni 415eb6b411 Update package runtime edge ordinal API 2026-07-14 20:31:28 -07:00
Quixos Subtree Publisher 0f2e0f6d89 Publish camino-package-runtime from 015f04412c856751c3535eb306218e8f1b9ca2c8 2026-07-15 03:31:28 +00:00
Timothy J. Aveni 85e0dafbeb Teach package runtime edge endpoints 2026-07-14 07:57:20 -07:00
Quixos Subtree Publisher 5ab1ec5428 Publish camino-package-runtime from 268fe40efd0632e886e85f87071ed8da31b5d535 2026-07-14 14:57:20 +00:00
Timothy J. Aveni b4ab4c49c9 Remove Camino package codegen export 2026-07-13 22:01:39 -07:00
Quixos Subtree Publisher 9c7614cac1 Publish camino-package-runtime from 36e94bdf5a0009286dd0184381e3f99aac6a5f6c 2026-07-14 05:01:39 +00:00
Timothy J. Aveni 955350b487 Publish built Camino package runtime artifacts 2026-07-13 21:54:39 -07:00
Quixos Subtree Publisher 0fb0da6b18 Publish camino-package-runtime from e18cccf3ee47a7b6467b3f922fc5e9a67321d4b7 2026-07-14 04:54:39 +00:00
41 changed files with 5194 additions and 3651 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"version": 1, "version": 1,
"sourceRepo": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos.git", "sourceRepo": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos.git",
"sourceCommit": "e385e8ca91696f200d91df4f31a033d922be7cff", "sourceCommit": "fa363fa2f4e83d0996c1229ab1ecf9e0541d5d4f",
"sourcePath": "quixos-instance/packages/camino-package-runtime", "sourcePath": "quixos-instance/packages/camino-package-runtime",
"exportName": "camino-package-runtime", "exportName": "camino-package-runtime",
"mirrorRemote": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/camino-package-runtime.git" "mirrorRemote": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/camino-package-runtime.git"
Binary file not shown.
+15 -1
View File
@@ -1,5 +1,5 @@
approvedGitRepositories: approvedGitRepositories:
- https://gitea-external.egads.tutti.syntaxblitz.net/quixos/* - "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/*"
enableScripts: true enableScripts: true
@@ -9,6 +9,20 @@ individualNixPackaging: true
nodeLinker: node-modules nodeLinker: node-modules
supportedArchitectures:
os:
- current
- linux
cpu:
- current
- x64
- arm64
libc:
- current
- glibc
npmMinimalAgeGate: 0
plugins: plugins:
- checksum: 271de9a785321a37c564b8e2a6b5cd689850b20572d5fee8ec0a6b8e7a5d4cfb59e533524af2b4a537e00da12828abd062eaec6978556e3dd9149a020db2591b - checksum: 271de9a785321a37c564b8e2a6b5cd689850b20572d5fee8ec0a6b8e7a5d4cfb59e533524af2b4a537e00da12828abd062eaec6978556e3dd9149a020db2591b
path: .yarn/plugins/yarn-plugin-nixify.cjs path: .yarn/plugins/yarn-plugin-nixify.cjs
+844
View File
@@ -0,0 +1,844 @@
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
import type { PersistencePlan } from "./schema_pb.js";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file camino/api.proto.
*/
export declare const file_camino_api: GenFile;
/**
* @generated from message camino.NullValue
*/
export type NullValue = Message<"camino.NullValue"> & {};
/**
* Describes the message camino.NullValue.
* Use `create(NullValueSchema)` to create a new message.
*/
export declare const NullValueSchema: GenMessage<NullValue>;
/**
* @generated from message camino.ObjectValue
*/
export type ObjectValue = Message<"camino.ObjectValue"> & {
/**
* @generated from field: map<string, camino.Value> fields = 1;
*/
fields: {
[key: string]: Value;
};
};
/**
* Describes the message camino.ObjectValue.
* Use `create(ObjectValueSchema)` to create a new message.
*/
export declare const ObjectValueSchema: GenMessage<ObjectValue>;
/**
* @generated from message camino.ListValue
*/
export type ListValue = Message<"camino.ListValue"> & {
/**
* @generated from field: repeated camino.Value values = 1;
*/
values: Value[];
};
/**
* Describes the message camino.ListValue.
* Use `create(ListValueSchema)` to create a new message.
*/
export declare const ListValueSchema: GenMessage<ListValue>;
/**
* @generated from message camino.RefValue
*/
export type RefValue = Message<"camino.RefValue"> & {
/**
* @generated from field: string object_id = 1;
*/
objectId: string;
};
/**
* Describes the message camino.RefValue.
* Use `create(RefValueSchema)` to create a new message.
*/
export declare const RefValueSchema: GenMessage<RefValue>;
/**
* @generated from message camino.CrdtValue
*/
export type CrdtValue = Message<"camino.CrdtValue"> & {
/**
* @generated from field: string type = 1;
*/
type: string;
/**
* @generated from field: string encoding = 2;
*/
encoding: string;
/**
* @generated from field: bytes payload = 3;
*/
payload: Uint8Array;
};
/**
* Describes the message camino.CrdtValue.
* Use `create(CrdtValueSchema)` to create a new message.
*/
export declare const CrdtValueSchema: GenMessage<CrdtValue>;
/**
* @generated from message camino.StateValueSource
*/
export type StateValueSource = Message<"camino.StateValueSource"> & {
/**
* @generated from field: string object_id = 1;
*/
objectId: string;
/**
* @generated from field: string slot_id = 2;
*/
slotId: string;
/**
* @generated from field: string value_type_json = 3;
*/
valueTypeJson: string;
/**
* @generated from field: string storage_policy_json = 4;
*/
storagePolicyJson: string;
/**
* @generated from field: uint64 revision = 5;
*/
revision: bigint;
/**
* CRDT-backed state is still read as its materialized Value. The snapshot
* travels with the writable source identity so a client can retain and
* advance a local replica without exposing the document to package code.
*
* @generated from field: camino.CrdtValue crdt_snapshot = 6;
*/
crdtSnapshot?: CrdtValue | undefined;
};
/**
* Describes the message camino.StateValueSource.
* Use `create(StateValueSourceSchema)` to create a new message.
*/
export declare const StateValueSourceSchema: GenMessage<StateValueSource>;
/**
* @generated from message camino.ValueSource
*/
export type ValueSource = Message<"camino.ValueSource"> & {
/**
* @generated from field: camino.StateValueSource state = 1;
*/
state?: StateValueSource | undefined;
};
/**
* Describes the message camino.ValueSource.
* Use `create(ValueSourceSchema)` to create a new message.
*/
export declare const ValueSourceSchema: GenMessage<ValueSource>;
/**
* @generated from message camino.Value
*/
export type Value = Message<"camino.Value"> & {
/**
* @generated from oneof camino.Value.kind
*/
kind: {
/**
* @generated from field: camino.NullValue null_value = 1;
*/
value: NullValue;
case: "nullValue";
} | {
/**
* @generated from field: bool bool_value = 2;
*/
value: boolean;
case: "boolValue";
} | {
/**
* @generated from field: double number_value = 3;
*/
value: number;
case: "numberValue";
} | {
/**
* @generated from field: string string_value = 4;
*/
value: string;
case: "stringValue";
} | {
/**
* @generated from field: string integer_value = 5;
*/
value: string;
case: "integerValue";
} | {
/**
* @generated from field: bytes bytes_value = 6;
*/
value: Uint8Array;
case: "bytesValue";
} | {
/**
* @generated from field: camino.ObjectValue object_value = 7;
*/
value: ObjectValue;
case: "objectValue";
} | {
/**
* @generated from field: camino.ListValue list_value = 8;
*/
value: ListValue;
case: "listValue";
} | {
/**
* @generated from field: camino.RefValue ref_value = 9;
*/
value: RefValue;
case: "refValue";
} | {
/**
* @generated from field: camino.CrdtValue crdt_value = 10;
*/
value: CrdtValue;
case: "crdtValue";
} | {
case: undefined;
value?: undefined;
};
/**
* @generated from field: camino.ValueSource source = 11;
*/
source?: ValueSource | undefined;
};
/**
* Describes the message camino.Value.
* Use `create(ValueSchema)` to create a new message.
*/
export declare const ValueSchema: GenMessage<Value>;
/**
* @generated from message camino.InstallPersistencePlanRequest
*/
export type InstallPersistencePlanRequest = Message<"camino.InstallPersistencePlanRequest"> & {
/**
* @generated from field: camino.PersistencePlan plan = 1;
*/
plan?: PersistencePlan | undefined;
};
/**
* Describes the message camino.InstallPersistencePlanRequest.
* Use `create(InstallPersistencePlanRequestSchema)` to create a new message.
*/
export declare const InstallPersistencePlanRequestSchema: GenMessage<InstallPersistencePlanRequest>;
/**
* @generated from message camino.InstallPersistencePlanResponse
*/
export type InstallPersistencePlanResponse = Message<"camino.InstallPersistencePlanResponse"> & {
/**
* @generated from field: camino.PersistencePlan plan = 1;
*/
plan?: PersistencePlan | undefined;
};
/**
* Describes the message camino.InstallPersistencePlanResponse.
* Use `create(InstallPersistencePlanResponseSchema)` to create a new message.
*/
export declare const InstallPersistencePlanResponseSchema: GenMessage<InstallPersistencePlanResponse>;
/**
* @generated from message camino.GetPersistencePlanRequest
*/
export type GetPersistencePlanRequest = Message<"camino.GetPersistencePlanRequest"> & {};
/**
* Describes the message camino.GetPersistencePlanRequest.
* Use `create(GetPersistencePlanRequestSchema)` to create a new message.
*/
export declare const GetPersistencePlanRequestSchema: GenMessage<GetPersistencePlanRequest>;
/**
* @generated from message camino.GetPersistencePlanResponse
*/
export type GetPersistencePlanResponse = Message<"camino.GetPersistencePlanResponse"> & {
/**
* @generated from field: camino.PersistencePlan plan = 1;
*/
plan?: PersistencePlan | undefined;
};
/**
* Describes the message camino.GetPersistencePlanResponse.
* Use `create(GetPersistencePlanResponseSchema)` to create a new message.
*/
export declare const GetPersistencePlanResponseSchema: GenMessage<GetPersistencePlanResponse>;
/**
* @generated from message camino.CreateObjectRequest
*/
export type CreateObjectRequest = Message<"camino.CreateObjectRequest"> & {
/**
* @generated from field: string atom_id = 1;
*/
atomId: string;
/**
* @generated from field: map<string, camino.Value> initial_state = 2;
*/
initialState: {
[key: string]: Value;
};
};
/**
* Describes the message camino.CreateObjectRequest.
* Use `create(CreateObjectRequestSchema)` to create a new message.
*/
export declare const CreateObjectRequestSchema: GenMessage<CreateObjectRequest>;
/**
* @generated from message camino.CreateObjectResponse
*/
export type CreateObjectResponse = Message<"camino.CreateObjectResponse"> & {
/**
* @generated from field: camino.CaminoObject object = 1;
*/
object?: CaminoObject | undefined;
};
/**
* Describes the message camino.CreateObjectResponse.
* Use `create(CreateObjectResponseSchema)` to create a new message.
*/
export declare const CreateObjectResponseSchema: GenMessage<CreateObjectResponse>;
/**
* @generated from message camino.GetObjectRequest
*/
export type GetObjectRequest = Message<"camino.GetObjectRequest"> & {
/**
* @generated from field: string object_id = 1;
*/
objectId: string;
};
/**
* Describes the message camino.GetObjectRequest.
* Use `create(GetObjectRequestSchema)` to create a new message.
*/
export declare const GetObjectRequestSchema: GenMessage<GetObjectRequest>;
/**
* @generated from message camino.GetObjectResponse
*/
export type GetObjectResponse = Message<"camino.GetObjectResponse"> & {
/**
* @generated from field: camino.CaminoObject object = 1;
*/
object?: CaminoObject | undefined;
};
/**
* Describes the message camino.GetObjectResponse.
* Use `create(GetObjectResponseSchema)` to create a new message.
*/
export declare const GetObjectResponseSchema: GenMessage<GetObjectResponse>;
/**
* @generated from message camino.ListObjectsRequest
*/
export type ListObjectsRequest = Message<"camino.ListObjectsRequest"> & {
/**
* @generated from field: string atom_id = 1;
*/
atomId: string;
};
/**
* Describes the message camino.ListObjectsRequest.
* Use `create(ListObjectsRequestSchema)` to create a new message.
*/
export declare const ListObjectsRequestSchema: GenMessage<ListObjectsRequest>;
/**
* @generated from message camino.ListObjectsResponse
*/
export type ListObjectsResponse = Message<"camino.ListObjectsResponse"> & {
/**
* @generated from field: repeated camino.CaminoObject objects = 1;
*/
objects: CaminoObject[];
};
/**
* Describes the message camino.ListObjectsResponse.
* Use `create(ListObjectsResponseSchema)` to create a new message.
*/
export declare const ListObjectsResponseSchema: GenMessage<ListObjectsResponse>;
/**
* @generated from message camino.ReadStateRequest
*/
export type ReadStateRequest = Message<"camino.ReadStateRequest"> & {
/**
* @generated from field: string object_id = 1;
*/
objectId: string;
/**
* @generated from field: string slot_id = 2;
*/
slotId: string;
};
/**
* Describes the message camino.ReadStateRequest.
* Use `create(ReadStateRequestSchema)` to create a new message.
*/
export declare const ReadStateRequestSchema: GenMessage<ReadStateRequest>;
/**
* @generated from message camino.ReadStateResponse
*/
export type ReadStateResponse = Message<"camino.ReadStateResponse"> & {
/**
* @generated from field: camino.Value value = 1;
*/
value?: Value | undefined;
};
/**
* Describes the message camino.ReadStateResponse.
* Use `create(ReadStateResponseSchema)` to create a new message.
*/
export declare const ReadStateResponseSchema: GenMessage<ReadStateResponse>;
/**
* @generated from message camino.WriteStateRequest
*/
export type WriteStateRequest = Message<"camino.WriteStateRequest"> & {
/**
* @generated from field: string object_id = 1;
*/
objectId: string;
/**
* @generated from field: string slot_id = 2;
*/
slotId: string;
/**
* @generated from field: camino.Value value = 3;
*/
value?: Value | undefined;
/**
* @generated from field: string client_mutation_id = 4;
*/
clientMutationId: string;
};
/**
* Describes the message camino.WriteStateRequest.
* Use `create(WriteStateRequestSchema)` to create a new message.
*/
export declare const WriteStateRequestSchema: GenMessage<WriteStateRequest>;
/**
* @generated from message camino.WriteStateResponse
*/
export type WriteStateResponse = Message<"camino.WriteStateResponse"> & {
/**
* @generated from field: camino.Value value = 1;
*/
value?: Value | undefined;
/**
* @generated from field: camino.CaminoObject object = 2;
*/
object?: CaminoObject | undefined;
};
/**
* Describes the message camino.WriteStateResponse.
* Use `create(WriteStateResponseSchema)` to create a new message.
*/
export declare const WriteStateResponseSchema: GenMessage<WriteStateResponse>;
/**
* @generated from message camino.ConnectEdgeRequest
*/
export type ConnectEdgeRequest = Message<"camino.ConnectEdgeRequest"> & {
/**
* @generated from field: string edge_type_id = 1;
*/
edgeTypeId: string;
/**
* @generated from field: string projection_id = 2;
*/
projectionId: string;
/**
* @generated from field: string object_id = 3;
*/
objectId: string;
/**
* @generated from field: string target_object_id = 4;
*/
targetObjectId: string;
/**
* @generated from field: optional int32 ordinal = 5;
*/
ordinal?: number | undefined;
/**
* @generated from field: optional int32 target_ordinal = 6;
*/
targetOrdinal?: number | undefined;
};
/**
* Describes the message camino.ConnectEdgeRequest.
* Use `create(ConnectEdgeRequestSchema)` to create a new message.
*/
export declare const ConnectEdgeRequestSchema: GenMessage<ConnectEdgeRequest>;
/**
* @generated from message camino.ConnectEdgeResponse
*/
export type ConnectEdgeResponse = Message<"camino.ConnectEdgeResponse"> & {
/**
* @generated from field: camino.CaminoEdge edge = 1;
*/
edge?: CaminoEdge | undefined;
};
/**
* Describes the message camino.ConnectEdgeResponse.
* Use `create(ConnectEdgeResponseSchema)` to create a new message.
*/
export declare const ConnectEdgeResponseSchema: GenMessage<ConnectEdgeResponse>;
/**
* @generated from message camino.ResolveEdgeRequest
*/
export type ResolveEdgeRequest = Message<"camino.ResolveEdgeRequest"> & {
/**
* @generated from field: string object_id = 1;
*/
objectId: string;
/**
* @generated from field: string edge_type_id = 2;
*/
edgeTypeId: string;
/**
* @generated from field: string projection_id = 3;
*/
projectionId: string;
};
/**
* Describes the message camino.ResolveEdgeRequest.
* Use `create(ResolveEdgeRequestSchema)` to create a new message.
*/
export declare const ResolveEdgeRequestSchema: GenMessage<ResolveEdgeRequest>;
/**
* @generated from message camino.ResolveEdgeResponse
*/
export type ResolveEdgeResponse = Message<"camino.ResolveEdgeResponse"> & {
/**
* @generated from field: repeated camino.CaminoEdge edges = 1;
*/
edges: CaminoEdge[];
};
/**
* Describes the message camino.ResolveEdgeResponse.
* Use `create(ResolveEdgeResponseSchema)` to create a new message.
*/
export declare const ResolveEdgeResponseSchema: GenMessage<ResolveEdgeResponse>;
/**
* @generated from message camino.DisconnectEdgeRequest
*/
export type DisconnectEdgeRequest = Message<"camino.DisconnectEdgeRequest"> & {
/**
* @generated from field: string edge_id = 1;
*/
edgeId: string;
};
/**
* Describes the message camino.DisconnectEdgeRequest.
* Use `create(DisconnectEdgeRequestSchema)` to create a new message.
*/
export declare const DisconnectEdgeRequestSchema: GenMessage<DisconnectEdgeRequest>;
/**
* @generated from message camino.DisconnectEdgeResponse
*/
export type DisconnectEdgeResponse = Message<"camino.DisconnectEdgeResponse"> & {
/**
* @generated from field: string edge_id = 1;
*/
edgeId: string;
};
/**
* Describes the message camino.DisconnectEdgeResponse.
* Use `create(DisconnectEdgeResponseSchema)` to create a new message.
*/
export declare const DisconnectEdgeResponseSchema: GenMessage<DisconnectEdgeResponse>;
/**
* @generated from message camino.ListOpsRequest
*/
export type ListOpsRequest = Message<"camino.ListOpsRequest"> & {
/**
* @generated from field: string object_id = 1;
*/
objectId: string;
};
/**
* Describes the message camino.ListOpsRequest.
* Use `create(ListOpsRequestSchema)` to create a new message.
*/
export declare const ListOpsRequestSchema: GenMessage<ListOpsRequest>;
/**
* @generated from message camino.ListOpsResponse
*/
export type ListOpsResponse = Message<"camino.ListOpsResponse"> & {
/**
* @generated from field: repeated camino.CaminoOp ops = 1;
*/
ops: CaminoOp[];
};
/**
* Describes the message camino.ListOpsResponse.
* Use `create(ListOpsResponseSchema)` to create a new message.
*/
export declare const ListOpsResponseSchema: GenMessage<ListOpsResponse>;
/**
* @generated from message camino.WatchObjectRequest
*/
export type WatchObjectRequest = Message<"camino.WatchObjectRequest"> & {
/**
* @generated from field: string object_id = 1;
*/
objectId: string;
/**
* @generated from field: string after_op_id = 2;
*/
afterOpId: string;
/**
* @generated from field: bool include_snapshot = 3;
*/
includeSnapshot: boolean;
};
/**
* Describes the message camino.WatchObjectRequest.
* Use `create(WatchObjectRequestSchema)` to create a new message.
*/
export declare const WatchObjectRequestSchema: GenMessage<WatchObjectRequest>;
/**
* @generated from message camino.WatchObjectEvent
*/
export type WatchObjectEvent = Message<"camino.WatchObjectEvent"> & {
/**
* @generated from field: string object_id = 1;
*/
objectId: string;
/**
* @generated from field: camino.CaminoObject snapshot = 2;
*/
snapshot?: CaminoObject | undefined;
/**
* @generated from field: camino.CaminoOp op = 3;
*/
op?: CaminoOp | undefined;
};
/**
* Describes the message camino.WatchObjectEvent.
* Use `create(WatchObjectEventSchema)` to create a new message.
*/
export declare const WatchObjectEventSchema: GenMessage<WatchObjectEvent>;
/**
* @generated from message camino.CaminoObject
*/
export type CaminoObject = Message<"camino.CaminoObject"> & {
/**
* @generated from field: string id = 1;
*/
id: string;
/**
* @generated from field: string atom_id = 2;
*/
atomId: string;
/**
* @generated from field: string workspace_revision_id = 3;
*/
workspaceRevisionId: string;
/**
* @generated from field: string created_at = 4;
*/
createdAt: string;
/**
* @generated from field: string updated_at = 5;
*/
updatedAt: string;
/**
* @generated from field: map<string, camino.Value> state = 6;
*/
state: {
[key: string]: Value;
};
/**
* @generated from field: map<string, uint64> state_revisions = 7;
*/
stateRevisions: {
[key: string]: bigint;
};
};
/**
* Describes the message camino.CaminoObject.
* Use `create(CaminoObjectSchema)` to create a new message.
*/
export declare const CaminoObjectSchema: GenMessage<CaminoObject>;
/**
* @generated from message camino.CaminoEdge
*/
export type CaminoEdge = Message<"camino.CaminoEdge"> & {
/**
* @generated from field: string id = 1;
*/
id: string;
/**
* @generated from field: string edge_type_id = 2;
*/
edgeTypeId: string;
/**
* @generated from field: string first_object_id = 3;
*/
firstObjectId: string;
/**
* @generated from field: string second_object_id = 4;
*/
secondObjectId: string;
/**
* @generated from field: string first_projection_id = 5;
*/
firstProjectionId: string;
/**
* @generated from field: string second_projection_id = 6;
*/
secondProjectionId: string;
/**
* @generated from field: optional int32 first_ordinal = 7;
*/
firstOrdinal?: number | undefined;
/**
* @generated from field: optional int32 second_ordinal = 8;
*/
secondOrdinal?: number | undefined;
/**
* @generated from field: string created_at = 9;
*/
createdAt: string;
};
/**
* Describes the message camino.CaminoEdge.
* Use `create(CaminoEdgeSchema)` to create a new message.
*/
export declare const CaminoEdgeSchema: GenMessage<CaminoEdge>;
/**
* @generated from message camino.CaminoOp
*/
export type CaminoOp = Message<"camino.CaminoOp"> & {
/**
* @generated from field: string id = 1;
*/
id: string;
/**
* @generated from field: string object_id = 2;
*/
objectId: string;
/**
* @generated from field: string op_kind = 3;
*/
opKind: string;
/**
* @generated from field: camino.Value payload = 4;
*/
payload?: Value | undefined;
/**
* @generated from field: string actor = 5;
*/
actor: string;
/**
* @generated from field: string created_at = 6;
*/
createdAt: string;
/**
* @generated from field: string client_mutation_id = 7;
*/
clientMutationId: string;
};
/**
* Describes the message camino.CaminoOp.
* Use `create(CaminoOpSchema)` to create a new message.
*/
export declare const CaminoOpSchema: GenMessage<CaminoOp>;
/**
* @generated from service camino.CaminoService
*/
export declare const CaminoService: GenService<{
/**
* @generated from rpc camino.CaminoService.InstallPersistencePlan
*/
installPersistencePlan: {
methodKind: "unary";
input: typeof InstallPersistencePlanRequestSchema;
output: typeof InstallPersistencePlanResponseSchema;
};
/**
* @generated from rpc camino.CaminoService.GetPersistencePlan
*/
getPersistencePlan: {
methodKind: "unary";
input: typeof GetPersistencePlanRequestSchema;
output: typeof GetPersistencePlanResponseSchema;
};
/**
* @generated from rpc camino.CaminoService.CreateObject
*/
createObject: {
methodKind: "unary";
input: typeof CreateObjectRequestSchema;
output: typeof CreateObjectResponseSchema;
};
/**
* @generated from rpc camino.CaminoService.GetObject
*/
getObject: {
methodKind: "unary";
input: typeof GetObjectRequestSchema;
output: typeof GetObjectResponseSchema;
};
/**
* @generated from rpc camino.CaminoService.ListObjects
*/
listObjects: {
methodKind: "unary";
input: typeof ListObjectsRequestSchema;
output: typeof ListObjectsResponseSchema;
};
/**
* @generated from rpc camino.CaminoService.ReadState
*/
readState: {
methodKind: "unary";
input: typeof ReadStateRequestSchema;
output: typeof ReadStateResponseSchema;
};
/**
* @generated from rpc camino.CaminoService.WriteState
*/
writeState: {
methodKind: "unary";
input: typeof WriteStateRequestSchema;
output: typeof WriteStateResponseSchema;
};
/**
* @generated from rpc camino.CaminoService.ConnectEdge
*/
connectEdge: {
methodKind: "unary";
input: typeof ConnectEdgeRequestSchema;
output: typeof ConnectEdgeResponseSchema;
};
/**
* @generated from rpc camino.CaminoService.ResolveEdge
*/
resolveEdge: {
methodKind: "unary";
input: typeof ResolveEdgeRequestSchema;
output: typeof ResolveEdgeResponseSchema;
};
/**
* @generated from rpc camino.CaminoService.DisconnectEdge
*/
disconnectEdge: {
methodKind: "unary";
input: typeof DisconnectEdgeRequestSchema;
output: typeof DisconnectEdgeResponseSchema;
};
/**
* @generated from rpc camino.CaminoService.ListOps
*/
listOps: {
methodKind: "unary";
input: typeof ListOpsRequestSchema;
output: typeof ListOpsResponseSchema;
};
/**
* @generated from rpc camino.CaminoService.WatchObject
*/
watchObject: {
methodKind: "server_streaming";
input: typeof WatchObjectRequestSchema;
output: typeof WatchObjectEventSchema;
};
}>;
//# sourceMappingURL=api_pb.d.ts.map
+1
View File
File diff suppressed because one or more lines are too long
+188
View File
File diff suppressed because one or more lines are too long
+228
View File
@@ -0,0 +1,228 @@
import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file camino/schema.proto.
*/
export declare const file_camino_schema: GenFile;
/**
* @generated from message camino.AtomDefinition
*/
export type AtomDefinition = Message<"camino.AtomDefinition"> & {
/**
* @generated from field: string atom_id = 1;
*/
atomId: string;
/**
* @generated from field: string display_name = 2;
*/
displayName: string;
};
/**
* Describes the message camino.AtomDefinition.
* Use `create(AtomDefinitionSchema)` to create a new message.
*/
export declare const AtomDefinitionSchema: GenMessage<AtomDefinition>;
/**
* @generated from message camino.AtomConformance
*/
export type AtomConformance = Message<"camino.AtomConformance"> & {
/**
* @generated from field: string atom_id = 1;
*/
atomId: string;
/**
* @generated from field: string interface_revision_id = 2;
*/
interfaceRevisionId: string;
};
/**
* Describes the message camino.AtomConformance.
* Use `create(AtomConformanceSchema)` to create a new message.
*/
export declare const AtomConformanceSchema: GenMessage<AtomConformance>;
/**
* @generated from message camino.StateAttachment
*/
export type StateAttachment = Message<"camino.StateAttachment"> & {
/**
* @generated from field: string slot_id = 1;
*/
slotId: string;
/**
* @generated from field: string attached_atom_id = 2;
*/
attachedAtomId: string;
/**
* @generated from field: string display_name = 3;
*/
displayName: string;
/**
* @generated from field: string value_type_json = 4;
*/
valueTypeJson: string;
/**
* @generated from field: string storage_policy_json = 5;
*/
storagePolicyJson: string;
/**
* @generated from field: string default_value_json = 6;
*/
defaultValueJson: string;
};
/**
* Describes the message camino.StateAttachment.
* Use `create(StateAttachmentSchema)` to create a new message.
*/
export declare const StateAttachmentSchema: GenMessage<StateAttachment>;
/**
* @generated from message camino.EndpointConstraint
*/
export type EndpointConstraint = Message<"camino.EndpointConstraint"> & {
/**
* @generated from oneof camino.EndpointConstraint.kind
*/
kind: {
/**
* @generated from field: string atom_id = 1;
*/
value: string;
case: "atomId";
} | {
/**
* @generated from field: string interface_revision_id = 2;
*/
value: string;
case: "interfaceRevisionId";
} | {
case: undefined;
value?: undefined;
};
};
/**
* Describes the message camino.EndpointConstraint.
* Use `create(EndpointConstraintSchema)` to create a new message.
*/
export declare const EndpointConstraintSchema: GenMessage<EndpointConstraint>;
/**
* @generated from message camino.EdgeEndpoint
*/
export type EdgeEndpoint = Message<"camino.EdgeEndpoint"> & {
/**
* @generated from field: string projection_id = 1;
*/
projectionId: string;
/**
* @generated from field: string display_name = 2;
*/
displayName: string;
/**
* @generated from field: camino.EndpointConstraint constraint = 3;
*/
constraint?: EndpointConstraint | undefined;
/**
* @generated from field: camino.Cardinality cardinality = 4;
*/
cardinality: Cardinality;
/**
* @generated from field: bool ordered = 5;
*/
ordered: boolean;
};
/**
* Describes the message camino.EdgeEndpoint.
* Use `create(EdgeEndpointSchema)` to create a new message.
*/
export declare const EdgeEndpointSchema: GenMessage<EdgeEndpoint>;
/**
* @generated from message camino.EdgeAttachment
*/
export type EdgeAttachment = Message<"camino.EdgeAttachment"> & {
/**
* @generated from field: string edge_type_id = 1;
*/
edgeTypeId: string;
/**
* @generated from field: string display_name = 2;
*/
displayName: string;
/**
* @generated from field: camino.EdgeEndpoint first = 3;
*/
first?: EdgeEndpoint | undefined;
/**
* @generated from field: camino.EdgeEndpoint second = 4;
*/
second?: EdgeEndpoint | undefined;
};
/**
* Describes the message camino.EdgeAttachment.
* Use `create(EdgeAttachmentSchema)` to create a new message.
*/
export declare const EdgeAttachmentSchema: GenMessage<EdgeAttachment>;
/**
* Camino consumes this persistence-only projection of a checked workspace.
* Interfaces, operation bindings, packages, and constructors stay in orch.
*
* @generated from message camino.PersistencePlan
*/
export type PersistencePlan = Message<"camino.PersistencePlan"> & {
/**
* @generated from field: string workspace_id = 1;
*/
workspaceId: string;
/**
* @generated from field: string workspace_revision_id = 2;
*/
workspaceRevisionId: string;
/**
* @generated from field: repeated camino.AtomDefinition atoms = 3;
*/
atoms: AtomDefinition[];
/**
* @generated from field: repeated camino.AtomConformance conformances = 4;
*/
conformances: AtomConformance[];
/**
* @generated from field: repeated camino.StateAttachment states = 5;
*/
states: StateAttachment[];
/**
* @generated from field: repeated camino.EdgeAttachment edges = 6;
*/
edges: EdgeAttachment[];
};
/**
* Describes the message camino.PersistencePlan.
* Use `create(PersistencePlanSchema)` to create a new message.
*/
export declare const PersistencePlanSchema: GenMessage<PersistencePlan>;
/**
* @generated from enum camino.Cardinality
*/
export declare enum Cardinality {
/**
* @generated from enum value: CARDINALITY_UNSPECIFIED = 0;
*/
CARDINALITY_UNSPECIFIED = 0,
/**
* @generated from enum value: OPTIONAL_ONE = 1;
*/
OPTIONAL_ONE = 1,
/**
* @generated from enum value: EXACTLY_ONE = 2;
*/
EXACTLY_ONE = 2,
/**
* @generated from enum value: MANY = 3;
*/
MANY = 3,
/**
* @generated from enum value: MANY_UNIQUE = 4;
*/
MANY_UNIQUE = 4
}
/**
* Describes the enum camino.Cardinality.
*/
export declare const CardinalitySchema: GenEnum<Cardinality>;
//# sourceMappingURL=schema_pb.d.ts.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"schema_pb.d.ts","sourceRoot":"","sources":["../../src/camino/schema_pb.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAEjF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,OACq3C,CAAC;AAEv5C;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,uBAAuB,CAAC,GAAG;IAC9D;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,cAAc,CACxB,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,wBAAwB,CAAC,GAAG;IAChE;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,UAAU,CAAC,eAAe,CAC1B,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,wBAAwB,CAAC,GAAG;IAChE;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,UAAU,CAAC,eAAe,CAC1B,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,2BAA2B,CAAC,GAAG;IACtE;;OAEG;IACH,IAAI,EAAE;QACJ;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,QAAQ,CAAC;KAChB,GAAG;QACF;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,qBAAqB,CAAC;KAC7B,GAAG;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC;CAC5C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,UAAU,CAAC,kBAAkB,CAChC,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,qBAAqB,CAAC,GAAG;IAC1D;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAE5C;;OAEG;IACH,WAAW,EAAE,WAAW,CAAC;IAEzB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,UAAU,CAAC,YAAY,CACpB,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,uBAAuB,CAAC,GAAG;IAC9D;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAEjC;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CACnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,cAAc,CACxB,CAAC;AAErC;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,wBAAwB,CAAC,GAAG;IAChE;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,KAAK,EAAE,cAAc,EAAE,CAAC;IAExB;;OAEG;IACH,YAAY,EAAE,eAAe,EAAE,CAAC;IAEhC;;OAEG;IACH,MAAM,EAAE,eAAe,EAAE,CAAC;IAE1B;;OAEG;IACH,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,UAAU,CAAC,eAAe,CAC1B,CAAC;AAErC;;GAEG;AACH,oBAAY,WAAW;IACrB;;OAEG;IACH,uBAAuB,IAAI;IAE3B;;OAEG;IACH,YAAY,IAAI;IAEhB;;OAEG;IACH,WAAW,IAAI;IAEf;;OAEG;IACH,IAAI,IAAI;IAER;;OAEG;IACH,WAAW,IAAI;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,WAAW,CAClB,CAAC"}
+73
View File
@@ -0,0 +1,73 @@
// @generated by protoc-gen-es v2.12.1 with parameter "target=ts,import_extension=js"
// @generated from file camino/schema.proto (package camino, syntax proto3)
/* eslint-disable */
import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
/**
* Describes the file camino/schema.proto.
*/
export const file_camino_schema = /*@__PURE__*/ fileDesc("ChNjYW1pbm8vc2NoZW1hLnByb3RvEgZjYW1pbm8iNwoOQXRvbURlZmluaXRpb24SDwoHYXRvbV9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkiQQoPQXRvbUNvbmZvcm1hbmNlEg8KB2F0b21faWQYASABKAkSHQoVaW50ZXJmYWNlX3JldmlzaW9uX2lkGAIgASgJIqQBCg9TdGF0ZUF0dGFjaG1lbnQSDwoHc2xvdF9pZBgBIAEoCRIYChBhdHRhY2hlZF9hdG9tX2lkGAIgASgJEhQKDGRpc3BsYXlfbmFtZRgDIAEoCRIXCg92YWx1ZV90eXBlX2pzb24YBCABKAkSGwoTc3RvcmFnZV9wb2xpY3lfanNvbhgFIAEoCRIaChJkZWZhdWx0X3ZhbHVlX2pzb24YBiABKAkiUAoSRW5kcG9pbnRDb25zdHJhaW50EhEKB2F0b21faWQYASABKAlIABIfChVpbnRlcmZhY2VfcmV2aXNpb25faWQYAiABKAlIAEIGCgRraW5kIqYBCgxFZGdlRW5kcG9pbnQSFQoNcHJvamVjdGlvbl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSLgoKY29uc3RyYWludBgDIAEoCzIaLmNhbWluby5FbmRwb2ludENvbnN0cmFpbnQSKAoLY2FyZGluYWxpdHkYBCABKA4yEy5jYW1pbm8uQ2FyZGluYWxpdHkSDwoHb3JkZXJlZBgFIAEoCCKHAQoORWRnZUF0dGFjaG1lbnQSFAoMZWRnZV90eXBlX2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIjCgVmaXJzdBgDIAEoCzIULmNhbWluby5FZGdlRW5kcG9pbnQSJAoGc2Vjb25kGAQgASgLMhQuY2FtaW5vLkVkZ2VFbmRwb2ludCLsAQoPUGVyc2lzdGVuY2VQbGFuEhQKDHdvcmtzcGFjZV9pZBgBIAEoCRIdChV3b3Jrc3BhY2VfcmV2aXNpb25faWQYAiABKAkSJQoFYXRvbXMYAyADKAsyFi5jYW1pbm8uQXRvbURlZmluaXRpb24SLQoMY29uZm9ybWFuY2VzGAQgAygLMhcuY2FtaW5vLkF0b21Db25mb3JtYW5jZRInCgZzdGF0ZXMYBSADKAsyFy5jYW1pbm8uU3RhdGVBdHRhY2htZW50EiUKBWVkZ2VzGAYgAygLMhYuY2FtaW5vLkVkZ2VBdHRhY2htZW50KmgKC0NhcmRpbmFsaXR5EhsKF0NBUkRJTkFMSVRZX1VOU1BFQ0lGSUVEEAASEAoMT1BUSU9OQUxfT05FEAESDwoLRVhBQ1RMWV9PTkUQAhIICgRNQU5ZEAMSDwoLTUFOWV9VTklRVUUQBGIGcHJvdG8z");
/**
* Describes the message camino.AtomDefinition.
* Use `create(AtomDefinitionSchema)` to create a new message.
*/
export const AtomDefinitionSchema = /*@__PURE__*/ messageDesc(file_camino_schema, 0);
/**
* Describes the message camino.AtomConformance.
* Use `create(AtomConformanceSchema)` to create a new message.
*/
export const AtomConformanceSchema = /*@__PURE__*/ messageDesc(file_camino_schema, 1);
/**
* Describes the message camino.StateAttachment.
* Use `create(StateAttachmentSchema)` to create a new message.
*/
export const StateAttachmentSchema = /*@__PURE__*/ messageDesc(file_camino_schema, 2);
/**
* Describes the message camino.EndpointConstraint.
* Use `create(EndpointConstraintSchema)` to create a new message.
*/
export const EndpointConstraintSchema = /*@__PURE__*/ messageDesc(file_camino_schema, 3);
/**
* Describes the message camino.EdgeEndpoint.
* Use `create(EdgeEndpointSchema)` to create a new message.
*/
export const EdgeEndpointSchema = /*@__PURE__*/ messageDesc(file_camino_schema, 4);
/**
* Describes the message camino.EdgeAttachment.
* Use `create(EdgeAttachmentSchema)` to create a new message.
*/
export const EdgeAttachmentSchema = /*@__PURE__*/ messageDesc(file_camino_schema, 5);
/**
* Describes the message camino.PersistencePlan.
* Use `create(PersistencePlanSchema)` to create a new message.
*/
export const PersistencePlanSchema = /*@__PURE__*/ messageDesc(file_camino_schema, 6);
/**
* @generated from enum camino.Cardinality
*/
export var Cardinality;
(function (Cardinality) {
/**
* @generated from enum value: CARDINALITY_UNSPECIFIED = 0;
*/
Cardinality[Cardinality["CARDINALITY_UNSPECIFIED"] = 0] = "CARDINALITY_UNSPECIFIED";
/**
* @generated from enum value: OPTIONAL_ONE = 1;
*/
Cardinality[Cardinality["OPTIONAL_ONE"] = 1] = "OPTIONAL_ONE";
/**
* @generated from enum value: EXACTLY_ONE = 2;
*/
Cardinality[Cardinality["EXACTLY_ONE"] = 2] = "EXACTLY_ONE";
/**
* @generated from enum value: MANY = 3;
*/
Cardinality[Cardinality["MANY"] = 3] = "MANY";
/**
* @generated from enum value: MANY_UNIQUE = 4;
*/
Cardinality[Cardinality["MANY_UNIQUE"] = 4] = "MANY_UNIQUE";
})(Cardinality || (Cardinality = {}));
/**
* Describes the enum camino.Cardinality.
*/
export const CardinalitySchema = /*@__PURE__*/ enumDesc(file_camino_schema, 0);
+82
View File
@@ -0,0 +1,82 @@
import http from "node:http";
import { type Client, type ConnectRouter } from "@connectrpc/connect";
import { CaminoService, type Value } from "./camino/api_pb.js";
import { OrchestratorRuntime } from "./quixos/orch_pb.js";
export type CaminoClient = Client<typeof CaminoService>;
export type OrchClient = Client<typeof OrchestratorRuntime>;
export type RuntimeDependency = {
kind: "state";
objectId: string;
attachmentId: string;
} | {
kind: "edge";
objectId: string;
attachmentId: string;
projectionId: string;
};
export declare const objectRef: (objectId: string) => {
$quixosRef: string;
};
export declare const liveValue: (value: Value) => {
$quixosValue: Value;
};
export declare const jsToProtoValue: (value: unknown) => Value;
export declare const protoValueToJs: (value: Value | undefined) => unknown;
export declare const protoFieldsToJs: (fields: Record<string, Value>) => {
[k: string]: unknown;
};
export type StatePort<T = unknown> = {
slotId: string;
get(): Promise<T>;
live(): Promise<ReturnType<typeof liveValue>>;
set(value: T): Promise<void>;
};
export type EdgePort = {
edgeTypeId: string;
projectionId: string;
resolve(): Promise<string[]>;
connect(targetObjectId: string): Promise<void>;
};
export type InterfacePort = {
interfaceRevisionId: string;
invoke(operationId: string, input?: Record<string, unknown>): Promise<unknown>;
};
export type ConstructorPort = {
atomId: string;
construct(input?: Record<string, unknown>): Promise<string>;
};
export type RuntimePort = StatePort | EdgePort | InterfacePort | ConstructorPort;
export type RuntimeContext = {
objectId: string;
input: Record<string, unknown>;
inputProto: Record<string, Value>;
ports: ReadonlyMap<string, RuntimePort>;
state<T = unknown>(portId: string): StatePort<T>;
edge(portId: string): EdgePort;
interface(portId: string): InterfacePort;
constructor(portId: string): ConstructorPort;
};
export declare const createRuntimeContext: (camino: CaminoClient, orch: OrchClient, request: RuntimeRequest) => RuntimeContext;
export type RuntimeHandler = (context: RuntimeContext) => unknown | Promise<unknown>;
export type DerivedHandler = {
kind: "derived";
get: RuntimeHandler;
};
export declare const derived: (get: RuntimeHandler) => DerivedHandler;
export declare const createPackageRuntimeRoutes: (config: {
packageRevisionId: string;
exports: Record<string, RuntimeHandler | DerivedHandler>;
caminoUrl?: string;
orchUrl?: string;
}) => (router: ConnectRouter) => ConnectRouter;
export declare const servePackageRuntime: (config: {
packageRevisionId: string;
exports: Record<string, RuntimeHandler | DerivedHandler>;
}) => http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
type RuntimeRequest = {
objectId: string;
input: Record<string, Value>;
dependencies: import("./quixos/refs_pb.js").InjectedDependency[];
};
export {};
//# sourceMappingURL=index.d.ts.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,OAAO,EAAoC,KAAK,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAExG,OAAO,EACL,aAAa,EAOb,KAAK,KAAK,EACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAU1D,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAE5D,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AA+BnF,eAAO,MAAM,SAAS,aAAc,MAAM;IAAQ,UAAU;CAAa,CAAC;AAC1E,eAAO,MAAM,SAAS,UAAW,KAAK;IAAQ,YAAY;CAAU,CAAC;AAErE,eAAO,MAAM,cAAc,UAAW,OAAO,KAAG,KAoC/C,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,KAAK,GAAG,SAAS,KAAG,OAoBzD,CAAC;AAEF,eAAO,MAAM,eAAe,WAAY,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;;CACmC,CAAC;AAEjG,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,OAAO,IAAI;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAClB,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC;IAC9C,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7B,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChF,CAAC;AACF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7D,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,eAAe,CAAC;AAEjF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACxC,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC/B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IACzC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC;CAC9C,CAAC;AAOF,eAAO,MAAM,oBAAoB,WACvB,YAAY,QACd,UAAU,WACP,cAAc,KACtB,cA6FF,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AACrF,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,cAAc,CAAA;CAAE,CAAC;AACtE,eAAO,MAAM,OAAO,QAAS,cAAc,KAAG,cAA4C,CAAC;AAyB3F,eAAO,MAAM,0BAA0B,WAAY;IACjD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAAC,CAAC;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,cAsBiB,aAAa,kBA0I9B,CAAC;AAEF,eAAO,MAAM,mBAAmB,WAAY;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAAC,CAAC;CAC1D,yEAaA,CAAC;AACF,KAAK,cAAc,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7B,YAAY,EAAE,OAAO,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;CAClE,CAAC"}
+374
View File
@@ -0,0 +1,374 @@
import http from "node:http";
import { AsyncLocalStorage } from "node:async_hooks";
import { randomUUID } from "node:crypto";
import { create, equals } from "@bufbuild/protobuf";
import { Code, ConnectError, createClient } from "@connectrpc/connect";
import { connectNodeAdapter, createConnectTransport } from "@connectrpc/connect-node";
import { CaminoService, CrdtValueSchema, ListValueSchema, NullValueSchema, ObjectValueSchema, RefValueSchema, ValueSchema, } from "./camino/api_pb.js";
import { OrchestratorRuntime } from "./quixos/orch_pb.js";
import { DerivedDependencySchema, HandshakeResponseSchema, InvokeResponseSchema, PackageRuntime, WatchEventSchema, } from "./quixos/runtime_pb.js";
import { CapabilityRefSchema } from "./quixos/refs_pb.js";
const dependencyKey = (dependency) => `${dependency.kind}:${dependency.objectId}:${dependency.attachmentId}:${dependency.kind === "edge" ? dependency.projectionId : ""}`;
const dependencyScope = new AsyncLocalStorage();
const recordDependency = async (dependency) => {
const scope = dependencyScope.getStore();
if (!scope)
return;
const key = `${dependency.kind}:${dependency.objectId}:${dependency.attachmentId}:${dependency.kind === "edge" ? dependency.projectionId : ""}`;
scope.dependencies.set(key, dependency);
await scope.observe?.(dependency);
};
const bytesToBase64 = (value) => Buffer.from(value).toString("base64");
const base64ToBytes = (value) => Buffer.from(value, "base64");
const isRecord = (value) => Boolean(value) && typeof value === "object" && !Array.isArray(value);
const isWrappedValue = (value) => isRecord(value) && "$quixosValue" in value &&
isRecord(value.$quixosValue) && value.$quixosValue.$typeName === "camino.Value";
export const objectRef = (objectId) => ({ $quixosRef: objectId });
export const liveValue = (value) => ({ $quixosValue: value });
export const jsToProtoValue = (value) => {
if (isWrappedValue(value))
return value.$quixosValue;
if (value === null || value === undefined) {
return create(ValueSchema, { kind: { case: "nullValue", value: create(NullValueSchema, {}) } });
}
if (typeof value === "boolean")
return create(ValueSchema, { kind: { case: "boolValue", value } });
if (typeof value === "number")
return create(ValueSchema, { kind: { case: "numberValue", value } });
if (typeof value === "bigint")
return create(ValueSchema, { kind: { case: "integerValue", value: String(value) } });
if (typeof value === "string")
return create(ValueSchema, { kind: { case: "stringValue", value } });
if (value instanceof Uint8Array)
return create(ValueSchema, { kind: { case: "bytesValue", value } });
if (Array.isArray(value)) {
return create(ValueSchema, {
kind: { case: "listValue", value: create(ListValueSchema, { values: value.map(jsToProtoValue) }) },
});
}
if (isRecord(value) && typeof value.$quixosRef === "string") {
return create(ValueSchema, {
kind: { case: "refValue", value: create(RefValueSchema, { objectId: value.$quixosRef }) },
});
}
if (isRecord(value) && typeof value.$quixosCrdtType === "string" &&
typeof value.$quixosCrdtPayload === "string") {
return create(ValueSchema, {
kind: { case: "crdtValue", value: create(CrdtValueSchema, {
type: value.$quixosCrdtType,
encoding: typeof value.$quixosCrdtEncoding === "string" ? value.$quixosCrdtEncoding : "base64",
payload: base64ToBytes(value.$quixosCrdtPayload),
}) },
});
}
if (!isRecord(value))
throw new Error(`Unsupported runtime value ${typeof value}`);
return create(ValueSchema, {
kind: { case: "objectValue", value: create(ObjectValueSchema, {
fields: Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, jsToProtoValue(entry)])),
}) },
});
};
export const protoValueToJs = (value) => {
switch (value?.kind.case) {
case "nullValue":
case undefined: return null;
case "boolValue":
case "numberValue":
case "stringValue":
case "integerValue": return value.kind.value;
case "bytesValue": return bytesToBase64(value.kind.value);
case "refValue": return value.kind.value.objectId;
case "listValue": return value.kind.value.values.map(protoValueToJs);
case "objectValue": return Object.fromEntries(Object.entries(value.kind.value.fields).map(([key, entry]) => [key, protoValueToJs(entry)]));
case "crdtValue": return {
$quixosCrdtType: value.kind.value.type,
$quixosCrdtEncoding: value.kind.value.encoding,
$quixosCrdtPayload: bytesToBase64(value.kind.value.payload),
};
}
};
export const protoFieldsToJs = (fields) => Object.fromEntries(Object.entries(fields).map(([key, value]) => [key, protoValueToJs(value)]));
const targetForEdge = (edge, projectionId) => edge.firstProjectionId === projectionId ? edge.secondObjectId : edge.firstObjectId;
export const createRuntimeContext = (camino, orch, request) => {
const ports = new Map();
for (const dependency of request.dependencies) {
switch (dependency.binding.case) {
case "stateSlotId": {
const slotId = dependency.binding.value;
const dependencyObjectId = dependency.objectId || request.objectId;
const state = {
slotId,
async get() {
await recordDependency({ kind: "state", objectId: dependencyObjectId, attachmentId: slotId });
return protoValueToJs((await camino.readState({ objectId: dependencyObjectId, slotId })).value);
},
async live() {
await recordDependency({ kind: "state", objectId: dependencyObjectId, attachmentId: slotId });
const value = await camino.readState({ objectId: dependencyObjectId, slotId });
if (!value.value)
throw new Error(`State ${slotId} returned no value`);
return liveValue(value.value);
},
async set(value) {
await camino.writeState({ objectId: dependencyObjectId, slotId, value: jsToProtoValue(value) });
},
};
ports.set(dependency.portId, state);
break;
}
case "edge": {
const { edgeTypeId, projectionId } = dependency.binding.value;
const dependencyObjectId = dependency.objectId || request.objectId;
const edge = {
edgeTypeId,
projectionId,
async resolve() {
await recordDependency({ kind: "edge", objectId: dependencyObjectId, attachmentId: edgeTypeId, projectionId });
const result = await camino.resolveEdge({ objectId: dependencyObjectId, edgeTypeId, projectionId });
return result.edges.map((entry) => targetForEdge(entry, projectionId));
},
async connect(targetObjectId) {
await camino.connectEdge({ objectId: dependencyObjectId, edgeTypeId, projectionId, targetObjectId });
},
};
ports.set(dependency.portId, edge);
break;
}
case "receiverInterfaceRevisionId": {
const interfaceRevisionId = dependency.binding.value;
const capability = {
interfaceRevisionId,
async invoke(operationId, input = {}) {
const response = await orch.invokeCapability({
capability: create(CapabilityRefSchema, { interfaceRevisionId, operationId }),
objectId: request.objectId,
input: Object.fromEntries(Object.entries(input).map(([key, value]) => [key, jsToProtoValue(value)])),
});
if (!response.ok)
throw new Error(response.error || `Capability ${operationId} failed`);
return protoValueToJs(response.result);
},
};
ports.set(dependency.portId, capability);
break;
}
case "constructorAtomId": {
const atomId = dependency.binding.value;
const constructor = {
atomId,
async construct(input = {}) {
const response = await orch.constructObject({
atomId,
input: Object.fromEntries(Object.entries(input).map(([key, value]) => [key, jsToProtoValue(value)])),
});
if (!response.object)
throw new Error(`Constructor ${atomId} returned no object`);
return response.object.id;
},
};
ports.set(dependency.portId, constructor);
}
}
}
const requirePort = (portId, kind) => {
const port = ports.get(portId);
if (!port || !(kind in port))
throw new Error(`Missing ${kind} dependency port ${portId}`);
return port;
};
return {
objectId: request.objectId,
input: protoFieldsToJs(request.input),
inputProto: request.input,
ports,
state: (portId) => requirePort(portId, "slotId"),
edge: (portId) => requirePort(portId, "edgeTypeId"),
interface: (portId) => requirePort(portId, "interfaceRevisionId"),
constructor: (portId) => requirePort(portId, "atomId"),
};
};
export const derived = (get) => ({ kind: "derived", get });
const isDerived = (handler) => typeof handler === "object" && handler.kind === "derived";
const evaluate = async (handler, context, observe) => {
const dependencies = new Map();
const result = await dependencyScope.run({ dependencies, observe }, () => isDerived(handler) ? handler.get(context) : handler(context));
return { value: jsToProtoValue(result), dependencies: [...dependencies.values()] };
};
const protoDependencies = (dependencies) => dependencies.map((entry) => create(DerivedDependencySchema, {
kind: entry.kind,
objectId: entry.objectId,
attachmentId: entry.attachmentId,
projectionId: entry.kind === "edge" ? entry.projectionId : "",
}));
export const createPackageRuntimeRoutes = (config) => {
const headers = {};
if (process.env.CAMINO_RUNTIME_AUTH_TOKEN) {
headers["x-camino-runtime-token"] = process.env.CAMINO_RUNTIME_AUTH_TOKEN;
}
else if (process.env.CAMINO_RUNTIME_AUTH_REQUIRED === "1") {
throw new Error("CAMINO_RUNTIME_AUTH_TOKEN is required");
}
const camino = createClient(CaminoService, createConnectTransport({
baseUrl: config.caminoUrl ?? process.env.CAMINO_URL ?? "http://127.0.0.1:7310",
httpVersion: "1.1",
interceptors: headers["x-camino-runtime-token"] ? [
(next) => async (request) => {
request.header.set("x-camino-runtime-token", headers["x-camino-runtime-token"]);
return await next(request);
},
] : [],
}));
const orch = createClient(OrchestratorRuntime, createConnectTransport({
baseUrl: config.orchUrl ?? process.env.QUIXOS_ORCH_URL ?? "http://127.0.0.1:7311",
httpVersion: "1.1",
}));
return (router) => router.service(PackageRuntime, {
handshake: () => create(HandshakeResponseSchema, {
packageRevisionId: config.packageRevisionId,
runtimeProtocolVersion: "quixos-capabilities-v1",
exportIds: Object.keys(config.exports),
}),
invoke: async (request) => {
const exportId = request.export?.exportId;
const handler = exportId ? config.exports[exportId] : undefined;
if (!handler)
throw new ConnectError(`Unknown export ${exportId ?? ""}`, Code.NotFound);
try {
const result = await evaluate(handler, createRuntimeContext(camino, orch, request));
return create(InvokeResponseSchema, { ok: true, result: result.value });
}
catch (error) {
return create(InvokeResponseSchema, {
ok: false,
error: error instanceof Error ? error.message : String(error),
});
}
},
watch: async function* (request, context) {
const exportId = request.export?.exportId;
const handler = exportId ? config.exports[exportId] : undefined;
if (!handler || !isDerived(handler)) {
throw new ConnectError(`Export ${exportId ?? ""} is not derived`, Code.FailedPrecondition);
}
const watchId = `watch:${randomUUID()}`;
const runtimeContext = createRuntimeContext(camino, orch, request);
const subscriptions = new Map();
const establishing = new Map();
const ensureSubscription = async (dependency) => {
const key = dependencyKey(dependency);
if (subscriptions.has(key))
return;
const pending = establishing.get(key);
if (pending)
return await pending;
const establish = (async () => {
const controller = new AbortController();
const stream = camino.watchObject({ objectId: dependency.objectId, includeSnapshot: true }, { signal: controller.signal })[Symbol.asyncIterator]();
try {
// Camino subscribes before producing the snapshot, so once this
// resolves the following state/edge read cannot race the stream.
const snapshot = await stream.next();
if (snapshot.done)
throw new Error(`Dependency stream ${key} ended during setup`);
const waitNext = () => stream.next().then((result) => ({ key, done: Boolean(result.done) }), (error) => ({ key, done: true, error }));
const subscription = {
dependency,
controller,
waitNext,
next: Promise.resolve({ key, done: false }),
};
subscription.next = waitNext();
subscriptions.set(key, subscription);
}
catch (error) {
controller.abort();
throw error;
}
})();
establishing.set(key, establish);
try {
await establish;
}
finally {
establishing.delete(key);
}
};
const abortAll = () => {
for (const subscription of subscriptions.values()) {
subscription.controller.abort();
}
};
context.signal.addEventListener("abort", abortAll, { once: true });
let current = await evaluate(handler, runtimeContext, ensureSubscription);
yield create(WatchEventSchema, {
watchId,
value: current.value,
dependencies: protoDependencies(current.dependencies),
initial: true,
});
const abort = new Promise((resolve) => {
if (context.signal.aborted)
resolve("abort");
else
context.signal.addEventListener("abort", () => resolve("abort"), { once: true });
});
try {
while (!context.signal.aborted) {
if (subscriptions.size === 0) {
await abort;
break;
}
const outcome = await Promise.race([
...[...subscriptions.values()].map((entry) => entry.next),
abort,
]);
if (outcome === "abort")
break;
const subscription = subscriptions.get(outcome.key);
if (!subscription)
continue;
if (outcome.error)
throw outcome.error;
if (outcome.done)
throw new Error(`Dependency stream ${outcome.key} ended unexpectedly`);
subscription.next = subscription.waitNext();
const updated = await evaluate(handler, runtimeContext, ensureSubscription);
const active = new Set(updated.dependencies.map(dependencyKey));
for (const [key, entry] of subscriptions) {
if (!active.has(key)) {
entry.controller.abort();
subscriptions.delete(key);
}
}
if (!equals(ValueSchema, current.value, updated.value)) {
yield create(WatchEventSchema, {
watchId,
value: updated.value,
dependencies: protoDependencies(updated.dependencies),
});
}
current = updated;
}
}
finally {
context.signal.removeEventListener("abort", abortAll);
abortAll();
}
},
});
};
export const servePackageRuntime = (config) => {
const host = process.env.QUIXOS_RUNTIME_HOST ?? "127.0.0.1";
const port = Number(process.env.QUIXOS_RUNTIME_PORT ?? "0");
const handler = connectNodeAdapter({ routes: createPackageRuntimeRoutes(config) });
const server = http.createServer((request, response) => void handler(request, response));
server.listen(port, host, () => console.log(`${config.packageRevisionId} listening on ${host}:${port}`));
const shutdown = () => {
server.close(() => process.exit(0));
server.closeAllConnections();
};
process.on("SIGTERM", shutdown);
process.on("SIGINT", shutdown);
return server;
};
+518
View File
@@ -0,0 +1,518 @@
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
import type { CaminoObject, Value } from "../camino/api_pb.js";
import type { PackageDescriptor } from "./package_pb.js";
import type { CapabilityRef, PackageExportRef } from "./refs_pb.js";
import type { DerivedDependency } from "./runtime_pb.js";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file quixos/orch.proto.
*/
export declare const file_quixos_orch: GenFile;
/**
* @generated from message quixos.orch.ConstructObjectRequest
*/
export type ConstructObjectRequest = Message<"quixos.orch.ConstructObjectRequest"> & {
/**
* @generated from field: string atom_id = 1;
*/
atomId: string;
/**
* @generated from field: map<string, camino.Value> input = 2;
*/
input: {
[key: string]: Value;
};
};
/**
* Describes the message quixos.orch.ConstructObjectRequest.
* Use `create(ConstructObjectRequestSchema)` to create a new message.
*/
export declare const ConstructObjectRequestSchema: GenMessage<ConstructObjectRequest>;
/**
* @generated from message quixos.orch.ConstructObjectResponse
*/
export type ConstructObjectResponse = Message<"quixos.orch.ConstructObjectResponse"> & {
/**
* @generated from field: camino.CaminoObject object = 1;
*/
object?: CaminoObject | undefined;
};
/**
* Describes the message quixos.orch.ConstructObjectResponse.
* Use `create(ConstructObjectResponseSchema)` to create a new message.
*/
export declare const ConstructObjectResponseSchema: GenMessage<ConstructObjectResponse>;
/**
* @generated from message quixos.orch.ResolveOrConstructRelatedObjectRequest
*/
export type ResolveOrConstructRelatedObjectRequest = Message<"quixos.orch.ResolveOrConstructRelatedObjectRequest"> & {
/**
* @generated from field: string object_id = 1;
*/
objectId: string;
/**
* @generated from field: string interface_revision_id = 2;
*/
interfaceRevisionId: string;
/**
* @generated from field: string member_id = 3;
*/
memberId: string;
};
/**
* Describes the message quixos.orch.ResolveOrConstructRelatedObjectRequest.
* Use `create(ResolveOrConstructRelatedObjectRequestSchema)` to create a new message.
*/
export declare const ResolveOrConstructRelatedObjectRequestSchema: GenMessage<ResolveOrConstructRelatedObjectRequest>;
/**
* @generated from message quixos.orch.ResolveOrConstructRelatedObjectResponse
*/
export type ResolveOrConstructRelatedObjectResponse = Message<"quixos.orch.ResolveOrConstructRelatedObjectResponse"> & {
/**
* @generated from field: camino.CaminoObject object = 1;
*/
object?: CaminoObject | undefined;
/**
* @generated from field: bool constructed = 2;
*/
constructed: boolean;
};
/**
* Describes the message quixos.orch.ResolveOrConstructRelatedObjectResponse.
* Use `create(ResolveOrConstructRelatedObjectResponseSchema)` to create a new message.
*/
export declare const ResolveOrConstructRelatedObjectResponseSchema: GenMessage<ResolveOrConstructRelatedObjectResponse>;
/**
* @generated from message quixos.orch.InvokeCapabilityRequest
*/
export type InvokeCapabilityRequest = Message<"quixos.orch.InvokeCapabilityRequest"> & {
/**
* @generated from field: quixos.CapabilityRef capability = 1;
*/
capability?: CapabilityRef | undefined;
/**
* @generated from field: string object_id = 2;
*/
objectId: string;
/**
* @generated from field: map<string, camino.Value> input = 3;
*/
input: {
[key: string]: Value;
};
};
/**
* Describes the message quixos.orch.InvokeCapabilityRequest.
* Use `create(InvokeCapabilityRequestSchema)` to create a new message.
*/
export declare const InvokeCapabilityRequestSchema: GenMessage<InvokeCapabilityRequest>;
/**
* @generated from message quixos.orch.InvokeCapabilityResponse
*/
export type InvokeCapabilityResponse = Message<"quixos.orch.InvokeCapabilityResponse"> & {
/**
* @generated from field: string invocation_id = 1;
*/
invocationId: string;
/**
* @generated from field: quixos.orch.Activation activation = 2;
*/
activation?: Activation | undefined;
/**
* @generated from field: bool ok = 3;
*/
ok: boolean;
/**
* @generated from field: camino.Value result = 4;
*/
result?: Value | undefined;
/**
* @generated from field: string error = 5;
*/
error: string;
};
/**
* Describes the message quixos.orch.InvokeCapabilityResponse.
* Use `create(InvokeCapabilityResponseSchema)` to create a new message.
*/
export declare const InvokeCapabilityResponseSchema: GenMessage<InvokeCapabilityResponse>;
/**
* @generated from message quixos.orch.WatchCapabilityRequest
*/
export type WatchCapabilityRequest = Message<"quixos.orch.WatchCapabilityRequest"> & {
/**
* @generated from field: quixos.CapabilityRef capability = 1;
*/
capability?: CapabilityRef | undefined;
/**
* @generated from field: string object_id = 2;
*/
objectId: string;
/**
* @generated from field: map<string, camino.Value> input = 3;
*/
input: {
[key: string]: Value;
};
};
/**
* Describes the message quixos.orch.WatchCapabilityRequest.
* Use `create(WatchCapabilityRequestSchema)` to create a new message.
*/
export declare const WatchCapabilityRequestSchema: GenMessage<WatchCapabilityRequest>;
/**
* @generated from message quixos.orch.WatchCapabilityEvent
*/
export type WatchCapabilityEvent = Message<"quixos.orch.WatchCapabilityEvent"> & {
/**
* @generated from field: string invocation_id = 1;
*/
invocationId: string;
/**
* @generated from field: quixos.orch.Activation activation = 2;
*/
activation?: Activation | undefined;
/**
* @generated from field: string watch_id = 3;
*/
watchId: string;
/**
* @generated from field: camino.Value value = 4;
*/
value?: Value | undefined;
/**
* @generated from field: repeated quixos.runtime.DerivedDependency dependencies = 5;
*/
dependencies: DerivedDependency[];
/**
* @generated from field: string error = 6;
*/
error: string;
/**
* @generated from field: bool initial = 7;
*/
initial: boolean;
};
/**
* Describes the message quixos.orch.WatchCapabilityEvent.
* Use `create(WatchCapabilityEventSchema)` to create a new message.
*/
export declare const WatchCapabilityEventSchema: GenMessage<WatchCapabilityEvent>;
/**
* @generated from message quixos.orch.GetWorkspaceRequest
*/
export type GetWorkspaceRequest = Message<"quixos.orch.GetWorkspaceRequest"> & {};
/**
* Describes the message quixos.orch.GetWorkspaceRequest.
* Use `create(GetWorkspaceRequestSchema)` to create a new message.
*/
export declare const GetWorkspaceRequestSchema: GenMessage<GetWorkspaceRequest>;
/**
* @generated from message quixos.orch.GetWorkspaceResponse
*/
export type GetWorkspaceResponse = Message<"quixos.orch.GetWorkspaceResponse"> & {
/**
* @generated from field: string workspace_id = 1;
*/
workspaceId: string;
/**
* @generated from field: string workspace_revision_id = 2;
*/
workspaceRevisionId: string;
/**
* @generated from field: string source_root_commit = 3;
*/
sourceRootCommit: string;
};
/**
* Describes the message quixos.orch.GetWorkspaceResponse.
* Use `create(GetWorkspaceResponseSchema)` to create a new message.
*/
export declare const GetWorkspaceResponseSchema: GenMessage<GetWorkspaceResponse>;
/**
* @generated from message quixos.orch.ListActivationsRequest
*/
export type ListActivationsRequest = Message<"quixos.orch.ListActivationsRequest"> & {};
/**
* Describes the message quixos.orch.ListActivationsRequest.
* Use `create(ListActivationsRequestSchema)` to create a new message.
*/
export declare const ListActivationsRequestSchema: GenMessage<ListActivationsRequest>;
/**
* @generated from message quixos.orch.ListPackageDescriptorsRequest
*/
export type ListPackageDescriptorsRequest = Message<"quixos.orch.ListPackageDescriptorsRequest"> & {};
/**
* Describes the message quixos.orch.ListPackageDescriptorsRequest.
* Use `create(ListPackageDescriptorsRequestSchema)` to create a new message.
*/
export declare const ListPackageDescriptorsRequestSchema: GenMessage<ListPackageDescriptorsRequest>;
/**
* @generated from message quixos.orch.ListPackageDescriptorsResponse
*/
export type ListPackageDescriptorsResponse = Message<"quixos.orch.ListPackageDescriptorsResponse"> & {
/**
* @generated from field: repeated quixos.PackageDescriptor descriptors = 1;
*/
descriptors: PackageDescriptor[];
};
/**
* Describes the message quixos.orch.ListPackageDescriptorsResponse.
* Use `create(ListPackageDescriptorsResponseSchema)` to create a new message.
*/
export declare const ListPackageDescriptorsResponseSchema: GenMessage<ListPackageDescriptorsResponse>;
/**
* @generated from message quixos.orch.ListPackageRuntimesRequest
*/
export type ListPackageRuntimesRequest = Message<"quixos.orch.ListPackageRuntimesRequest"> & {};
/**
* Describes the message quixos.orch.ListPackageRuntimesRequest.
* Use `create(ListPackageRuntimesRequestSchema)` to create a new message.
*/
export declare const ListPackageRuntimesRequestSchema: GenMessage<ListPackageRuntimesRequest>;
/**
* @generated from message quixos.orch.ListPackageRuntimesResponse
*/
export type ListPackageRuntimesResponse = Message<"quixos.orch.ListPackageRuntimesResponse"> & {
/**
* @generated from field: repeated quixos.orch.PackageRuntimeStatus runtimes = 1;
*/
runtimes: PackageRuntimeStatus[];
};
/**
* Describes the message quixos.orch.ListPackageRuntimesResponse.
* Use `create(ListPackageRuntimesResponseSchema)` to create a new message.
*/
export declare const ListPackageRuntimesResponseSchema: GenMessage<ListPackageRuntimesResponse>;
/**
* @generated from message quixos.orch.ListActivationsResponse
*/
export type ListActivationsResponse = Message<"quixos.orch.ListActivationsResponse"> & {
/**
* @generated from field: repeated quixos.orch.Activation activations = 1;
*/
activations: Activation[];
};
/**
* Describes the message quixos.orch.ListActivationsResponse.
* Use `create(ListActivationsResponseSchema)` to create a new message.
*/
export declare const ListActivationsResponseSchema: GenMessage<ListActivationsResponse>;
/**
* @generated from message quixos.orch.CloseActivationRequest
*/
export type CloseActivationRequest = Message<"quixos.orch.CloseActivationRequest"> & {
/**
* @generated from field: string activation_id = 1;
*/
activationId: string;
/**
* @generated from field: string reason = 2;
*/
reason: string;
};
/**
* Describes the message quixos.orch.CloseActivationRequest.
* Use `create(CloseActivationRequestSchema)` to create a new message.
*/
export declare const CloseActivationRequestSchema: GenMessage<CloseActivationRequest>;
/**
* @generated from message quixos.orch.CloseActivationResponse
*/
export type CloseActivationResponse = Message<"quixos.orch.CloseActivationResponse"> & {
/**
* @generated from field: quixos.orch.Activation activation = 1;
*/
activation?: Activation | undefined;
};
/**
* Describes the message quixos.orch.CloseActivationResponse.
* Use `create(CloseActivationResponseSchema)` to create a new message.
*/
export declare const CloseActivationResponseSchema: GenMessage<CloseActivationResponse>;
/**
* @generated from message quixos.orch.Activation
*/
export type Activation = Message<"quixos.orch.Activation"> & {
/**
* @generated from field: string activation_id = 1;
*/
activationId: string;
/**
* @generated from field: quixos.PackageExportRef export = 2;
*/
export?: PackageExportRef | undefined;
/**
* @generated from field: string object_id = 3;
*/
objectId: string;
/**
* @generated from field: string state = 4;
*/
state: string;
/**
* @generated from field: uint32 demand = 5;
*/
demand: number;
/**
* @generated from field: string opened_at = 6;
*/
openedAt: string;
/**
* @generated from field: string last_used_at = 7;
*/
lastUsedAt: string;
/**
* @generated from field: string idle_deadline_at = 8;
*/
idleDeadlineAt: string;
/**
* @generated from field: string closed_at = 9;
*/
closedAt: string;
/**
* @generated from field: string close_reason = 10;
*/
closeReason: string;
};
/**
* Describes the message quixos.orch.Activation.
* Use `create(ActivationSchema)` to create a new message.
*/
export declare const ActivationSchema: GenMessage<Activation>;
/**
* @generated from message quixos.orch.PackageRuntimeStatus
*/
export type PackageRuntimeStatus = Message<"quixos.orch.PackageRuntimeStatus"> & {
/**
* @generated from field: string runtime_key = 1;
*/
runtimeKey: string;
/**
* @generated from field: string package_revision_id = 2;
*/
packageRevisionId: string;
/**
* @generated from field: string source_repository = 3;
*/
sourceRepository: string;
/**
* @generated from field: string source_commit = 4;
*/
sourceCommit: string;
/**
* @generated from field: string build_target = 5;
*/
buildTarget: string;
/**
* @generated from field: string server_path = 6;
*/
serverPath: string;
/**
* @generated from field: uint32 pid = 7;
*/
pid: number;
/**
* @generated from field: string state = 8;
*/
state: string;
/**
* @generated from field: string started_at = 9;
*/
startedAt: string;
/**
* @generated from field: string last_handshake_at = 10;
*/
lastHandshakeAt: string;
/**
* @generated from field: string runtime_protocol_version = 11;
*/
runtimeProtocolVersion: string;
/**
* @generated from field: uint32 advertised_export_count = 12;
*/
advertisedExportCount: number;
};
/**
* Describes the message quixos.orch.PackageRuntimeStatus.
* Use `create(PackageRuntimeStatusSchema)` to create a new message.
*/
export declare const PackageRuntimeStatusSchema: GenMessage<PackageRuntimeStatus>;
/**
* @generated from service quixos.orch.OrchestratorRuntime
*/
export declare const OrchestratorRuntime: GenService<{
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.InvokeCapability
*/
invokeCapability: {
methodKind: "unary";
input: typeof InvokeCapabilityRequestSchema;
output: typeof InvokeCapabilityResponseSchema;
};
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.WatchCapability
*/
watchCapability: {
methodKind: "server_streaming";
input: typeof WatchCapabilityRequestSchema;
output: typeof WatchCapabilityEventSchema;
};
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.ConstructObject
*/
constructObject: {
methodKind: "unary";
input: typeof ConstructObjectRequestSchema;
output: typeof ConstructObjectResponseSchema;
};
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.ResolveOrConstructRelatedObject
*/
resolveOrConstructRelatedObject: {
methodKind: "unary";
input: typeof ResolveOrConstructRelatedObjectRequestSchema;
output: typeof ResolveOrConstructRelatedObjectResponseSchema;
};
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.GetWorkspace
*/
getWorkspace: {
methodKind: "unary";
input: typeof GetWorkspaceRequestSchema;
output: typeof GetWorkspaceResponseSchema;
};
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.ListPackageDescriptors
*/
listPackageDescriptors: {
methodKind: "unary";
input: typeof ListPackageDescriptorsRequestSchema;
output: typeof ListPackageDescriptorsResponseSchema;
};
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.ListPackageRuntimes
*/
listPackageRuntimes: {
methodKind: "unary";
input: typeof ListPackageRuntimesRequestSchema;
output: typeof ListPackageRuntimesResponseSchema;
};
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.ListActivations
*/
listActivations: {
methodKind: "unary";
input: typeof ListActivationsRequestSchema;
output: typeof ListActivationsResponseSchema;
};
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.CloseActivation
*/
closeActivation: {
methodKind: "unary";
input: typeof CloseActivationRequestSchema;
output: typeof CloseActivationResponseSchema;
};
}>;
//# sourceMappingURL=orch_pb.d.ts.map
+1
View File
File diff suppressed because one or more lines are too long
+116
View File
@@ -0,0 +1,116 @@
// @generated by protoc-gen-es v2.12.1 with parameter "target=ts,import_extension=js"
// @generated from file quixos/orch.proto (package quixos.orch, syntax proto3)
/* eslint-disable */
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
import { file_camino_api } from "../camino/api_pb.js";
import { file_quixos_package } from "./package_pb.js";
import { file_quixos_refs } from "./refs_pb.js";
import { file_quixos_runtime } from "./runtime_pb.js";
/**
* Describes the file quixos/orch.proto.
*/
export const file_quixos_orch = /*@__PURE__*/ fileDesc("ChFxdWl4b3Mvb3JjaC5wcm90bxILcXVpeG9zLm9yY2gipQEKFkNvbnN0cnVjdE9iamVjdFJlcXVlc3QSDwoHYXRvbV9pZBgBIAEoCRI9CgVpbnB1dBgCIAMoCzIuLnF1aXhvcy5vcmNoLkNvbnN0cnVjdE9iamVjdFJlcXVlc3QuSW5wdXRFbnRyeRo7CgpJbnB1dEVudHJ5EgsKA2tleRgBIAEoCRIcCgV2YWx1ZRgCIAEoCzINLmNhbWluby5WYWx1ZToCOAEiPwoXQ29uc3RydWN0T2JqZWN0UmVzcG9uc2USJAoGb2JqZWN0GAEgASgLMhQuY2FtaW5vLkNhbWlub09iamVjdCJtCiZSZXNvbHZlT3JDb25zdHJ1Y3RSZWxhdGVkT2JqZWN0UmVxdWVzdBIRCglvYmplY3RfaWQYASABKAkSHQoVaW50ZXJmYWNlX3JldmlzaW9uX2lkGAIgASgJEhEKCW1lbWJlcl9pZBgDIAEoCSJkCidSZXNvbHZlT3JDb25zdHJ1Y3RSZWxhdGVkT2JqZWN0UmVzcG9uc2USJAoGb2JqZWN0GAEgASgLMhQuY2FtaW5vLkNhbWlub09iamVjdBITCgtjb25zdHJ1Y3RlZBgCIAEoCCLUAQoXSW52b2tlQ2FwYWJpbGl0eVJlcXVlc3QSKQoKY2FwYWJpbGl0eRgBIAEoCzIVLnF1aXhvcy5DYXBhYmlsaXR5UmVmEhEKCW9iamVjdF9pZBgCIAEoCRI+CgVpbnB1dBgDIAMoCzIvLnF1aXhvcy5vcmNoLkludm9rZUNhcGFiaWxpdHlSZXF1ZXN0LklucHV0RW50cnkaOwoKSW5wdXRFbnRyeRILCgNrZXkYASABKAkSHAoFdmFsdWUYAiABKAsyDS5jYW1pbm8uVmFsdWU6AjgBIpgBChhJbnZva2VDYXBhYmlsaXR5UmVzcG9uc2USFQoNaW52b2NhdGlvbl9pZBgBIAEoCRIrCgphY3RpdmF0aW9uGAIgASgLMhcucXVpeG9zLm9yY2guQWN0aXZhdGlvbhIKCgJvaxgDIAEoCBIdCgZyZXN1bHQYBCABKAsyDS5jYW1pbm8uVmFsdWUSDQoFZXJyb3IYBSABKAki0gEKFldhdGNoQ2FwYWJpbGl0eVJlcXVlc3QSKQoKY2FwYWJpbGl0eRgBIAEoCzIVLnF1aXhvcy5DYXBhYmlsaXR5UmVmEhEKCW9iamVjdF9pZBgCIAEoCRI9CgVpbnB1dBgDIAMoCzIuLnF1aXhvcy5vcmNoLldhdGNoQ2FwYWJpbGl0eVJlcXVlc3QuSW5wdXRFbnRyeRo7CgpJbnB1dEVudHJ5EgsKA2tleRgBIAEoCRIcCgV2YWx1ZRgCIAEoCzINLmNhbWluby5WYWx1ZToCOAEi4wEKFFdhdGNoQ2FwYWJpbGl0eUV2ZW50EhUKDWludm9jYXRpb25faWQYASABKAkSKwoKYWN0aXZhdGlvbhgCIAEoCzIXLnF1aXhvcy5vcmNoLkFjdGl2YXRpb24SEAoId2F0Y2hfaWQYAyABKAkSHAoFdmFsdWUYBCABKAsyDS5jYW1pbm8uVmFsdWUSNwoMZGVwZW5kZW5jaWVzGAUgAygLMiEucXVpeG9zLnJ1bnRpbWUuRGVyaXZlZERlcGVuZGVuY3kSDQoFZXJyb3IYBiABKAkSDwoHaW5pdGlhbBgHIAEoCCIVChNHZXRXb3Jrc3BhY2VSZXF1ZXN0ImcKFEdldFdvcmtzcGFjZVJlc3BvbnNlEhQKDHdvcmtzcGFjZV9pZBgBIAEoCRIdChV3b3Jrc3BhY2VfcmV2aXNpb25faWQYAiABKAkSGgoSc291cmNlX3Jvb3RfY29tbWl0GAMgASgJIhgKFkxpc3RBY3RpdmF0aW9uc1JlcXVlc3QiHwodTGlzdFBhY2thZ2VEZXNjcmlwdG9yc1JlcXVlc3QiUAoeTGlzdFBhY2thZ2VEZXNjcmlwdG9yc1Jlc3BvbnNlEi4KC2Rlc2NyaXB0b3JzGAEgAygLMhkucXVpeG9zLlBhY2thZ2VEZXNjcmlwdG9yIhwKGkxpc3RQYWNrYWdlUnVudGltZXNSZXF1ZXN0IlIKG0xpc3RQYWNrYWdlUnVudGltZXNSZXNwb25zZRIzCghydW50aW1lcxgBIAMoCzIhLnF1aXhvcy5vcmNoLlBhY2thZ2VSdW50aW1lU3RhdHVzIkcKF0xpc3RBY3RpdmF0aW9uc1Jlc3BvbnNlEiwKC2FjdGl2YXRpb25zGAEgAygLMhcucXVpeG9zLm9yY2guQWN0aXZhdGlvbiI/ChZDbG9zZUFjdGl2YXRpb25SZXF1ZXN0EhUKDWFjdGl2YXRpb25faWQYASABKAkSDgoGcmVhc29uGAIgASgJIkYKF0Nsb3NlQWN0aXZhdGlvblJlc3BvbnNlEisKCmFjdGl2YXRpb24YASABKAsyFy5xdWl4b3Mub3JjaC5BY3RpdmF0aW9uIusBCgpBY3RpdmF0aW9uEhUKDWFjdGl2YXRpb25faWQYASABKAkSKAoGZXhwb3J0GAIgASgLMhgucXVpeG9zLlBhY2thZ2VFeHBvcnRSZWYSEQoJb2JqZWN0X2lkGAMgASgJEg0KBXN0YXRlGAQgASgJEg4KBmRlbWFuZBgFIAEoDRIRCglvcGVuZWRfYXQYBiABKAkSFAoMbGFzdF91c2VkX2F0GAcgASgJEhgKEGlkbGVfZGVhZGxpbmVfYXQYCCABKAkSEQoJY2xvc2VkX2F0GAkgASgJEhQKDGNsb3NlX3JlYXNvbhgKIAEoCSKzAgoUUGFja2FnZVJ1bnRpbWVTdGF0dXMSEwoLcnVudGltZV9rZXkYASABKAkSGwoTcGFja2FnZV9yZXZpc2lvbl9pZBgCIAEoCRIZChFzb3VyY2VfcmVwb3NpdG9yeRgDIAEoCRIVCg1zb3VyY2VfY29tbWl0GAQgASgJEhQKDGJ1aWxkX3RhcmdldBgFIAEoCRITCgtzZXJ2ZXJfcGF0aBgGIAEoCRILCgNwaWQYByABKA0SDQoFc3RhdGUYCCABKAkSEgoKc3RhcnRlZF9hdBgJIAEoCRIZChFsYXN0X2hhbmRzaGFrZV9hdBgKIAEoCRIgChhydW50aW1lX3Byb3RvY29sX3ZlcnNpb24YCyABKAkSHwoXYWR2ZXJ0aXNlZF9leHBvcnRfY291bnQYDCABKA0yrgcKE09yY2hlc3RyYXRvclJ1bnRpbWUSXwoQSW52b2tlQ2FwYWJpbGl0eRIkLnF1aXhvcy5vcmNoLkludm9rZUNhcGFiaWxpdHlSZXF1ZXN0GiUucXVpeG9zLm9yY2guSW52b2tlQ2FwYWJpbGl0eVJlc3BvbnNlElsKD1dhdGNoQ2FwYWJpbGl0eRIjLnF1aXhvcy5vcmNoLldhdGNoQ2FwYWJpbGl0eVJlcXVlc3QaIS5xdWl4b3Mub3JjaC5XYXRjaENhcGFiaWxpdHlFdmVudDABElwKD0NvbnN0cnVjdE9iamVjdBIjLnF1aXhvcy5vcmNoLkNvbnN0cnVjdE9iamVjdFJlcXVlc3QaJC5xdWl4b3Mub3JjaC5Db25zdHJ1Y3RPYmplY3RSZXNwb25zZRKMAQofUmVzb2x2ZU9yQ29uc3RydWN0UmVsYXRlZE9iamVjdBIzLnF1aXhvcy5vcmNoLlJlc29sdmVPckNvbnN0cnVjdFJlbGF0ZWRPYmplY3RSZXF1ZXN0GjQucXVpeG9zLm9yY2guUmVzb2x2ZU9yQ29uc3RydWN0UmVsYXRlZE9iamVjdFJlc3BvbnNlElMKDEdldFdvcmtzcGFjZRIgLnF1aXhvcy5vcmNoLkdldFdvcmtzcGFjZVJlcXVlc3QaIS5xdWl4b3Mub3JjaC5HZXRXb3Jrc3BhY2VSZXNwb25zZRJxChZMaXN0UGFja2FnZURlc2NyaXB0b3JzEioucXVpeG9zLm9yY2guTGlzdFBhY2thZ2VEZXNjcmlwdG9yc1JlcXVlc3QaKy5xdWl4b3Mub3JjaC5MaXN0UGFja2FnZURlc2NyaXB0b3JzUmVzcG9uc2USaAoTTGlzdFBhY2thZ2VSdW50aW1lcxInLnF1aXhvcy5vcmNoLkxpc3RQYWNrYWdlUnVudGltZXNSZXF1ZXN0GigucXVpeG9zLm9yY2guTGlzdFBhY2thZ2VSdW50aW1lc1Jlc3BvbnNlElwKD0xpc3RBY3RpdmF0aW9ucxIjLnF1aXhvcy5vcmNoLkxpc3RBY3RpdmF0aW9uc1JlcXVlc3QaJC5xdWl4b3Mub3JjaC5MaXN0QWN0aXZhdGlvbnNSZXNwb25zZRJcCg9DbG9zZUFjdGl2YXRpb24SIy5xdWl4b3Mub3JjaC5DbG9zZUFjdGl2YXRpb25SZXF1ZXN0GiQucXVpeG9zLm9yY2guQ2xvc2VBY3RpdmF0aW9uUmVzcG9uc2ViBnByb3RvMw", [file_camino_api, file_quixos_package, file_quixos_refs, file_quixos_runtime]);
/**
* Describes the message quixos.orch.ConstructObjectRequest.
* Use `create(ConstructObjectRequestSchema)` to create a new message.
*/
export const ConstructObjectRequestSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 0);
/**
* Describes the message quixos.orch.ConstructObjectResponse.
* Use `create(ConstructObjectResponseSchema)` to create a new message.
*/
export const ConstructObjectResponseSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 1);
/**
* Describes the message quixos.orch.ResolveOrConstructRelatedObjectRequest.
* Use `create(ResolveOrConstructRelatedObjectRequestSchema)` to create a new message.
*/
export const ResolveOrConstructRelatedObjectRequestSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 2);
/**
* Describes the message quixos.orch.ResolveOrConstructRelatedObjectResponse.
* Use `create(ResolveOrConstructRelatedObjectResponseSchema)` to create a new message.
*/
export const ResolveOrConstructRelatedObjectResponseSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 3);
/**
* Describes the message quixos.orch.InvokeCapabilityRequest.
* Use `create(InvokeCapabilityRequestSchema)` to create a new message.
*/
export const InvokeCapabilityRequestSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 4);
/**
* Describes the message quixos.orch.InvokeCapabilityResponse.
* Use `create(InvokeCapabilityResponseSchema)` to create a new message.
*/
export const InvokeCapabilityResponseSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 5);
/**
* Describes the message quixos.orch.WatchCapabilityRequest.
* Use `create(WatchCapabilityRequestSchema)` to create a new message.
*/
export const WatchCapabilityRequestSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 6);
/**
* Describes the message quixos.orch.WatchCapabilityEvent.
* Use `create(WatchCapabilityEventSchema)` to create a new message.
*/
export const WatchCapabilityEventSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 7);
/**
* Describes the message quixos.orch.GetWorkspaceRequest.
* Use `create(GetWorkspaceRequestSchema)` to create a new message.
*/
export const GetWorkspaceRequestSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 8);
/**
* Describes the message quixos.orch.GetWorkspaceResponse.
* Use `create(GetWorkspaceResponseSchema)` to create a new message.
*/
export const GetWorkspaceResponseSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 9);
/**
* Describes the message quixos.orch.ListActivationsRequest.
* Use `create(ListActivationsRequestSchema)` to create a new message.
*/
export const ListActivationsRequestSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 10);
/**
* Describes the message quixos.orch.ListPackageDescriptorsRequest.
* Use `create(ListPackageDescriptorsRequestSchema)` to create a new message.
*/
export const ListPackageDescriptorsRequestSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 11);
/**
* Describes the message quixos.orch.ListPackageDescriptorsResponse.
* Use `create(ListPackageDescriptorsResponseSchema)` to create a new message.
*/
export const ListPackageDescriptorsResponseSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 12);
/**
* Describes the message quixos.orch.ListPackageRuntimesRequest.
* Use `create(ListPackageRuntimesRequestSchema)` to create a new message.
*/
export const ListPackageRuntimesRequestSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 13);
/**
* Describes the message quixos.orch.ListPackageRuntimesResponse.
* Use `create(ListPackageRuntimesResponseSchema)` to create a new message.
*/
export const ListPackageRuntimesResponseSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 14);
/**
* Describes the message quixos.orch.ListActivationsResponse.
* Use `create(ListActivationsResponseSchema)` to create a new message.
*/
export const ListActivationsResponseSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 15);
/**
* Describes the message quixos.orch.CloseActivationRequest.
* Use `create(CloseActivationRequestSchema)` to create a new message.
*/
export const CloseActivationRequestSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 16);
/**
* Describes the message quixos.orch.CloseActivationResponse.
* Use `create(CloseActivationResponseSchema)` to create a new message.
*/
export const CloseActivationResponseSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 17);
/**
* Describes the message quixos.orch.Activation.
* Use `create(ActivationSchema)` to create a new message.
*/
export const ActivationSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 18);
/**
* Describes the message quixos.orch.PackageRuntimeStatus.
* Use `create(PackageRuntimeStatusSchema)` to create a new message.
*/
export const PackageRuntimeStatusSchema = /*@__PURE__*/ messageDesc(file_quixos_orch, 19);
/**
* @generated from service quixos.orch.OrchestratorRuntime
*/
export const OrchestratorRuntime = /*@__PURE__*/ serviceDesc(file_quixos_orch, 0);
+51
View File
@@ -0,0 +1,51 @@
import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file quixos/package.proto.
*/
export declare const file_quixos_package: GenFile;
/**
* @generated from message quixos.PackageDescriptor
*/
export type PackageDescriptor = Message<"quixos.PackageDescriptor"> & {
/**
* @generated from field: string package_id = 1;
*/
packageId: string;
/**
* @generated from field: string package_revision_id = 2;
*/
packageRevisionId: string;
/**
* @generated from field: string runtime_protocol_version = 3;
*/
runtimeProtocolVersion: string;
/**
* @generated from field: repeated quixos.RuntimeExport exports = 4;
*/
exports: RuntimeExport[];
};
/**
* Describes the message quixos.PackageDescriptor.
* Use `create(PackageDescriptorSchema)` to create a new message.
*/
export declare const PackageDescriptorSchema: GenMessage<PackageDescriptor>;
/**
* @generated from message quixos.RuntimeExport
*/
export type RuntimeExport = Message<"quixos.RuntimeExport"> & {
/**
* @generated from field: string export_id = 1;
*/
exportId: string;
/**
* @generated from field: string runtime_symbol = 2;
*/
runtimeSymbol: string;
};
/**
* Describes the message quixos.RuntimeExport.
* Use `create(RuntimeExportSchema)` to create a new message.
*/
export declare const RuntimeExportSchema: GenMessage<RuntimeExport>;
//# sourceMappingURL=package_pb.d.ts.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"package_pb.d.ts","sourceRoot":"","sources":["../../src/quixos/package_pb.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,OACgT,CAAC;AAEnV;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,0BAA0B,CAAC,GAAG;IACpE;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,sBAAsB,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,UAAU,CAAC,iBAAiB,CAC7B,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,sBAAsB,CAAC,GAAG;IAC5D;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,aAAa,CACrB,CAAC"}
+18
View File
@@ -0,0 +1,18 @@
// @generated by protoc-gen-es v2.12.1 with parameter "target=ts,import_extension=js"
// @generated from file quixos/package.proto (package quixos, syntax proto3)
/* eslint-disable */
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
/**
* Describes the file quixos/package.proto.
*/
export const file_quixos_package = /*@__PURE__*/ fileDesc("ChRxdWl4b3MvcGFja2FnZS5wcm90bxIGcXVpeG9zIo4BChFQYWNrYWdlRGVzY3JpcHRvchISCgpwYWNrYWdlX2lkGAEgASgJEhsKE3BhY2thZ2VfcmV2aXNpb25faWQYAiABKAkSIAoYcnVudGltZV9wcm90b2NvbF92ZXJzaW9uGAMgASgJEiYKB2V4cG9ydHMYBCADKAsyFS5xdWl4b3MuUnVudGltZUV4cG9ydCI6Cg1SdW50aW1lRXhwb3J0EhEKCWV4cG9ydF9pZBgBIAEoCRIWCg5ydW50aW1lX3N5bWJvbBgCIAEoCWIGcHJvdG8z");
/**
* Describes the message quixos.PackageDescriptor.
* Use `create(PackageDescriptorSchema)` to create a new message.
*/
export const PackageDescriptorSchema = /*@__PURE__*/ messageDesc(file_quixos_package, 0);
/**
* Describes the message quixos.RuntimeExport.
* Use `create(RuntimeExportSchema)` to create a new message.
*/
export const RuntimeExportSchema = /*@__PURE__*/ messageDesc(file_quixos_package, 1);
+113
View File
@@ -0,0 +1,113 @@
import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file quixos/refs.proto.
*/
export declare const file_quixos_refs: GenFile;
/**
* @generated from message quixos.CapabilityRef
*/
export type CapabilityRef = Message<"quixos.CapabilityRef"> & {
/**
* @generated from field: string interface_revision_id = 1;
*/
interfaceRevisionId: string;
/**
* @generated from field: string operation_id = 2;
*/
operationId: string;
};
/**
* Describes the message quixos.CapabilityRef.
* Use `create(CapabilityRefSchema)` to create a new message.
*/
export declare const CapabilityRefSchema: GenMessage<CapabilityRef>;
/**
* @generated from message quixos.PackageExportRef
*/
export type PackageExportRef = Message<"quixos.PackageExportRef"> & {
/**
* @generated from field: string package_revision_id = 1;
*/
packageRevisionId: string;
/**
* @generated from field: string export_id = 2;
*/
exportId: string;
};
/**
* Describes the message quixos.PackageExportRef.
* Use `create(PackageExportRefSchema)` to create a new message.
*/
export declare const PackageExportRefSchema: GenMessage<PackageExportRef>;
/**
* @generated from message quixos.InjectedDependency
*/
export type InjectedDependency = Message<"quixos.InjectedDependency"> & {
/**
* @generated from field: string port_id = 1;
*/
portId: string;
/**
* @generated from oneof quixos.InjectedDependency.binding
*/
binding: {
/**
* @generated from field: string state_slot_id = 2;
*/
value: string;
case: "stateSlotId";
} | {
/**
* @generated from field: quixos.EdgeDependency edge = 3;
*/
value: EdgeDependency;
case: "edge";
} | {
/**
* @generated from field: string receiver_interface_revision_id = 4;
*/
value: string;
case: "receiverInterfaceRevisionId";
} | {
/**
* @generated from field: string constructor_atom_id = 5;
*/
value: string;
case: "constructorAtomId";
} | {
case: undefined;
value?: undefined;
};
/**
* Defaults to the invocation receiver. A checked dependency traversal can
* select a related object explicitly before the package runtime starts.
*
* @generated from field: string object_id = 6;
*/
objectId: string;
};
/**
* Describes the message quixos.InjectedDependency.
* Use `create(InjectedDependencySchema)` to create a new message.
*/
export declare const InjectedDependencySchema: GenMessage<InjectedDependency>;
/**
* @generated from message quixos.EdgeDependency
*/
export type EdgeDependency = Message<"quixos.EdgeDependency"> & {
/**
* @generated from field: string edge_type_id = 1;
*/
edgeTypeId: string;
/**
* @generated from field: string projection_id = 2;
*/
projectionId: string;
};
/**
* Describes the message quixos.EdgeDependency.
* Use `create(EdgeDependencySchema)` to create a new message.
*/
export declare const EdgeDependencySchema: GenMessage<EdgeDependency>;
//# sourceMappingURL=refs_pb.d.ts.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"refs_pb.d.ts","sourceRoot":"","sources":["../../src/quixos/refs_pb.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,OAC+jB,CAAC;AAE/lB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,sBAAsB,CAAC,GAAG;IAC5D;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,aAAa,CACxB,CAAC;AAEnC;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,yBAAyB,CAAC,GAAG;IAClE;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,UAAU,CAAC,gBAAgB,CAC9B,CAAC;AAEnC;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,2BAA2B,CAAC,GAAG;IACtE;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,EAAE;QACP;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,aAAa,CAAC;KACrB,GAAG;QACF;;WAEG;QACH,KAAK,EAAE,cAAc,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;KACd,GAAG;QACF;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,6BAA6B,CAAC;KACrC,GAAG;QACF;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,mBAAmB,CAAC;KAC3B,GAAG;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC;IAE3C;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,UAAU,CAAC,kBAAkB,CAClC,CAAC;AAEnC;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,uBAAuB,CAAC,GAAG;IAC9D;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,cAAc,CAC1B,CAAC"}
+28
View File
@@ -0,0 +1,28 @@
// @generated by protoc-gen-es v2.12.1 with parameter "target=ts,import_extension=js"
// @generated from file quixos/refs.proto (package quixos, syntax proto3)
/* eslint-disable */
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
/**
* Describes the file quixos/refs.proto.
*/
export const file_quixos_refs = /*@__PURE__*/ fileDesc("ChFxdWl4b3MvcmVmcy5wcm90bxIGcXVpeG9zIkQKDUNhcGFiaWxpdHlSZWYSHQoVaW50ZXJmYWNlX3JldmlzaW9uX2lkGAEgASgJEhQKDG9wZXJhdGlvbl9pZBgCIAEoCSJCChBQYWNrYWdlRXhwb3J0UmVmEhsKE3BhY2thZ2VfcmV2aXNpb25faWQYASABKAkSEQoJZXhwb3J0X2lkGAIgASgJIs0BChJJbmplY3RlZERlcGVuZGVuY3kSDwoHcG9ydF9pZBgBIAEoCRIXCg1zdGF0ZV9zbG90X2lkGAIgASgJSAASJgoEZWRnZRgDIAEoCzIWLnF1aXhvcy5FZGdlRGVwZW5kZW5jeUgAEigKHnJlY2VpdmVyX2ludGVyZmFjZV9yZXZpc2lvbl9pZBgEIAEoCUgAEh0KE2NvbnN0cnVjdG9yX2F0b21faWQYBSABKAlIABIRCglvYmplY3RfaWQYBiABKAlCCQoHYmluZGluZyI9Cg5FZGdlRGVwZW5kZW5jeRIUCgxlZGdlX3R5cGVfaWQYASABKAkSFQoNcHJvamVjdGlvbl9pZBgCIAEoCWIGcHJvdG8z");
/**
* Describes the message quixos.CapabilityRef.
* Use `create(CapabilityRefSchema)` to create a new message.
*/
export const CapabilityRefSchema = /*@__PURE__*/ messageDesc(file_quixos_refs, 0);
/**
* Describes the message quixos.PackageExportRef.
* Use `create(PackageExportRefSchema)` to create a new message.
*/
export const PackageExportRefSchema = /*@__PURE__*/ messageDesc(file_quixos_refs, 1);
/**
* Describes the message quixos.InjectedDependency.
* Use `create(InjectedDependencySchema)` to create a new message.
*/
export const InjectedDependencySchema = /*@__PURE__*/ messageDesc(file_quixos_refs, 2);
/**
* Describes the message quixos.EdgeDependency.
* Use `create(EdgeDependencySchema)` to create a new message.
*/
export const EdgeDependencySchema = /*@__PURE__*/ messageDesc(file_quixos_refs, 3);
+216
View File
@@ -0,0 +1,216 @@
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
import type { Value } from "../camino/api_pb.js";
import type { InjectedDependency, PackageExportRef } from "./refs_pb.js";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file quixos/runtime.proto.
*/
export declare const file_quixos_runtime: GenFile;
/**
* @generated from message quixos.runtime.HandshakeRequest
*/
export type HandshakeRequest = Message<"quixos.runtime.HandshakeRequest"> & {
/**
* @generated from field: string orch_protocol_version = 1;
*/
orchProtocolVersion: string;
};
/**
* Describes the message quixos.runtime.HandshakeRequest.
* Use `create(HandshakeRequestSchema)` to create a new message.
*/
export declare const HandshakeRequestSchema: GenMessage<HandshakeRequest>;
/**
* @generated from message quixos.runtime.HandshakeResponse
*/
export type HandshakeResponse = Message<"quixos.runtime.HandshakeResponse"> & {
/**
* @generated from field: string package_revision_id = 1;
*/
packageRevisionId: string;
/**
* @generated from field: string runtime_protocol_version = 2;
*/
runtimeProtocolVersion: string;
/**
* @generated from field: repeated string export_ids = 3;
*/
exportIds: string[];
};
/**
* Describes the message quixos.runtime.HandshakeResponse.
* Use `create(HandshakeResponseSchema)` to create a new message.
*/
export declare const HandshakeResponseSchema: GenMessage<HandshakeResponse>;
/**
* @generated from message quixos.runtime.InvokeRequest
*/
export type InvokeRequest = Message<"quixos.runtime.InvokeRequest"> & {
/**
* @generated from field: string invocation_id = 1;
*/
invocationId: string;
/**
* @generated from field: quixos.PackageExportRef export = 2;
*/
export?: PackageExportRef | undefined;
/**
* @generated from field: string object_id = 3;
*/
objectId: string;
/**
* @generated from field: map<string, camino.Value> input = 4;
*/
input: {
[key: string]: Value;
};
/**
* @generated from field: repeated quixos.InjectedDependency dependencies = 5;
*/
dependencies: InjectedDependency[];
};
/**
* Describes the message quixos.runtime.InvokeRequest.
* Use `create(InvokeRequestSchema)` to create a new message.
*/
export declare const InvokeRequestSchema: GenMessage<InvokeRequest>;
/**
* @generated from message quixos.runtime.InvokeResponse
*/
export type InvokeResponse = Message<"quixos.runtime.InvokeResponse"> & {
/**
* @generated from field: bool ok = 1;
*/
ok: boolean;
/**
* @generated from field: camino.Value result = 2;
*/
result?: Value | undefined;
/**
* @generated from field: string error = 3;
*/
error: string;
};
/**
* Describes the message quixos.runtime.InvokeResponse.
* Use `create(InvokeResponseSchema)` to create a new message.
*/
export declare const InvokeResponseSchema: GenMessage<InvokeResponse>;
/**
* @generated from message quixos.runtime.WatchRequest
*/
export type WatchRequest = Message<"quixos.runtime.WatchRequest"> & {
/**
* @generated from field: string invocation_id = 1;
*/
invocationId: string;
/**
* @generated from field: quixos.PackageExportRef export = 2;
*/
export?: PackageExportRef | undefined;
/**
* @generated from field: string object_id = 3;
*/
objectId: string;
/**
* @generated from field: map<string, camino.Value> input = 4;
*/
input: {
[key: string]: Value;
};
/**
* @generated from field: repeated quixos.InjectedDependency dependencies = 5;
*/
dependencies: InjectedDependency[];
};
/**
* Describes the message quixos.runtime.WatchRequest.
* Use `create(WatchRequestSchema)` to create a new message.
*/
export declare const WatchRequestSchema: GenMessage<WatchRequest>;
/**
* @generated from message quixos.runtime.DerivedDependency
*/
export type DerivedDependency = Message<"quixos.runtime.DerivedDependency"> & {
/**
* @generated from field: string kind = 1;
*/
kind: string;
/**
* @generated from field: string object_id = 2;
*/
objectId: string;
/**
* @generated from field: string attachment_id = 3;
*/
attachmentId: string;
/**
* @generated from field: string projection_id = 4;
*/
projectionId: string;
};
/**
* Describes the message quixos.runtime.DerivedDependency.
* Use `create(DerivedDependencySchema)` to create a new message.
*/
export declare const DerivedDependencySchema: GenMessage<DerivedDependency>;
/**
* @generated from message quixos.runtime.WatchEvent
*/
export type WatchEvent = Message<"quixos.runtime.WatchEvent"> & {
/**
* @generated from field: string watch_id = 1;
*/
watchId: string;
/**
* @generated from field: camino.Value value = 2;
*/
value?: Value | undefined;
/**
* @generated from field: repeated quixos.runtime.DerivedDependency dependencies = 3;
*/
dependencies: DerivedDependency[];
/**
* @generated from field: string error = 4;
*/
error: string;
/**
* @generated from field: bool initial = 5;
*/
initial: boolean;
};
/**
* Describes the message quixos.runtime.WatchEvent.
* Use `create(WatchEventSchema)` to create a new message.
*/
export declare const WatchEventSchema: GenMessage<WatchEvent>;
/**
* @generated from service quixos.runtime.PackageRuntime
*/
export declare const PackageRuntime: GenService<{
/**
* @generated from rpc quixos.runtime.PackageRuntime.Handshake
*/
handshake: {
methodKind: "unary";
input: typeof HandshakeRequestSchema;
output: typeof HandshakeResponseSchema;
};
/**
* @generated from rpc quixos.runtime.PackageRuntime.Invoke
*/
invoke: {
methodKind: "unary";
input: typeof InvokeRequestSchema;
output: typeof InvokeResponseSchema;
};
/**
* @generated from rpc quixos.runtime.PackageRuntime.Watch
*/
watch: {
methodKind: "server_streaming";
input: typeof WatchRequestSchema;
output: typeof WatchEventSchema;
};
}>;
//# sourceMappingURL=runtime_pb.d.ts.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"runtime_pb.d.ts","sourceRoot":"","sources":["../../src/quixos/runtime_pb.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAEpF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,OACouD,CAAC;AAEvwD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,iCAAiC,CAAC,GAAG;IAC1E;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,UAAU,CAAC,gBAAgB,CAC3B,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,kCAAkC,CAAC,GAAG;IAC5E;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,sBAAsB,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,UAAU,CAAC,iBAAiB,CAC7B,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,8BAA8B,CAAC,GAAG;IACpE;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAEtC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAA;KAAE,CAAC;IAEhC;;OAEG;IACH,YAAY,EAAE,kBAAkB,EAAE,CAAC;CACpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,aAAa,CACrB,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,+BAA+B,CAAC,GAAG;IACtE;;OAEG;IACH,EAAE,EAAE,OAAO,CAAC;IAEZ;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IAE3B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,cAAc,CACvB,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,6BAA6B,CAAC,GAAG;IAClE;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAEtC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAA;KAAE,CAAC;IAEhC;;OAEG;IACH,YAAY,EAAE,kBAAkB,EAAE,CAAC;CACpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,UAAU,CAAC,YAAY,CACnB,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,kCAAkC,CAAC,GAAG;IAC5E;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,UAAU,CAAC,iBAAiB,CAC7B,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,2BAA2B,CAAC,GAAG;IAC9D;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IAE1B;;OAEG;IACH,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAElC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,UAAU,CACf,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,UAAU,CAAC;IACtC;;OAEG;IACH,SAAS,EAAE;QACT,UAAU,EAAE,OAAO,CAAC;QACpB,KAAK,EAAE,OAAO,sBAAsB,CAAC;QACrC,MAAM,EAAE,OAAO,uBAAuB,CAAC;KACxC,CAAC;IACF;;OAEG;IACH,MAAM,EAAE;QACN,UAAU,EAAE,OAAO,CAAC;QACpB,KAAK,EAAE,OAAO,mBAAmB,CAAC;QAClC,MAAM,EAAE,OAAO,oBAAoB,CAAC;KACrC,CAAC;IACF;;OAEG;IACH,KAAK,EAAE;QACL,UAAU,EAAE,kBAAkB,CAAC;QAC/B,KAAK,EAAE,OAAO,kBAAkB,CAAC;QACjC,MAAM,EAAE,OAAO,gBAAgB,CAAC;KACjC,CAAC;CACH,CACoC,CAAC"}
+49
View File
@@ -0,0 +1,49 @@
// @generated by protoc-gen-es v2.12.1 with parameter "target=ts,import_extension=js"
// @generated from file quixos/runtime.proto (package quixos.runtime, syntax proto3)
/* eslint-disable */
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
import { file_camino_api } from "../camino/api_pb.js";
import { file_quixos_refs } from "./refs_pb.js";
/**
* Describes the file quixos/runtime.proto.
*/
export const file_quixos_runtime = /*@__PURE__*/ fileDesc("ChRxdWl4b3MvcnVudGltZS5wcm90bxIOcXVpeG9zLnJ1bnRpbWUiMQoQSGFuZHNoYWtlUmVxdWVzdBIdChVvcmNoX3Byb3RvY29sX3ZlcnNpb24YASABKAkiZgoRSGFuZHNoYWtlUmVzcG9uc2USGwoTcGFja2FnZV9yZXZpc2lvbl9pZBgBIAEoCRIgChhydW50aW1lX3Byb3RvY29sX3ZlcnNpb24YAiABKAkSEgoKZXhwb3J0X2lkcxgDIAMoCSKLAgoNSW52b2tlUmVxdWVzdBIVCg1pbnZvY2F0aW9uX2lkGAEgASgJEigKBmV4cG9ydBgCIAEoCzIYLnF1aXhvcy5QYWNrYWdlRXhwb3J0UmVmEhEKCW9iamVjdF9pZBgDIAEoCRI3CgVpbnB1dBgEIAMoCzIoLnF1aXhvcy5ydW50aW1lLkludm9rZVJlcXVlc3QuSW5wdXRFbnRyeRIwCgxkZXBlbmRlbmNpZXMYBSADKAsyGi5xdWl4b3MuSW5qZWN0ZWREZXBlbmRlbmN5GjsKCklucHV0RW50cnkSCwoDa2V5GAEgASgJEhwKBXZhbHVlGAIgASgLMg0uY2FtaW5vLlZhbHVlOgI4ASJKCg5JbnZva2VSZXNwb25zZRIKCgJvaxgBIAEoCBIdCgZyZXN1bHQYAiABKAsyDS5jYW1pbm8uVmFsdWUSDQoFZXJyb3IYAyABKAkiiQIKDFdhdGNoUmVxdWVzdBIVCg1pbnZvY2F0aW9uX2lkGAEgASgJEigKBmV4cG9ydBgCIAEoCzIYLnF1aXhvcy5QYWNrYWdlRXhwb3J0UmVmEhEKCW9iamVjdF9pZBgDIAEoCRI2CgVpbnB1dBgEIAMoCzInLnF1aXhvcy5ydW50aW1lLldhdGNoUmVxdWVzdC5JbnB1dEVudHJ5EjAKDGRlcGVuZGVuY2llcxgFIAMoCzIaLnF1aXhvcy5JbmplY3RlZERlcGVuZGVuY3kaOwoKSW5wdXRFbnRyeRILCgNrZXkYASABKAkSHAoFdmFsdWUYAiABKAsyDS5jYW1pbm8uVmFsdWU6AjgBImIKEURlcml2ZWREZXBlbmRlbmN5EgwKBGtpbmQYASABKAkSEQoJb2JqZWN0X2lkGAIgASgJEhUKDWF0dGFjaG1lbnRfaWQYAyABKAkSFQoNcHJvamVjdGlvbl9pZBgEIAEoCSKVAQoKV2F0Y2hFdmVudBIQCgh3YXRjaF9pZBgBIAEoCRIcCgV2YWx1ZRgCIAEoCzINLmNhbWluby5WYWx1ZRI3CgxkZXBlbmRlbmNpZXMYAyADKAsyIS5xdWl4b3MucnVudGltZS5EZXJpdmVkRGVwZW5kZW5jeRINCgVlcnJvchgEIAEoCRIPCgdpbml0aWFsGAUgASgIMvABCg5QYWNrYWdlUnVudGltZRJQCglIYW5kc2hha2USIC5xdWl4b3MucnVudGltZS5IYW5kc2hha2VSZXF1ZXN0GiEucXVpeG9zLnJ1bnRpbWUuSGFuZHNoYWtlUmVzcG9uc2USRwoGSW52b2tlEh0ucXVpeG9zLnJ1bnRpbWUuSW52b2tlUmVxdWVzdBoeLnF1aXhvcy5ydW50aW1lLkludm9rZVJlc3BvbnNlEkMKBVdhdGNoEhwucXVpeG9zLnJ1bnRpbWUuV2F0Y2hSZXF1ZXN0GhoucXVpeG9zLnJ1bnRpbWUuV2F0Y2hFdmVudDABYgZwcm90bzM", [file_camino_api, file_quixos_refs]);
/**
* Describes the message quixos.runtime.HandshakeRequest.
* Use `create(HandshakeRequestSchema)` to create a new message.
*/
export const HandshakeRequestSchema = /*@__PURE__*/ messageDesc(file_quixos_runtime, 0);
/**
* Describes the message quixos.runtime.HandshakeResponse.
* Use `create(HandshakeResponseSchema)` to create a new message.
*/
export const HandshakeResponseSchema = /*@__PURE__*/ messageDesc(file_quixos_runtime, 1);
/**
* Describes the message quixos.runtime.InvokeRequest.
* Use `create(InvokeRequestSchema)` to create a new message.
*/
export const InvokeRequestSchema = /*@__PURE__*/ messageDesc(file_quixos_runtime, 2);
/**
* Describes the message quixos.runtime.InvokeResponse.
* Use `create(InvokeResponseSchema)` to create a new message.
*/
export const InvokeResponseSchema = /*@__PURE__*/ messageDesc(file_quixos_runtime, 3);
/**
* Describes the message quixos.runtime.WatchRequest.
* Use `create(WatchRequestSchema)` to create a new message.
*/
export const WatchRequestSchema = /*@__PURE__*/ messageDesc(file_quixos_runtime, 4);
/**
* Describes the message quixos.runtime.DerivedDependency.
* Use `create(DerivedDependencySchema)` to create a new message.
*/
export const DerivedDependencySchema = /*@__PURE__*/ messageDesc(file_quixos_runtime, 5);
/**
* Describes the message quixos.runtime.WatchEvent.
* Use `create(WatchEventSchema)` to create a new message.
*/
export const WatchEventSchema = /*@__PURE__*/ messageDesc(file_quixos_runtime, 6);
/**
* @generated from service quixos.runtime.PackageRuntime
*/
export const PackageRuntime = /*@__PURE__*/ serviceDesc(file_quixos_runtime, 0);
Generated
+14 -14
View File
@@ -74,17 +74,17 @@
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_2"
}, },
"locked": { "locked": {
"lastModified": 1783954303, "lastModified": 1788581083,
"narHash": "sha256-xywk5pWpvOD2rWmNaZ3arYgkx3Km/qsos4g1uB2pXVA=", "narHash": "sha256-d+2xgaR/f/9b2AwXqEba2SnO7marqCEpwAT5kUIF8a4=",
"ref": "refs/heads/exported", "ref": "refs/tags/quixos-reachability/fd6160ec67c0c93a61f7f605c4c1397c95c6369b",
"rev": "ff07b0d7933ad01c0b52bae2dcab1445e8e91eeb", "rev": "fd6160ec67c0c93a61f7f605c4c1397c95c6369b",
"revCount": 14, "revCount": 35,
"type": "git", "type": "git",
"url": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-protocol.git" "url": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-protocol.git"
}, },
"original": { "original": {
"ref": "refs/heads/exported", "ref": "refs/tags/quixos-reachability/fd6160ec67c0c93a61f7f605c4c1397c95c6369b",
"rev": "ff07b0d7933ad01c0b52bae2dcab1445e8e91eeb", "rev": "fd6160ec67c0c93a61f7f605c4c1397c95c6369b",
"type": "git", "type": "git",
"url": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-protocol.git" "url": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-protocol.git"
} }
@@ -92,17 +92,17 @@
"quixosNixHelpers": { "quixosNixHelpers": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1783914102, "lastModified": 1788543053,
"narHash": "sha256-A9EnXxKaODNrSUpw1IlUBR8fe4px5I+wNJFUFGbZY7c=", "narHash": "sha256-3YReATWEVxZinYVi/l3cwOz+oFoZUrwj24kUBQTmUpQ=",
"ref": "refs/heads/exported", "ref": "refs/tags/quixos-reachability/56bbcd22d17f8c7f120b1e0b5bd1d5a86e91a80a",
"rev": "1f0c39b01501d646fe97dfc6e5777ccab0bde2f1", "rev": "56bbcd22d17f8c7f120b1e0b5bd1d5a86e91a80a",
"revCount": 6, "revCount": 8,
"type": "git", "type": "git",
"url": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-nix-helpers.git" "url": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-nix-helpers.git"
}, },
"original": { "original": {
"ref": "refs/heads/exported", "ref": "refs/tags/quixos-reachability/56bbcd22d17f8c7f120b1e0b5bd1d5a86e91a80a",
"rev": "1f0c39b01501d646fe97dfc6e5777ccab0bde2f1", "rev": "56bbcd22d17f8c7f120b1e0b5bd1d5a86e91a80a",
"type": "git", "type": "git",
"url": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-nix-helpers.git" "url": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-nix-helpers.git"
} }
+17 -4
View File
@@ -4,9 +4,9 @@
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils"; flake-utils.url = "github:numtide/flake-utils";
quixos-protocol.url = "git+https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-protocol.git?ref=refs/heads/exported&rev=ff07b0d7933ad01c0b52bae2dcab1445e8e91eeb"; quixos-protocol.url = "git+https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-protocol.git?ref=refs/tags/quixos-reachability/fd6160ec67c0c93a61f7f605c4c1397c95c6369b&rev=fd6160ec67c0c93a61f7f605c4c1397c95c6369b";
quixosNixHelpers = { quixosNixHelpers = {
url = "git+https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-nix-helpers.git?ref=refs/heads/exported&rev=1f0c39b01501d646fe97dfc6e5777ccab0bde2f1"; url = "git+https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-nix-helpers.git?ref=refs/tags/quixos-reachability/56bbcd22d17f8c7f120b1e0b5bd1d5a86e91a80a&rev=56bbcd22d17f8c7f120b1e0b5bd1d5a86e91a80a";
flake = false; flake = false;
}; };
}; };
@@ -14,8 +14,7 @@
outputs = inputs@{ nixpkgs, flake-utils, quixosNixHelpers, ... }: outputs = inputs@{ nixpkgs, flake-utils, quixosNixHelpers, ... }:
let let
quixosHelpers = import "${quixosNixHelpers}/quixos-package-helpers.nix"; quixosHelpers = import "${quixosNixHelpers}/quixos-package-helpers.nix";
in packageOutputs = quixosHelpers.mkCaminoTsYarnNixifyFlake {
quixosHelpers.mkCaminoTsYarnNixifyFlake {
inherit inputs nixpkgs flake-utils; inherit inputs nixpkgs flake-utils;
packageRoot = ./.; packageRoot = ./.;
sourceName = "quixos-camino-package-runtime-source"; sourceName = "quixos-camino-package-runtime-source";
@@ -33,4 +32,18 @@
export QUIXOS_PROTO_PATH="${pkgs.protobuf}/include:${inputs.quixos-protocol.packages.${system}.default}/proto''${QUIXOS_PROTO_PATH:+:$QUIXOS_PROTO_PATH}" export QUIXOS_PROTO_PATH="${pkgs.protobuf}/include:${inputs.quixos-protocol.packages.${system}.default}/proto''${QUIXOS_PROTO_PATH:+:$QUIXOS_PROTO_PATH}"
''; '';
}; };
in
packageOutputs // flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
builtPackage = packageOutputs.packages.${system}.default;
in
{
checks.dist-current = pkgs.runCommand "camino-package-runtime-dist-current" { } ''
diff --recursive --unified \
${./dist} \
${builtPackage}/libexec/-quixos-camino-package-runtime/dist
touch "$out"
'';
});
} }
+11 -14
View File
@@ -2,33 +2,30 @@
"name": "@quixos/camino-package-runtime", "name": "@quixos/camino-package-runtime",
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"packageManager": "yarn@4.14.1", "packageManager": "yarn@4.18.0",
"type": "module", "type": "module",
"bin": { "main": "dist/index.js",
"camino-codegen-ts-runtime": "dist/src/codegen-ts-runtime.js" "types": "dist/index.d.ts",
},
"exports": { "exports": {
".": { ".": {
"types": "./src/index.ts", "types": "./dist/index.d.ts",
"default": "./src/index.ts" "default": "./dist/index.js"
} }
}, },
"scripts": { "scripts": {
"build": "yarn generate && tsc -p tsconfig.json", "build": "rm -rf dist && yarn generate && tsc -p tsconfig.json",
"generate": "rm -rf src/camino src/quixos && protoc --es_out=src --es_opt=target=ts,import_extension=js --proto_path=$QUIXOS_PROTO_PATH quixos/refs.proto quixos/runtime.proto camino/schema.proto camino/api.proto", "generate": "rm -rf src/camino src/quixos && protoc --experimental_allow_proto3_optional --es_out=src --es_opt=target=ts,import_extension=js --proto_path=$QUIXOS_PROTO_PATH quixos/refs.proto quixos/runtime.proto quixos/orch.proto quixos/package.proto camino/schema.proto camino/api.proto",
"typecheck": "yarn generate && tsc --noEmit" "typecheck": "yarn generate && tsc --noEmit",
"test": "yarn build && node --test test/*.test.mjs"
}, },
"dependencies": { "dependencies": {
"@automerge/automerge": "^3.3.0",
"@bufbuild/protobuf": "^2.12.1", "@bufbuild/protobuf": "^2.12.1",
"@connectrpc/connect": "^2.1.2", "@connectrpc/connect": "^2.1.2",
"@connectrpc/connect-node": "^2.1.2", "@connectrpc/connect-node": "^2.1.2"
"@quixos/camino-datatypes": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/camino-datatypes.git#commit=e061e290709c672d2dc675e5c871733de195211a",
"protobufjs": "^7.5.4"
}, },
"devDependencies": { "devDependencies": {
"@bufbuild/protoc-gen-es": "^2.12.1", "@bufbuild/protoc-gen-es": "^2.12.1",
"@types/node": "^24", "@types/node": "^24",
"typescript": "^5.9.3" "typescript": "^7.0.2"
} }
} }
+326 -262
View File
File diff suppressed because one or more lines are too long
+141 -720
View File
@@ -4,728 +4,242 @@
import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
import type { FunctionRef } from "../quixos/refs_pb.js";
import { file_quixos_refs } from "../quixos/refs_pb.js";
import type { Message } from "@bufbuild/protobuf"; import type { Message } from "@bufbuild/protobuf";
/** /**
* Describes the file camino/schema.proto. * Describes the file camino/schema.proto.
*/ */
export const file_camino_schema: GenFile = /*@__PURE__*/ export const file_camino_schema: GenFile = /*@__PURE__*/
fileDesc("ChNjYW1pbm8vc2NoZW1hLnByb3RvEgZjYW1pbm8iSwoJU3ltYm9sUmVmEhEKCW5hbWVzcGFjZRgBIAEoCRIMCgRuYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSDAoEaGFzaBgEIAEoCSIYCgNSZWYSEQoJb2JqZWN0X2lkGAEgASgJIg0KC0N1c3RvbUZpZWxkIiQKEFdhdGNoU3RhcnRSZXN1bHQSEAoId2F0Y2hfaWQYASABKAkiJAoQV2F0Y2hTdG9wUmVxdWVzdBIQCgh3YXRjaF9pZBgBIAEoCSIRCg9XYXRjaFN0b3BSZXN1bHQiGwoIQ3JkdFRleHQSDwoHcGF5bG9hZBgBIAEoDCIfCgxDcmR0UmljaFRleHQSDwoHcGF5bG9hZBgBIAEoDCIbCghDcmR0SnNvbhIPCgdwYXlsb2FkGAEgASgMIqgDCgtDbGFzc1NjaGVtYRIdCgJpZBgBIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSDwoHdmVyc2lvbhgCIAEoDRIjCgZmaWVsZHMYAyADKAsyEy5jYW1pbm8uRmllbGRTY2hlbWESIQoFZWRnZXMYBCADKAsyEi5jYW1pbm8uRWRnZVNjaGVtYRIlCgdtZXRob2RzGAUgAygLMhQuY2FtaW5vLk1ldGhvZFNjaGVtYRIpCgptaWdyYXRpb25zGAYgAygLMhUuY2FtaW5vLk1pZ3JhdGlvblNwZWMSEwoLc291cmNlX2ZpbGUYByABKAkSFQoNcHJvdG9fbWVzc2FnZRgIIAEoCRI6ChJvcGVyYXRpb25fc2VydmljZXMYCSADKAsyHi5jYW1pbm8uT3BlcmF0aW9uU2VydmljZVNjaGVtYRI5CgppbXBsZW1lbnRzGAogAygLMiUuY2FtaW5vLkludGVyZmFjZUltcGxlbWVudGF0aW9uU2NoZW1hEiwKC2NvbnN0cnVjdG9yGAsgASgLMhcuY2FtaW5vLkNvbnN0cnVjdG9yU3BlYyKZAgoLRmllbGRTY2hlbWESDAoEbmFtZRgBIAEoCRILCgN0YWcYAiABKA0SHQoEdHlwZRgDIAEoCzIPLmNhbWluby5UeXBlUmVmEioKCGNvbmZsaWN0GAQgASgOMhguY2FtaW5vLkNvbmZsaWN0U3RyYXRlZ3kSEAoIcmVwZWF0ZWQYBSABKAgSEAoIb3B0aW9uYWwYBiABKAgSJQoHc3RvcmFnZRgHIAEoCzIULmNhbWluby5GaWVsZFN0b3JhZ2USHQoDb3BzGAggASgLMhAuY2FtaW5vLkZpZWxkT3BzEjoKEmludGVyZmFjZV9jb250cmFjdBgJIAEoCzIeLmNhbWluby5JbnRlcmZhY2VGaWVsZENvbnRyYWN0ImwKDEZpZWxkU3RvcmFnZRImCgRraW5kGAEgASgOMhguY2FtaW5vLkZpZWxkU3RvcmFnZUtpbmQSJQoIcmVzb2x2ZXIYAiABKAsyEy5xdWl4b3MuRnVuY3Rpb25SZWYSDQoFY2FjaGUYAyABKAgiQAoHVHlwZVJlZhISCgpwcm90b190eXBlGAEgASgJEiEKBnN5bWJvbBgCIAEoCzIRLmNhbWluby5TeW1ib2xSZWYiOgoLVHlwZUJpbmRpbmcSDAoEbmFtZRgBIAEoCRIdCgR0eXBlGAIgASgLMg8uY2FtaW5vLlR5cGVSZWYilAEKFkludGVyZmFjZUZpZWxkQ29udHJhY3QSEAoIcmVxdWlyZWQYASABKAgSEAoIcmVhZGFibGUYAiABKAgSEAoId3JpdGFibGUYAyABKAgSEQoJd2F0Y2hhYmxlGAQgASgIEhIKCnR5cGVfcGFyYW0YBSABKAkSHQoEdHlwZRgGIAEoCzIPLmNhbWluby5UeXBlUmVmInEKHUludGVyZmFjZUltcGxlbWVudGF0aW9uU2NoZW1hEiQKCWludGVyZmFjZRgBIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSKgoNdHlwZV9iaW5kaW5ncxgCIAMoCzITLmNhbWluby5UeXBlQmluZGluZyKSAQoPSW50ZXJmYWNlU2NoZW1hEh0KAmlkGAEgASgLMhEuY2FtaW5vLlN5bWJvbFJlZhIPCgd2ZXJzaW9uGAIgASgNEiMKBmZpZWxkcxgDIAMoCzITLmNhbWluby5GaWVsZFNjaGVtYRITCgtzb3VyY2VfZmlsZRgEIAEoCRIVCg1wcm90b19tZXNzYWdlGAUgASgJIlAKCEZpZWxkT3BzEjMKDmltcGxlbWVudGF0aW9uGAEgASgOMhsuY2FtaW5vLkZpZWxkSW1wbGVtZW50YXRpb24SDwoHc2VydmljZRgCIAEoCSLtAQoKRWRnZVNjaGVtYRIdCgJpZBgBIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSFAoMc291cmNlX2ZpZWxkGAIgASgJEiUKCmZyb21fY2xhc3MYAyABKAsyES5jYW1pbm8uU3ltYm9sUmVmEiMKCHRvX2NsYXNzGAQgASgLMhEuY2FtaW5vLlN5bWJvbFJlZhIoCgtjYXJkaW5hbGl0eRgFIAEoDjITLmNhbWluby5DYXJkaW5hbGl0eRIPCgdpbnZlcnNlGAYgASgJEiMKBmZpZWxkcxgHIAMoCzITLmNhbWluby5GaWVsZFNjaGVtYSJDCgxNZXRob2RTY2hlbWESDAoEbmFtZRgBIAEoCRIlCghmdW5jdGlvbhgCIAEoCzITLnF1aXhvcy5GdW5jdGlvblJlZiJgCg1NaWdyYXRpb25TcGVjEhQKDGZyb21fdmVyc2lvbhgBIAEoDRISCgp0b192ZXJzaW9uGAIgASgNEiUKCGZ1bmN0aW9uGAMgASgLMhMucXVpeG9zLkZ1bmN0aW9uUmVmIjgKD0NvbnN0cnVjdG9yU3BlYxIlCghmdW5jdGlvbhgBIAEoCzITLnF1aXhvcy5GdW5jdGlvblJlZiKRAQoPT3BlcmF0aW9uU2NoZW1hEgwKBG5hbWUYASABKAkSIwoKaW5wdXRfdHlwZRgCIAEoCzIPLmNhbWluby5UeXBlUmVmEiQKC291dHB1dF90eXBlGAMgASgLMg8uY2FtaW5vLlR5cGVSZWYSJQoIZnVuY3Rpb24YBCABKAsyEy5xdWl4b3MuRnVuY3Rpb25SZWYiZgoWT3BlcmF0aW9uU2VydmljZVNjaGVtYRIMCgRuYW1lGAEgASgJEhEKCWZ1bGxfbmFtZRgCIAEoCRIrCgpvcGVyYXRpb25zGAMgAygLMhcuY2FtaW5vLk9wZXJhdGlvblNjaGVtYSKbAQoRRG9jUmVmRGVjbGFyYXRpb24SEgoKbG9jYWxfbmFtZRgBIAEoCRIfCgR0eXBlGAIgASgLMhEuY2FtaW5vLlN5bWJvbFJlZhInCgx0YXJnZXRfY2xhc3MYAyABKAsyES5jYW1pbm8uU3ltYm9sUmVmEigKCHN0cmVuZ3RoGAQgASgOMhYuY2FtaW5vLkRvY1JlZlN0cmVuZ3RoKmQKEENvbmZsaWN0U3RyYXRlZ3kSIQodQ09ORkxJQ1RfU1RSQVRFR1lfVU5TUEVDSUZJRUQQABILCgdSRVBMQUNFEAESFgoSUFJFU0VSVkVfQ09ORkxJQ1RTEAISCAoEQ1JEVBADKnoKC0NhcmRpbmFsaXR5EhsKF0NBUkRJTkFMSVRZX1VOU1BFQ0lGSUVEEAASEAoMT1BUSU9OQUxfT05FEAESDwoLRVhBQ1RMWV9PTkUQAhIICgRNQU5ZEAMSDwoLTUFOWV9VTklRVUUQBBIQCgxNQU5ZX09SREVSRUQQBSpUCg5Eb2NSZWZTdHJlbmd0aBIgChxET0NfUkVGX1NUUkVOR1RIX1VOU1BFQ0lGSUVEEAASDAoIU09GVF9SRUYQARISCg5QUk9KRUNURURfRURHRRACKnkKEEZpZWxkU3RvcmFnZUtpbmQSIgoeRklFTERfU1RPUkFHRV9LSU5EX1VOU1BFQ0lGSUVEEAASCgoGU1RPUkVEEAESCwoHREVSSVZFRBACEggKBExBWlkQAxIMCghFWFRFUk5BTBAEEhAKDFNUQVRJQ19GSU5BTBAFKkgKE0ZpZWxkSW1wbGVtZW50YXRpb24SJAogRklFTERfSU1QTEVNRU5UQVRJT05fVU5TUEVDSUZJRUQQABILCgdTRVJWSUNFEAFiBnByb3RvMw", [file_quixos_refs]); fileDesc("ChNjYW1pbm8vc2NoZW1hLnByb3RvEgZjYW1pbm8iNwoOQXRvbURlZmluaXRpb24SDwoHYXRvbV9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkiQQoPQXRvbUNvbmZvcm1hbmNlEg8KB2F0b21faWQYASABKAkSHQoVaW50ZXJmYWNlX3JldmlzaW9uX2lkGAIgASgJIqQBCg9TdGF0ZUF0dGFjaG1lbnQSDwoHc2xvdF9pZBgBIAEoCRIYChBhdHRhY2hlZF9hdG9tX2lkGAIgASgJEhQKDGRpc3BsYXlfbmFtZRgDIAEoCRIXCg92YWx1ZV90eXBlX2pzb24YBCABKAkSGwoTc3RvcmFnZV9wb2xpY3lfanNvbhgFIAEoCRIaChJkZWZhdWx0X3ZhbHVlX2pzb24YBiABKAkiUAoSRW5kcG9pbnRDb25zdHJhaW50EhEKB2F0b21faWQYASABKAlIABIfChVpbnRlcmZhY2VfcmV2aXNpb25faWQYAiABKAlIAEIGCgRraW5kIqYBCgxFZGdlRW5kcG9pbnQSFQoNcHJvamVjdGlvbl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSLgoKY29uc3RyYWludBgDIAEoCzIaLmNhbWluby5FbmRwb2ludENvbnN0cmFpbnQSKAoLY2FyZGluYWxpdHkYBCABKA4yEy5jYW1pbm8uQ2FyZGluYWxpdHkSDwoHb3JkZXJlZBgFIAEoCCKHAQoORWRnZUF0dGFjaG1lbnQSFAoMZWRnZV90eXBlX2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIjCgVmaXJzdBgDIAEoCzIULmNhbWluby5FZGdlRW5kcG9pbnQSJAoGc2Vjb25kGAQgASgLMhQuY2FtaW5vLkVkZ2VFbmRwb2ludCLsAQoPUGVyc2lzdGVuY2VQbGFuEhQKDHdvcmtzcGFjZV9pZBgBIAEoCRIdChV3b3Jrc3BhY2VfcmV2aXNpb25faWQYAiABKAkSJQoFYXRvbXMYAyADKAsyFi5jYW1pbm8uQXRvbURlZmluaXRpb24SLQoMY29uZm9ybWFuY2VzGAQgAygLMhcuY2FtaW5vLkF0b21Db25mb3JtYW5jZRInCgZzdGF0ZXMYBSADKAsyFy5jYW1pbm8uU3RhdGVBdHRhY2htZW50EiUKBWVkZ2VzGAYgAygLMhYuY2FtaW5vLkVkZ2VBdHRhY2htZW50KmgKC0NhcmRpbmFsaXR5EhsKF0NBUkRJTkFMSVRZX1VOU1BFQ0lGSUVEEAASEAoMT1BUSU9OQUxfT05FEAESDwoLRVhBQ1RMWV9PTkUQAhIICgRNQU5ZEAMSDwoLTUFOWV9VTklRVUUQBGIGcHJvdG8z");
/** /**
* @generated from message camino.SymbolRef * @generated from message camino.AtomDefinition
*/ */
export type SymbolRef = Message<"camino.SymbolRef"> & { export type AtomDefinition = Message<"camino.AtomDefinition"> & {
/** /**
* @generated from field: string namespace = 1; * @generated from field: string atom_id = 1;
*/ */
namespace: string; atomId: string;
/** /**
* @generated from field: string name = 2; * @generated from field: string display_name = 2;
*/ */
name: string; displayName: string;
/**
* @generated from field: string version = 3;
*/
version: string;
/**
* @generated from field: string hash = 4;
*/
hash: string;
}; };
/** /**
* Describes the message camino.SymbolRef. * Describes the message camino.AtomDefinition.
* Use `create(SymbolRefSchema)` to create a new message. * Use `create(AtomDefinitionSchema)` to create a new message.
*/ */
export const SymbolRefSchema: GenMessage<SymbolRef> = /*@__PURE__*/ export const AtomDefinitionSchema: GenMessage<AtomDefinition> = /*@__PURE__*/
messageDesc(file_camino_schema, 0); messageDesc(file_camino_schema, 0);
/** /**
* @generated from message camino.Ref * @generated from message camino.AtomConformance
*/ */
export type Ref = Message<"camino.Ref"> & { export type AtomConformance = Message<"camino.AtomConformance"> & {
/** /**
* @generated from field: string object_id = 1; * @generated from field: string atom_id = 1;
*/ */
objectId: string; atomId: string;
/**
* @generated from field: string interface_revision_id = 2;
*/
interfaceRevisionId: string;
}; };
/** /**
* Describes the message camino.Ref. * Describes the message camino.AtomConformance.
* Use `create(RefSchema)` to create a new message. * Use `create(AtomConformanceSchema)` to create a new message.
*/ */
export const RefSchema: GenMessage<Ref> = /*@__PURE__*/ export const AtomConformanceSchema: GenMessage<AtomConformance> = /*@__PURE__*/
messageDesc(file_camino_schema, 1); messageDesc(file_camino_schema, 1);
/** /**
* @generated from message camino.CustomField * @generated from message camino.StateAttachment
*/ */
export type CustomField = Message<"camino.CustomField"> & { export type StateAttachment = Message<"camino.StateAttachment"> & {
/**
* @generated from field: string slot_id = 1;
*/
slotId: string;
/**
* @generated from field: string attached_atom_id = 2;
*/
attachedAtomId: string;
/**
* @generated from field: string display_name = 3;
*/
displayName: string;
/**
* @generated from field: string value_type_json = 4;
*/
valueTypeJson: string;
/**
* @generated from field: string storage_policy_json = 5;
*/
storagePolicyJson: string;
/**
* @generated from field: string default_value_json = 6;
*/
defaultValueJson: string;
}; };
/** /**
* Describes the message camino.CustomField. * Describes the message camino.StateAttachment.
* Use `create(CustomFieldSchema)` to create a new message. * Use `create(StateAttachmentSchema)` to create a new message.
*/ */
export const CustomFieldSchema: GenMessage<CustomField> = /*@__PURE__*/ export const StateAttachmentSchema: GenMessage<StateAttachment> = /*@__PURE__*/
messageDesc(file_camino_schema, 2); messageDesc(file_camino_schema, 2);
/** /**
* @generated from message camino.WatchStartResult * @generated from message camino.EndpointConstraint
*/ */
export type WatchStartResult = Message<"camino.WatchStartResult"> & { export type EndpointConstraint = Message<"camino.EndpointConstraint"> & {
/** /**
* @generated from field: string watch_id = 1; * @generated from oneof camino.EndpointConstraint.kind
*/ */
watchId: string; kind: {
/**
* @generated from field: string atom_id = 1;
*/
value: string;
case: "atomId";
} | {
/**
* @generated from field: string interface_revision_id = 2;
*/
value: string;
case: "interfaceRevisionId";
} | { case: undefined; value?: undefined };
}; };
/** /**
* Describes the message camino.WatchStartResult. * Describes the message camino.EndpointConstraint.
* Use `create(WatchStartResultSchema)` to create a new message. * Use `create(EndpointConstraintSchema)` to create a new message.
*/ */
export const WatchStartResultSchema: GenMessage<WatchStartResult> = /*@__PURE__*/ export const EndpointConstraintSchema: GenMessage<EndpointConstraint> = /*@__PURE__*/
messageDesc(file_camino_schema, 3); messageDesc(file_camino_schema, 3);
/** /**
* @generated from message camino.WatchStopRequest * @generated from message camino.EdgeEndpoint
*/ */
export type WatchStopRequest = Message<"camino.WatchStopRequest"> & { export type EdgeEndpoint = Message<"camino.EdgeEndpoint"> & {
/** /**
* @generated from field: string watch_id = 1; * @generated from field: string projection_id = 1;
*/ */
watchId: string; projectionId: string;
};
/**
* Describes the message camino.WatchStopRequest.
* Use `create(WatchStopRequestSchema)` to create a new message.
*/
export const WatchStopRequestSchema: GenMessage<WatchStopRequest> = /*@__PURE__*/
messageDesc(file_camino_schema, 4);
/**
* @generated from message camino.WatchStopResult
*/
export type WatchStopResult = Message<"camino.WatchStopResult"> & {
};
/**
* Describes the message camino.WatchStopResult.
* Use `create(WatchStopResultSchema)` to create a new message.
*/
export const WatchStopResultSchema: GenMessage<WatchStopResult> = /*@__PURE__*/
messageDesc(file_camino_schema, 5);
/**
* @generated from message camino.CrdtText
*/
export type CrdtText = Message<"camino.CrdtText"> & {
/**
* @generated from field: bytes payload = 1;
*/
payload: Uint8Array;
};
/**
* Describes the message camino.CrdtText.
* Use `create(CrdtTextSchema)` to create a new message.
*/
export const CrdtTextSchema: GenMessage<CrdtText> = /*@__PURE__*/
messageDesc(file_camino_schema, 6);
/**
* @generated from message camino.CrdtRichText
*/
export type CrdtRichText = Message<"camino.CrdtRichText"> & {
/**
* @generated from field: bytes payload = 1;
*/
payload: Uint8Array;
};
/**
* Describes the message camino.CrdtRichText.
* Use `create(CrdtRichTextSchema)` to create a new message.
*/
export const CrdtRichTextSchema: GenMessage<CrdtRichText> = /*@__PURE__*/
messageDesc(file_camino_schema, 7);
/**
* @generated from message camino.CrdtJson
*/
export type CrdtJson = Message<"camino.CrdtJson"> & {
/**
* @generated from field: bytes payload = 1;
*/
payload: Uint8Array;
};
/**
* Describes the message camino.CrdtJson.
* Use `create(CrdtJsonSchema)` to create a new message.
*/
export const CrdtJsonSchema: GenMessage<CrdtJson> = /*@__PURE__*/
messageDesc(file_camino_schema, 8);
/**
* @generated from message camino.ClassSchema
*/
export type ClassSchema = Message<"camino.ClassSchema"> & {
/**
* @generated from field: camino.SymbolRef id = 1;
*/
id?: SymbolRef | undefined;
/** /**
* @generated from field: uint32 version = 2; * @generated from field: string display_name = 2;
*/ */
version: number; displayName: string;
/** /**
* @generated from field: repeated camino.FieldSchema fields = 3; * @generated from field: camino.EndpointConstraint constraint = 3;
*/ */
fields: FieldSchema[]; constraint?: EndpointConstraint | undefined;
/** /**
* @generated from field: repeated camino.EdgeSchema edges = 4; * @generated from field: camino.Cardinality cardinality = 4;
*/
edges: EdgeSchema[];
/**
* @generated from field: repeated camino.MethodSchema methods = 5;
*/
methods: MethodSchema[];
/**
* @generated from field: repeated camino.MigrationSpec migrations = 6;
*/
migrations: MigrationSpec[];
/**
* @generated from field: string source_file = 7;
*/
sourceFile: string;
/**
* @generated from field: string proto_message = 8;
*/
protoMessage: string;
/**
* @generated from field: repeated camino.OperationServiceSchema operation_services = 9;
*/
operationServices: OperationServiceSchema[];
/**
* @generated from field: repeated camino.InterfaceImplementationSchema implements = 10;
*/
implements: InterfaceImplementationSchema[];
/**
* @generated from field: camino.ConstructorSpec constructor = 11;
*/
constructor$?: ConstructorSpec | undefined;
};
/**
* Describes the message camino.ClassSchema.
* Use `create(ClassSchemaSchema)` to create a new message.
*/
export const ClassSchemaSchema: GenMessage<ClassSchema> = /*@__PURE__*/
messageDesc(file_camino_schema, 9);
/**
* @generated from message camino.FieldSchema
*/
export type FieldSchema = Message<"camino.FieldSchema"> & {
/**
* @generated from field: string name = 1;
*/
name: string;
/**
* @generated from field: uint32 tag = 2;
*/
tag: number;
/**
* @generated from field: camino.TypeRef type = 3;
*/
type?: TypeRef | undefined;
/**
* @generated from field: camino.ConflictStrategy conflict = 4;
*/
conflict: ConflictStrategy;
/**
* @generated from field: bool repeated = 5;
*/
repeated: boolean;
/**
* @generated from field: bool optional = 6;
*/
optional: boolean;
/**
* @generated from field: camino.FieldStorage storage = 7;
*/
storage?: FieldStorage | undefined;
/**
* @generated from field: camino.FieldOps ops = 8;
*/
ops?: FieldOps | undefined;
/**
* @generated from field: camino.InterfaceFieldContract interface_contract = 9;
*/
interfaceContract?: InterfaceFieldContract | undefined;
};
/**
* Describes the message camino.FieldSchema.
* Use `create(FieldSchemaSchema)` to create a new message.
*/
export const FieldSchemaSchema: GenMessage<FieldSchema> = /*@__PURE__*/
messageDesc(file_camino_schema, 10);
/**
* @generated from message camino.FieldStorage
*/
export type FieldStorage = Message<"camino.FieldStorage"> & {
/**
* @generated from field: camino.FieldStorageKind kind = 1;
*/
kind: FieldStorageKind;
/**
* @generated from field: quixos.FunctionRef resolver = 2;
*/
resolver?: FunctionRef | undefined;
/**
* @generated from field: bool cache = 3;
*/
cache: boolean;
};
/**
* Describes the message camino.FieldStorage.
* Use `create(FieldStorageSchema)` to create a new message.
*/
export const FieldStorageSchema: GenMessage<FieldStorage> = /*@__PURE__*/
messageDesc(file_camino_schema, 11);
/**
* @generated from message camino.TypeRef
*/
export type TypeRef = Message<"camino.TypeRef"> & {
/**
* @generated from field: string proto_type = 1;
*/
protoType: string;
/**
* @generated from field: camino.SymbolRef symbol = 2;
*/
symbol?: SymbolRef | undefined;
};
/**
* Describes the message camino.TypeRef.
* Use `create(TypeRefSchema)` to create a new message.
*/
export const TypeRefSchema: GenMessage<TypeRef> = /*@__PURE__*/
messageDesc(file_camino_schema, 12);
/**
* @generated from message camino.TypeBinding
*/
export type TypeBinding = Message<"camino.TypeBinding"> & {
/**
* @generated from field: string name = 1;
*/
name: string;
/**
* @generated from field: camino.TypeRef type = 2;
*/
type?: TypeRef | undefined;
};
/**
* Describes the message camino.TypeBinding.
* Use `create(TypeBindingSchema)` to create a new message.
*/
export const TypeBindingSchema: GenMessage<TypeBinding> = /*@__PURE__*/
messageDesc(file_camino_schema, 13);
/**
* @generated from message camino.InterfaceFieldContract
*/
export type InterfaceFieldContract = Message<"camino.InterfaceFieldContract"> & {
/**
* @generated from field: bool required = 1;
*/
required: boolean;
/**
* @generated from field: bool readable = 2;
*/
readable: boolean;
/**
* @generated from field: bool writable = 3;
*/
writable: boolean;
/**
* @generated from field: bool watchable = 4;
*/
watchable: boolean;
/**
* @generated from field: string type_param = 5;
*/
typeParam: string;
/**
* @generated from field: camino.TypeRef type = 6;
*/
type?: TypeRef | undefined;
};
/**
* Describes the message camino.InterfaceFieldContract.
* Use `create(InterfaceFieldContractSchema)` to create a new message.
*/
export const InterfaceFieldContractSchema: GenMessage<InterfaceFieldContract> = /*@__PURE__*/
messageDesc(file_camino_schema, 14);
/**
* @generated from message camino.InterfaceImplementationSchema
*/
export type InterfaceImplementationSchema = Message<"camino.InterfaceImplementationSchema"> & {
/**
* @generated from field: camino.SymbolRef interface = 1;
*/
interface?: SymbolRef | undefined;
/**
* @generated from field: repeated camino.TypeBinding type_bindings = 2;
*/
typeBindings: TypeBinding[];
};
/**
* Describes the message camino.InterfaceImplementationSchema.
* Use `create(InterfaceImplementationSchemaSchema)` to create a new message.
*/
export const InterfaceImplementationSchemaSchema: GenMessage<InterfaceImplementationSchema> = /*@__PURE__*/
messageDesc(file_camino_schema, 15);
/**
* @generated from message camino.InterfaceSchema
*/
export type InterfaceSchema = Message<"camino.InterfaceSchema"> & {
/**
* @generated from field: camino.SymbolRef id = 1;
*/
id?: SymbolRef | undefined;
/**
* @generated from field: uint32 version = 2;
*/
version: number;
/**
* @generated from field: repeated camino.FieldSchema fields = 3;
*/
fields: FieldSchema[];
/**
* @generated from field: string source_file = 4;
*/
sourceFile: string;
/**
* @generated from field: string proto_message = 5;
*/
protoMessage: string;
};
/**
* Describes the message camino.InterfaceSchema.
* Use `create(InterfaceSchemaSchema)` to create a new message.
*/
export const InterfaceSchemaSchema: GenMessage<InterfaceSchema> = /*@__PURE__*/
messageDesc(file_camino_schema, 16);
/**
* @generated from message camino.FieldOps
*/
export type FieldOps = Message<"camino.FieldOps"> & {
/**
* @generated from field: camino.FieldImplementation implementation = 1;
*/
implementation: FieldImplementation;
/**
* @generated from field: string service = 2;
*/
service: string;
};
/**
* Describes the message camino.FieldOps.
* Use `create(FieldOpsSchema)` to create a new message.
*/
export const FieldOpsSchema: GenMessage<FieldOps> = /*@__PURE__*/
messageDesc(file_camino_schema, 17);
/**
* @generated from message camino.EdgeSchema
*/
export type EdgeSchema = Message<"camino.EdgeSchema"> & {
/**
* @generated from field: camino.SymbolRef id = 1;
*/
id?: SymbolRef | undefined;
/**
* @generated from field: string source_field = 2;
*/
sourceField: string;
/**
* @generated from field: camino.SymbolRef from_class = 3;
*/
fromClass?: SymbolRef | undefined;
/**
* @generated from field: camino.SymbolRef to_class = 4;
*/
toClass?: SymbolRef | undefined;
/**
* @generated from field: camino.Cardinality cardinality = 5;
*/ */
cardinality: Cardinality; cardinality: Cardinality;
/** /**
* @generated from field: string inverse = 6; * @generated from field: bool ordered = 5;
*/ */
inverse: string; ordered: boolean;
/**
* @generated from field: repeated camino.FieldSchema fields = 7;
*/
fields: FieldSchema[];
}; };
/** /**
* Describes the message camino.EdgeSchema. * Describes the message camino.EdgeEndpoint.
* Use `create(EdgeSchemaSchema)` to create a new message. * Use `create(EdgeEndpointSchema)` to create a new message.
*/ */
export const EdgeSchemaSchema: GenMessage<EdgeSchema> = /*@__PURE__*/ export const EdgeEndpointSchema: GenMessage<EdgeEndpoint> = /*@__PURE__*/
messageDesc(file_camino_schema, 18); messageDesc(file_camino_schema, 4);
/** /**
* @generated from message camino.MethodSchema * @generated from message camino.EdgeAttachment
*/ */
export type MethodSchema = Message<"camino.MethodSchema"> & { export type EdgeAttachment = Message<"camino.EdgeAttachment"> & {
/** /**
* @generated from field: string name = 1; * @generated from field: string edge_type_id = 1;
*/ */
name: string; edgeTypeId: string;
/** /**
* @generated from field: quixos.FunctionRef function = 2; * @generated from field: string display_name = 2;
*/ */
function?: FunctionRef | undefined; displayName: string;
/**
* @generated from field: camino.EdgeEndpoint first = 3;
*/
first?: EdgeEndpoint | undefined;
/**
* @generated from field: camino.EdgeEndpoint second = 4;
*/
second?: EdgeEndpoint | undefined;
}; };
/** /**
* Describes the message camino.MethodSchema. * Describes the message camino.EdgeAttachment.
* Use `create(MethodSchemaSchema)` to create a new message. * Use `create(EdgeAttachmentSchema)` to create a new message.
*/ */
export const MethodSchemaSchema: GenMessage<MethodSchema> = /*@__PURE__*/ export const EdgeAttachmentSchema: GenMessage<EdgeAttachment> = /*@__PURE__*/
messageDesc(file_camino_schema, 19); messageDesc(file_camino_schema, 5);
/** /**
* @generated from message camino.MigrationSpec * Camino consumes this persistence-only projection of a checked workspace.
* Interfaces, operation bindings, packages, and constructors stay in orch.
*
* @generated from message camino.PersistencePlan
*/ */
export type MigrationSpec = Message<"camino.MigrationSpec"> & { export type PersistencePlan = Message<"camino.PersistencePlan"> & {
/** /**
* @generated from field: uint32 from_version = 1; * @generated from field: string workspace_id = 1;
*/ */
fromVersion: number; workspaceId: string;
/** /**
* @generated from field: uint32 to_version = 2; * @generated from field: string workspace_revision_id = 2;
*/ */
toVersion: number; workspaceRevisionId: string;
/** /**
* @generated from field: quixos.FunctionRef function = 3; * @generated from field: repeated camino.AtomDefinition atoms = 3;
*/ */
function?: FunctionRef | undefined; atoms: AtomDefinition[];
/**
* @generated from field: repeated camino.AtomConformance conformances = 4;
*/
conformances: AtomConformance[];
/**
* @generated from field: repeated camino.StateAttachment states = 5;
*/
states: StateAttachment[];
/**
* @generated from field: repeated camino.EdgeAttachment edges = 6;
*/
edges: EdgeAttachment[];
}; };
/** /**
* Describes the message camino.MigrationSpec. * Describes the message camino.PersistencePlan.
* Use `create(MigrationSpecSchema)` to create a new message. * Use `create(PersistencePlanSchema)` to create a new message.
*/ */
export const MigrationSpecSchema: GenMessage<MigrationSpec> = /*@__PURE__*/ export const PersistencePlanSchema: GenMessage<PersistencePlan> = /*@__PURE__*/
messageDesc(file_camino_schema, 20); messageDesc(file_camino_schema, 6);
/**
* @generated from message camino.ConstructorSpec
*/
export type ConstructorSpec = Message<"camino.ConstructorSpec"> & {
/**
* @generated from field: quixos.FunctionRef function = 1;
*/
function?: FunctionRef | undefined;
};
/**
* Describes the message camino.ConstructorSpec.
* Use `create(ConstructorSpecSchema)` to create a new message.
*/
export const ConstructorSpecSchema: GenMessage<ConstructorSpec> = /*@__PURE__*/
messageDesc(file_camino_schema, 21);
/**
* @generated from message camino.OperationSchema
*/
export type OperationSchema = Message<"camino.OperationSchema"> & {
/**
* @generated from field: string name = 1;
*/
name: string;
/**
* @generated from field: camino.TypeRef input_type = 2;
*/
inputType?: TypeRef | undefined;
/**
* @generated from field: camino.TypeRef output_type = 3;
*/
outputType?: TypeRef | undefined;
/**
* @generated from field: quixos.FunctionRef function = 4;
*/
function?: FunctionRef | undefined;
};
/**
* Describes the message camino.OperationSchema.
* Use `create(OperationSchemaSchema)` to create a new message.
*/
export const OperationSchemaSchema: GenMessage<OperationSchema> = /*@__PURE__*/
messageDesc(file_camino_schema, 22);
/**
* @generated from message camino.OperationServiceSchema
*/
export type OperationServiceSchema = Message<"camino.OperationServiceSchema"> & {
/**
* @generated from field: string name = 1;
*/
name: string;
/**
* @generated from field: string full_name = 2;
*/
fullName: string;
/**
* @generated from field: repeated camino.OperationSchema operations = 3;
*/
operations: OperationSchema[];
};
/**
* Describes the message camino.OperationServiceSchema.
* Use `create(OperationServiceSchemaSchema)` to create a new message.
*/
export const OperationServiceSchemaSchema: GenMessage<OperationServiceSchema> = /*@__PURE__*/
messageDesc(file_camino_schema, 23);
/**
* @generated from message camino.DocRefDeclaration
*/
export type DocRefDeclaration = Message<"camino.DocRefDeclaration"> & {
/**
* @generated from field: string local_name = 1;
*/
localName: string;
/**
* @generated from field: camino.SymbolRef type = 2;
*/
type?: SymbolRef | undefined;
/**
* @generated from field: camino.SymbolRef target_class = 3;
*/
targetClass?: SymbolRef | undefined;
/**
* @generated from field: camino.DocRefStrength strength = 4;
*/
strength: DocRefStrength;
};
/**
* Describes the message camino.DocRefDeclaration.
* Use `create(DocRefDeclarationSchema)` to create a new message.
*/
export const DocRefDeclarationSchema: GenMessage<DocRefDeclaration> = /*@__PURE__*/
messageDesc(file_camino_schema, 24);
/**
* @generated from enum camino.ConflictStrategy
*/
export enum ConflictStrategy {
/**
* @generated from enum value: CONFLICT_STRATEGY_UNSPECIFIED = 0;
*/
CONFLICT_STRATEGY_UNSPECIFIED = 0,
/**
* @generated from enum value: REPLACE = 1;
*/
REPLACE = 1,
/**
* @generated from enum value: PRESERVE_CONFLICTS = 2;
*/
PRESERVE_CONFLICTS = 2,
/**
* @generated from enum value: CRDT = 3;
*/
CRDT = 3,
}
/**
* Describes the enum camino.ConflictStrategy.
*/
export const ConflictStrategySchema: GenEnum<ConflictStrategy> = /*@__PURE__*/
enumDesc(file_camino_schema, 0);
/** /**
* @generated from enum camino.Cardinality * @generated from enum camino.Cardinality
@@ -755,104 +269,11 @@ export enum Cardinality {
* @generated from enum value: MANY_UNIQUE = 4; * @generated from enum value: MANY_UNIQUE = 4;
*/ */
MANY_UNIQUE = 4, MANY_UNIQUE = 4,
/**
* @generated from enum value: MANY_ORDERED = 5;
*/
MANY_ORDERED = 5,
} }
/** /**
* Describes the enum camino.Cardinality. * Describes the enum camino.Cardinality.
*/ */
export const CardinalitySchema: GenEnum<Cardinality> = /*@__PURE__*/ export const CardinalitySchema: GenEnum<Cardinality> = /*@__PURE__*/
enumDesc(file_camino_schema, 1); enumDesc(file_camino_schema, 0);
/**
* @generated from enum camino.DocRefStrength
*/
export enum DocRefStrength {
/**
* @generated from enum value: DOC_REF_STRENGTH_UNSPECIFIED = 0;
*/
DOC_REF_STRENGTH_UNSPECIFIED = 0,
/**
* @generated from enum value: SOFT_REF = 1;
*/
SOFT_REF = 1,
/**
* @generated from enum value: PROJECTED_EDGE = 2;
*/
PROJECTED_EDGE = 2,
}
/**
* Describes the enum camino.DocRefStrength.
*/
export const DocRefStrengthSchema: GenEnum<DocRefStrength> = /*@__PURE__*/
enumDesc(file_camino_schema, 2);
/**
* @generated from enum camino.FieldStorageKind
*/
export enum FieldStorageKind {
/**
* @generated from enum value: FIELD_STORAGE_KIND_UNSPECIFIED = 0;
*/
FIELD_STORAGE_KIND_UNSPECIFIED = 0,
/**
* @generated from enum value: STORED = 1;
*/
STORED = 1,
/**
* @generated from enum value: DERIVED = 2;
*/
DERIVED = 2,
/**
* @generated from enum value: LAZY = 3;
*/
LAZY = 3,
/**
* @generated from enum value: EXTERNAL = 4;
*/
EXTERNAL = 4,
/**
* @generated from enum value: STATIC_FINAL = 5;
*/
STATIC_FINAL = 5,
}
/**
* Describes the enum camino.FieldStorageKind.
*/
export const FieldStorageKindSchema: GenEnum<FieldStorageKind> = /*@__PURE__*/
enumDesc(file_camino_schema, 3);
/**
* @generated from enum camino.FieldImplementation
*/
export enum FieldImplementation {
/**
* @generated from enum value: FIELD_IMPLEMENTATION_UNSPECIFIED = 0;
*/
FIELD_IMPLEMENTATION_UNSPECIFIED = 0,
/**
* @generated from enum value: SERVICE = 1;
*/
SERVICE = 1,
}
/**
* Describes the enum camino.FieldImplementation.
*/
export const FieldImplementationSchema: GenEnum<FieldImplementation> = /*@__PURE__*/
enumDesc(file_camino_schema, 4);
-414
View File
@@ -1,414 +0,0 @@
#!/usr/bin/env node
import fs from "node:fs";
import path from "node:path";
import { compileCaminoSchema } from "./schema-compiler.js";
import type {
ClassSchema,
FieldSchema,
FunctionRef,
InterfaceImplementation,
TypeRef,
} from "./schema-ir.js";
const usage = (): never => {
console.error(
"Usage: camino-codegen-ts-runtime <class-schema.camino.proto> <out-dir> [implementation-import]",
);
process.exit(1);
};
const required = (value: string | undefined) => value ?? usage();
const stringLiteral = (value: string) => JSON.stringify(value);
const upperFirst = (value: string) =>
value.length === 0 ? value : `${value[0]?.toUpperCase()}${value.slice(1)}`;
const lowerFirst = (value: string) =>
value.length === 0 ? value : `${value[0]?.toLowerCase()}${value.slice(1)}`;
const camel = (value: string) =>
value
.split(/[^a-zA-Z0-9]+/)
.filter(Boolean)
.map((part, index) =>
index === 0 ? lowerFirst(part) : upperFirst(lowerFirst(part)),
)
.join("");
const isIdentifier = (value: string) => /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(value);
const classId = (schema: ClassSchema) =>
`${schema.id.namespace}:${schema.id.name}:${schema.id.version}:${
schema.id.hash ?? ""
}`;
const symbolId = (value: { namespace: string; name: string; version: string; hash?: string }) =>
`${value.namespace}:${value.name}:${value.version}:${value.hash ?? ""}`;
const tsTypeForTypeRef = (type: TypeRef): string => {
if (type.enumValues && type.enumValues.length > 0) {
return type.enumValues.map(stringLiteral).join(" | ");
}
switch (type.protoType.replace(/^\./, "")) {
case "string":
case "google.protobuf.StringValue":
return "string";
case "bool":
case "google.protobuf.BoolValue":
return "boolean";
case "double":
case "float":
case "google.protobuf.DoubleValue":
case "google.protobuf.FloatValue":
case "int32":
case "sint32":
case "sfixed32":
case "uint32":
case "fixed32":
case "int64":
case "sint64":
case "sfixed64":
case "uint64":
case "fixed64":
case "google.protobuf.Int32Value":
case "google.protobuf.UInt32Value":
case "google.protobuf.Int64Value":
case "google.protobuf.UInt64Value":
return "number";
case "bytes":
case "google.protobuf.BytesValue":
return "Uint8Array";
default:
return "unknown";
}
};
const tsTypeForField = (field: FieldSchema): string => tsTypeForTypeRef(field.type);
const tsValueTypeForField = (field: FieldSchema) =>
field.repeated ? `${tsTypeForField(field)}[]` : tsTypeForField(field);
const tsFieldApiType = (field: FieldSchema) =>
field.conflict === "crdt"
? `CrdtField<${tsValueTypeForField(field)}>`
: `Field<${tsValueTypeForField(field)}>`;
const functionExportName = (fn: FunctionRef, fallback: string) => {
if (isIdentifier(fn.symbol)) {
return fn.symbol;
}
const fallbackName = camel(fallback);
if (isIdentifier(fallbackName)) {
return fallbackName;
}
throw new Error(`Cannot generate TS export name for function ${fn.symbol}`);
};
const generatedWarning = `// @generated by camino-codegen-ts-runtime. Do not edit.\n`;
type FunctionSpec = {
exportName: string;
symbol: string;
operation?: string;
packageNamespace: string;
packageName: string;
field?: {
name: string;
type: string;
storage: string;
conflict: string;
};
};
const fieldTypeId = (field: FieldSchema) =>
field.type.symbol ? symbolId(field.type.symbol) : field.type.protoType;
const crdtStorageTypeId = (field: FieldSchema) =>
field.type.protoType ||
(field.type.symbol
? `${field.type.symbol.namespace}.${field.type.symbol.name}`
: fieldTypeId(field));
const fieldStorageId = (field: FieldSchema) =>
field.ops && field.storage.kind === "stored" ? "derived" : field.storage.kind;
const interfaceTypeName = (implementation: InterfaceImplementation) =>
`${implementation.interface.name}Ref`;
const renderInterfaceRefTypes = (schema: ClassSchema) =>
schema.implements
.map((implementation) => {
const typeParams = implementation.typeBindings.map((binding) => binding.name);
const generic =
typeParams.length > 0 ? `<${typeParams.join(", ")}>` : "";
const bindings =
typeParams.length > 0
? typeParams
.map((param) => ` readonly ${param}: ${param};`)
.join("\n")
: " readonly value: unknown;";
return `export type ${interfaceTypeName(implementation)}${generic} = ObjectRef<string> & {
readonly $caminoInterfaces: {
readonly ${stringLiteral(symbolId(implementation.interface))}: {
${bindings}
};
};
};`;
})
.join("\n\n");
const interfaceMixins = (schema: ClassSchema) =>
schema.implements.map((implementation) => {
const typeArgs = implementation.typeBindings.map((binding) =>
tsTypeForTypeRef(binding.type),
);
return `${interfaceTypeName(implementation)}${
typeArgs.length > 0 ? `<${typeArgs.join(", ")}>` : ""
}`;
});
const operationFunctionSpecs = (schema: ClassSchema): FunctionSpec[] =>
schema.fields.flatMap((field) => {
const serviceName = field.ops?.service.replace(/^\./, "");
if (!serviceName) {
return [];
}
const service = schema.operationServices.find(
(candidate) => candidate.fullName === serviceName,
);
if (!service) {
throw new Error(
`${schema.id.name}.${field.name} points to missing operation service ${field.ops?.service}`,
);
}
return service.operations.map((operation) => ({
exportName: functionExportName(
operation.function,
`${field.name}_${operation.name}`,
),
symbol: operation.function.symbol,
...(operation.function.operation
? { operation: operation.function.operation }
: {}),
packageNamespace: operation.function.packageNamespace,
packageName: operation.function.packageName,
field: {
name: field.name,
type: fieldTypeId(field),
storage: fieldStorageId(field),
conflict: field.conflict,
},
}));
});
const renderRuntime = (schema: ClassSchema) => {
const className = schema.id.name;
const objectTypeName = `${className}Object`;
const refTypeName = `${className}Ref`;
const contextTypeName = `${className}Context`;
const implementationTypeName = `${className}Implementation`;
const serveName = `serve${className}Runtime`;
const createObjectName = `create${className}Object`;
const interfaceRefTypes = renderInterfaceRefTypes(schema);
const refType =
[ `ObjectRef<${stringLiteral(classId(schema))}>`, ...interfaceMixins(schema)]
.join(" & ");
const edgeFields = new Set(schema.edges.map((edge) => edge.sourceField));
const writableFields = schema.fields.filter(
(field) =>
field.storage.kind === "stored" &&
!field.ops &&
!edgeFields.has(field.name),
);
const functionSpecs = [
...(schema.constructorSpec
? [
{
exportName: functionExportName(
schema.constructorSpec.function,
"constructor",
),
symbol: schema.constructorSpec.function.symbol,
...(schema.constructorSpec.function.operation
? { operation: schema.constructorSpec.function.operation }
: {}),
packageNamespace: schema.constructorSpec.function.packageNamespace,
packageName: schema.constructorSpec.function.packageName,
},
]
: []),
...schema.methods.map((method) => ({
exportName: functionExportName(method.function, method.name),
symbol: method.function.symbol,
...(method.function.operation ? { operation: method.function.operation } : {}),
packageNamespace: method.function.packageNamespace,
packageName: method.function.packageName,
})),
...schema.fields.flatMap((field) =>
field.storage.resolver
? [
{
exportName: functionExportName(field.storage.resolver, field.name),
symbol: field.storage.resolver.symbol,
...(field.storage.resolver.operation
? { operation: field.storage.resolver.operation }
: {}),
packageNamespace: field.storage.resolver.packageNamespace,
packageName: field.storage.resolver.packageName,
},
]
: [],
),
...operationFunctionSpecs(schema),
];
const firstFunction = functionSpecs[0];
if (!firstFunction) {
throw new Error(`${schema.id.name} has no runtime functions to generate`);
}
const mixedPackage = functionSpecs.find(
(spec) =>
spec.packageNamespace !== firstFunction.packageNamespace ||
spec.packageName !== firstFunction.packageName,
);
if (mixedPackage) {
throw new Error(
`${schema.id.name} points to multiple packages; v0 TS runtime generation expects one package`,
);
}
return `${generatedWarning}import {
type CaminoClient,
createCrdtField,
createField,
type CrdtField,
type Field,
type FieldOperation,
type InvokeRequest,
objectRef,
type ObjectRef,
type RuntimeHandler,
serveQuixosPackageRuntime,
} from "@quixos/camino-package-runtime";
${interfaceRefTypes ? `${interfaceRefTypes}\n\n` : ""}export type ${refTypeName} = ${refType};
export type ${objectTypeName} = {
id: ${refTypeName};
${writableFields
.map(
(field) =>
` ${camel(field.name)}: ${tsFieldApiType(field)};`,
)
.join("\n")}
};
export type ${contextTypeName} = {
object: ${objectTypeName};
camino: CaminoClient;
request: InvokeRequest;
};
export type ${implementationTypeName} = {
${functionSpecs
.map((spec) =>
spec.operation
? ` ${spec.exportName}: FieldOperation<${contextTypeName}>;`
: ` ${spec.exportName}: RuntimeHandler<${contextTypeName}>;`,
)
.filter((line, index, lines) => lines.indexOf(line) === index)
.join("\n")}
};
const packageNamespace = ${stringLiteral(firstFunction.packageNamespace)};
const packageName = ${stringLiteral(firstFunction.packageName)};
const runtimeProtocolVersion = ${stringLiteral("camino-orch-v0")};
const functions = [
${functionSpecs
.map(
(spec) =>
` { exportName: ${stringLiteral(spec.exportName)}, symbol: ${stringLiteral(spec.symbol)}${
spec.operation ? `, operation: ${stringLiteral(spec.operation)}` : ""
}${
spec.field
? `, field: { name: ${stringLiteral(spec.field.name)}, type: ${stringLiteral(spec.field.type)}, storage: ${stringLiteral(spec.field.storage)}, conflict: ${stringLiteral(spec.field.conflict)} }`
: ""
} },`,
)
.join("\n")}
] as const;
export const ${createObjectName} = (
camino: CaminoClient,
objectId: string,
): ${objectTypeName} => {
const id = objectRef<${stringLiteral(classId(schema))}>(objectId) as ${refTypeName};
return {
id,
${writableFields
.map(
(fieldSchema) =>
fieldSchema.conflict === "crdt"
? ` ${camel(fieldSchema.name)}: createCrdtField(camino, id, ${stringLiteral(fieldSchema.name)}, ${stringLiteral(crdtStorageTypeId(fieldSchema))}),`
: ` ${camel(fieldSchema.name)}: createField(camino, id, ${stringLiteral(fieldSchema.name)}),`,
)
.join("\n")}
};
};
export const create${className}Context = (
camino: CaminoClient,
request: InvokeRequest,
): ${contextTypeName} => ({
object: ${createObjectName}(camino, request.objectId),
camino,
request,
});
export const ${serveName} = (implementation: ${implementationTypeName}) => {
serveQuixosPackageRuntime({
packageNamespace,
packageName,
runtimeProtocolVersion,
functions,
implementation,
createContext: create${className}Context,
});
};
`;
};
const renderServer = (schema: ClassSchema, implementationImport: string) => {
const className = schema.id.name;
return `${generatedWarning}import * as implementation from ${stringLiteral(implementationImport)};
import { serve${className}Runtime } from "./${schema.id.namespace}.${className}.runtime.js";
serve${className}Runtime(implementation);
`;
};
const main = async () => {
const sourceFile = required(process.argv[2]);
const outDir = required(process.argv[3]);
const implementationImport = process.argv[4] ?? "../task.impl.js";
const compiled = await compileCaminoSchema(sourceFile);
if (compiled.classes.length !== 1) {
throw new Error(
`Expected exactly one Camino class in ${sourceFile}, found ${compiled.classes.length}`,
);
}
const schema = compiled.classes[0];
if (!schema) {
throw new Error(`No Camino class found in ${sourceFile}`);
}
fs.mkdirSync(outDir, { recursive: true });
const baseName = `${schema.id.namespace}.${schema.id.name}`;
fs.writeFileSync(path.join(outDir, `${baseName}.runtime.ts`), renderRuntime(schema));
fs.writeFileSync(
path.join(outDir, `${baseName}.server.ts`),
renderServer(schema, implementationImport),
);
};
await main();
+379 -1025
View File
File diff suppressed because it is too large Load Diff
+630
View File
@@ -0,0 +1,630 @@
// @generated by protoc-gen-es v2.12.1 with parameter "target=ts,import_extension=js"
// @generated from file quixos/orch.proto (package quixos.orch, syntax proto3)
/* eslint-disable */
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
import type { CaminoObject, Value } from "../camino/api_pb.js";
import { file_camino_api } from "../camino/api_pb.js";
import type { PackageDescriptor } from "./package_pb.js";
import { file_quixos_package } from "./package_pb.js";
import type { CapabilityRef, PackageExportRef } from "./refs_pb.js";
import { file_quixos_refs } from "./refs_pb.js";
import type { DerivedDependency } from "./runtime_pb.js";
import { file_quixos_runtime } from "./runtime_pb.js";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file quixos/orch.proto.
*/
export const file_quixos_orch: GenFile = /*@__PURE__*/
fileDesc("ChFxdWl4b3Mvb3JjaC5wcm90bxILcXVpeG9zLm9yY2gipQEKFkNvbnN0cnVjdE9iamVjdFJlcXVlc3QSDwoHYXRvbV9pZBgBIAEoCRI9CgVpbnB1dBgCIAMoCzIuLnF1aXhvcy5vcmNoLkNvbnN0cnVjdE9iamVjdFJlcXVlc3QuSW5wdXRFbnRyeRo7CgpJbnB1dEVudHJ5EgsKA2tleRgBIAEoCRIcCgV2YWx1ZRgCIAEoCzINLmNhbWluby5WYWx1ZToCOAEiPwoXQ29uc3RydWN0T2JqZWN0UmVzcG9uc2USJAoGb2JqZWN0GAEgASgLMhQuY2FtaW5vLkNhbWlub09iamVjdCJtCiZSZXNvbHZlT3JDb25zdHJ1Y3RSZWxhdGVkT2JqZWN0UmVxdWVzdBIRCglvYmplY3RfaWQYASABKAkSHQoVaW50ZXJmYWNlX3JldmlzaW9uX2lkGAIgASgJEhEKCW1lbWJlcl9pZBgDIAEoCSJkCidSZXNvbHZlT3JDb25zdHJ1Y3RSZWxhdGVkT2JqZWN0UmVzcG9uc2USJAoGb2JqZWN0GAEgASgLMhQuY2FtaW5vLkNhbWlub09iamVjdBITCgtjb25zdHJ1Y3RlZBgCIAEoCCLUAQoXSW52b2tlQ2FwYWJpbGl0eVJlcXVlc3QSKQoKY2FwYWJpbGl0eRgBIAEoCzIVLnF1aXhvcy5DYXBhYmlsaXR5UmVmEhEKCW9iamVjdF9pZBgCIAEoCRI+CgVpbnB1dBgDIAMoCzIvLnF1aXhvcy5vcmNoLkludm9rZUNhcGFiaWxpdHlSZXF1ZXN0LklucHV0RW50cnkaOwoKSW5wdXRFbnRyeRILCgNrZXkYASABKAkSHAoFdmFsdWUYAiABKAsyDS5jYW1pbm8uVmFsdWU6AjgBIpgBChhJbnZva2VDYXBhYmlsaXR5UmVzcG9uc2USFQoNaW52b2NhdGlvbl9pZBgBIAEoCRIrCgphY3RpdmF0aW9uGAIgASgLMhcucXVpeG9zLm9yY2guQWN0aXZhdGlvbhIKCgJvaxgDIAEoCBIdCgZyZXN1bHQYBCABKAsyDS5jYW1pbm8uVmFsdWUSDQoFZXJyb3IYBSABKAki0gEKFldhdGNoQ2FwYWJpbGl0eVJlcXVlc3QSKQoKY2FwYWJpbGl0eRgBIAEoCzIVLnF1aXhvcy5DYXBhYmlsaXR5UmVmEhEKCW9iamVjdF9pZBgCIAEoCRI9CgVpbnB1dBgDIAMoCzIuLnF1aXhvcy5vcmNoLldhdGNoQ2FwYWJpbGl0eVJlcXVlc3QuSW5wdXRFbnRyeRo7CgpJbnB1dEVudHJ5EgsKA2tleRgBIAEoCRIcCgV2YWx1ZRgCIAEoCzINLmNhbWluby5WYWx1ZToCOAEi4wEKFFdhdGNoQ2FwYWJpbGl0eUV2ZW50EhUKDWludm9jYXRpb25faWQYASABKAkSKwoKYWN0aXZhdGlvbhgCIAEoCzIXLnF1aXhvcy5vcmNoLkFjdGl2YXRpb24SEAoId2F0Y2hfaWQYAyABKAkSHAoFdmFsdWUYBCABKAsyDS5jYW1pbm8uVmFsdWUSNwoMZGVwZW5kZW5jaWVzGAUgAygLMiEucXVpeG9zLnJ1bnRpbWUuRGVyaXZlZERlcGVuZGVuY3kSDQoFZXJyb3IYBiABKAkSDwoHaW5pdGlhbBgHIAEoCCIVChNHZXRXb3Jrc3BhY2VSZXF1ZXN0ImcKFEdldFdvcmtzcGFjZVJlc3BvbnNlEhQKDHdvcmtzcGFjZV9pZBgBIAEoCRIdChV3b3Jrc3BhY2VfcmV2aXNpb25faWQYAiABKAkSGgoSc291cmNlX3Jvb3RfY29tbWl0GAMgASgJIhgKFkxpc3RBY3RpdmF0aW9uc1JlcXVlc3QiHwodTGlzdFBhY2thZ2VEZXNjcmlwdG9yc1JlcXVlc3QiUAoeTGlzdFBhY2thZ2VEZXNjcmlwdG9yc1Jlc3BvbnNlEi4KC2Rlc2NyaXB0b3JzGAEgAygLMhkucXVpeG9zLlBhY2thZ2VEZXNjcmlwdG9yIhwKGkxpc3RQYWNrYWdlUnVudGltZXNSZXF1ZXN0IlIKG0xpc3RQYWNrYWdlUnVudGltZXNSZXNwb25zZRIzCghydW50aW1lcxgBIAMoCzIhLnF1aXhvcy5vcmNoLlBhY2thZ2VSdW50aW1lU3RhdHVzIkcKF0xpc3RBY3RpdmF0aW9uc1Jlc3BvbnNlEiwKC2FjdGl2YXRpb25zGAEgAygLMhcucXVpeG9zLm9yY2guQWN0aXZhdGlvbiI/ChZDbG9zZUFjdGl2YXRpb25SZXF1ZXN0EhUKDWFjdGl2YXRpb25faWQYASABKAkSDgoGcmVhc29uGAIgASgJIkYKF0Nsb3NlQWN0aXZhdGlvblJlc3BvbnNlEisKCmFjdGl2YXRpb24YASABKAsyFy5xdWl4b3Mub3JjaC5BY3RpdmF0aW9uIusBCgpBY3RpdmF0aW9uEhUKDWFjdGl2YXRpb25faWQYASABKAkSKAoGZXhwb3J0GAIgASgLMhgucXVpeG9zLlBhY2thZ2VFeHBvcnRSZWYSEQoJb2JqZWN0X2lkGAMgASgJEg0KBXN0YXRlGAQgASgJEg4KBmRlbWFuZBgFIAEoDRIRCglvcGVuZWRfYXQYBiABKAkSFAoMbGFzdF91c2VkX2F0GAcgASgJEhgKEGlkbGVfZGVhZGxpbmVfYXQYCCABKAkSEQoJY2xvc2VkX2F0GAkgASgJEhQKDGNsb3NlX3JlYXNvbhgKIAEoCSKzAgoUUGFja2FnZVJ1bnRpbWVTdGF0dXMSEwoLcnVudGltZV9rZXkYASABKAkSGwoTcGFja2FnZV9yZXZpc2lvbl9pZBgCIAEoCRIZChFzb3VyY2VfcmVwb3NpdG9yeRgDIAEoCRIVCg1zb3VyY2VfY29tbWl0GAQgASgJEhQKDGJ1aWxkX3RhcmdldBgFIAEoCRITCgtzZXJ2ZXJfcGF0aBgGIAEoCRILCgNwaWQYByABKA0SDQoFc3RhdGUYCCABKAkSEgoKc3RhcnRlZF9hdBgJIAEoCRIZChFsYXN0X2hhbmRzaGFrZV9hdBgKIAEoCRIgChhydW50aW1lX3Byb3RvY29sX3ZlcnNpb24YCyABKAkSHwoXYWR2ZXJ0aXNlZF9leHBvcnRfY291bnQYDCABKA0yrgcKE09yY2hlc3RyYXRvclJ1bnRpbWUSXwoQSW52b2tlQ2FwYWJpbGl0eRIkLnF1aXhvcy5vcmNoLkludm9rZUNhcGFiaWxpdHlSZXF1ZXN0GiUucXVpeG9zLm9yY2guSW52b2tlQ2FwYWJpbGl0eVJlc3BvbnNlElsKD1dhdGNoQ2FwYWJpbGl0eRIjLnF1aXhvcy5vcmNoLldhdGNoQ2FwYWJpbGl0eVJlcXVlc3QaIS5xdWl4b3Mub3JjaC5XYXRjaENhcGFiaWxpdHlFdmVudDABElwKD0NvbnN0cnVjdE9iamVjdBIjLnF1aXhvcy5vcmNoLkNvbnN0cnVjdE9iamVjdFJlcXVlc3QaJC5xdWl4b3Mub3JjaC5Db25zdHJ1Y3RPYmplY3RSZXNwb25zZRKMAQofUmVzb2x2ZU9yQ29uc3RydWN0UmVsYXRlZE9iamVjdBIzLnF1aXhvcy5vcmNoLlJlc29sdmVPckNvbnN0cnVjdFJlbGF0ZWRPYmplY3RSZXF1ZXN0GjQucXVpeG9zLm9yY2guUmVzb2x2ZU9yQ29uc3RydWN0UmVsYXRlZE9iamVjdFJlc3BvbnNlElMKDEdldFdvcmtzcGFjZRIgLnF1aXhvcy5vcmNoLkdldFdvcmtzcGFjZVJlcXVlc3QaIS5xdWl4b3Mub3JjaC5HZXRXb3Jrc3BhY2VSZXNwb25zZRJxChZMaXN0UGFja2FnZURlc2NyaXB0b3JzEioucXVpeG9zLm9yY2guTGlzdFBhY2thZ2VEZXNjcmlwdG9yc1JlcXVlc3QaKy5xdWl4b3Mub3JjaC5MaXN0UGFja2FnZURlc2NyaXB0b3JzUmVzcG9uc2USaAoTTGlzdFBhY2thZ2VSdW50aW1lcxInLnF1aXhvcy5vcmNoLkxpc3RQYWNrYWdlUnVudGltZXNSZXF1ZXN0GigucXVpeG9zLm9yY2guTGlzdFBhY2thZ2VSdW50aW1lc1Jlc3BvbnNlElwKD0xpc3RBY3RpdmF0aW9ucxIjLnF1aXhvcy5vcmNoLkxpc3RBY3RpdmF0aW9uc1JlcXVlc3QaJC5xdWl4b3Mub3JjaC5MaXN0QWN0aXZhdGlvbnNSZXNwb25zZRJcCg9DbG9zZUFjdGl2YXRpb24SIy5xdWl4b3Mub3JjaC5DbG9zZUFjdGl2YXRpb25SZXF1ZXN0GiQucXVpeG9zLm9yY2guQ2xvc2VBY3RpdmF0aW9uUmVzcG9uc2ViBnByb3RvMw", [file_camino_api, file_quixos_package, file_quixos_refs, file_quixos_runtime]);
/**
* @generated from message quixos.orch.ConstructObjectRequest
*/
export type ConstructObjectRequest = Message<"quixos.orch.ConstructObjectRequest"> & {
/**
* @generated from field: string atom_id = 1;
*/
atomId: string;
/**
* @generated from field: map<string, camino.Value> input = 2;
*/
input: { [key: string]: Value };
};
/**
* Describes the message quixos.orch.ConstructObjectRequest.
* Use `create(ConstructObjectRequestSchema)` to create a new message.
*/
export const ConstructObjectRequestSchema: GenMessage<ConstructObjectRequest> = /*@__PURE__*/
messageDesc(file_quixos_orch, 0);
/**
* @generated from message quixos.orch.ConstructObjectResponse
*/
export type ConstructObjectResponse = Message<"quixos.orch.ConstructObjectResponse"> & {
/**
* @generated from field: camino.CaminoObject object = 1;
*/
object?: CaminoObject | undefined;
};
/**
* Describes the message quixos.orch.ConstructObjectResponse.
* Use `create(ConstructObjectResponseSchema)` to create a new message.
*/
export const ConstructObjectResponseSchema: GenMessage<ConstructObjectResponse> = /*@__PURE__*/
messageDesc(file_quixos_orch, 1);
/**
* @generated from message quixos.orch.ResolveOrConstructRelatedObjectRequest
*/
export type ResolveOrConstructRelatedObjectRequest = Message<"quixos.orch.ResolveOrConstructRelatedObjectRequest"> & {
/**
* @generated from field: string object_id = 1;
*/
objectId: string;
/**
* @generated from field: string interface_revision_id = 2;
*/
interfaceRevisionId: string;
/**
* @generated from field: string member_id = 3;
*/
memberId: string;
};
/**
* Describes the message quixos.orch.ResolveOrConstructRelatedObjectRequest.
* Use `create(ResolveOrConstructRelatedObjectRequestSchema)` to create a new message.
*/
export const ResolveOrConstructRelatedObjectRequestSchema: GenMessage<ResolveOrConstructRelatedObjectRequest> = /*@__PURE__*/
messageDesc(file_quixos_orch, 2);
/**
* @generated from message quixos.orch.ResolveOrConstructRelatedObjectResponse
*/
export type ResolveOrConstructRelatedObjectResponse = Message<"quixos.orch.ResolveOrConstructRelatedObjectResponse"> & {
/**
* @generated from field: camino.CaminoObject object = 1;
*/
object?: CaminoObject | undefined;
/**
* @generated from field: bool constructed = 2;
*/
constructed: boolean;
};
/**
* Describes the message quixos.orch.ResolveOrConstructRelatedObjectResponse.
* Use `create(ResolveOrConstructRelatedObjectResponseSchema)` to create a new message.
*/
export const ResolveOrConstructRelatedObjectResponseSchema: GenMessage<ResolveOrConstructRelatedObjectResponse> = /*@__PURE__*/
messageDesc(file_quixos_orch, 3);
/**
* @generated from message quixos.orch.InvokeCapabilityRequest
*/
export type InvokeCapabilityRequest = Message<"quixos.orch.InvokeCapabilityRequest"> & {
/**
* @generated from field: quixos.CapabilityRef capability = 1;
*/
capability?: CapabilityRef | undefined;
/**
* @generated from field: string object_id = 2;
*/
objectId: string;
/**
* @generated from field: map<string, camino.Value> input = 3;
*/
input: { [key: string]: Value };
};
/**
* Describes the message quixos.orch.InvokeCapabilityRequest.
* Use `create(InvokeCapabilityRequestSchema)` to create a new message.
*/
export const InvokeCapabilityRequestSchema: GenMessage<InvokeCapabilityRequest> = /*@__PURE__*/
messageDesc(file_quixos_orch, 4);
/**
* @generated from message quixos.orch.InvokeCapabilityResponse
*/
export type InvokeCapabilityResponse = Message<"quixos.orch.InvokeCapabilityResponse"> & {
/**
* @generated from field: string invocation_id = 1;
*/
invocationId: string;
/**
* @generated from field: quixos.orch.Activation activation = 2;
*/
activation?: Activation | undefined;
/**
* @generated from field: bool ok = 3;
*/
ok: boolean;
/**
* @generated from field: camino.Value result = 4;
*/
result?: Value | undefined;
/**
* @generated from field: string error = 5;
*/
error: string;
};
/**
* Describes the message quixos.orch.InvokeCapabilityResponse.
* Use `create(InvokeCapabilityResponseSchema)` to create a new message.
*/
export const InvokeCapabilityResponseSchema: GenMessage<InvokeCapabilityResponse> = /*@__PURE__*/
messageDesc(file_quixos_orch, 5);
/**
* @generated from message quixos.orch.WatchCapabilityRequest
*/
export type WatchCapabilityRequest = Message<"quixos.orch.WatchCapabilityRequest"> & {
/**
* @generated from field: quixos.CapabilityRef capability = 1;
*/
capability?: CapabilityRef | undefined;
/**
* @generated from field: string object_id = 2;
*/
objectId: string;
/**
* @generated from field: map<string, camino.Value> input = 3;
*/
input: { [key: string]: Value };
};
/**
* Describes the message quixos.orch.WatchCapabilityRequest.
* Use `create(WatchCapabilityRequestSchema)` to create a new message.
*/
export const WatchCapabilityRequestSchema: GenMessage<WatchCapabilityRequest> = /*@__PURE__*/
messageDesc(file_quixos_orch, 6);
/**
* @generated from message quixos.orch.WatchCapabilityEvent
*/
export type WatchCapabilityEvent = Message<"quixos.orch.WatchCapabilityEvent"> & {
/**
* @generated from field: string invocation_id = 1;
*/
invocationId: string;
/**
* @generated from field: quixos.orch.Activation activation = 2;
*/
activation?: Activation | undefined;
/**
* @generated from field: string watch_id = 3;
*/
watchId: string;
/**
* @generated from field: camino.Value value = 4;
*/
value?: Value | undefined;
/**
* @generated from field: repeated quixos.runtime.DerivedDependency dependencies = 5;
*/
dependencies: DerivedDependency[];
/**
* @generated from field: string error = 6;
*/
error: string;
/**
* @generated from field: bool initial = 7;
*/
initial: boolean;
};
/**
* Describes the message quixos.orch.WatchCapabilityEvent.
* Use `create(WatchCapabilityEventSchema)` to create a new message.
*/
export const WatchCapabilityEventSchema: GenMessage<WatchCapabilityEvent> = /*@__PURE__*/
messageDesc(file_quixos_orch, 7);
/**
* @generated from message quixos.orch.GetWorkspaceRequest
*/
export type GetWorkspaceRequest = Message<"quixos.orch.GetWorkspaceRequest"> & {
};
/**
* Describes the message quixos.orch.GetWorkspaceRequest.
* Use `create(GetWorkspaceRequestSchema)` to create a new message.
*/
export const GetWorkspaceRequestSchema: GenMessage<GetWorkspaceRequest> = /*@__PURE__*/
messageDesc(file_quixos_orch, 8);
/**
* @generated from message quixos.orch.GetWorkspaceResponse
*/
export type GetWorkspaceResponse = Message<"quixos.orch.GetWorkspaceResponse"> & {
/**
* @generated from field: string workspace_id = 1;
*/
workspaceId: string;
/**
* @generated from field: string workspace_revision_id = 2;
*/
workspaceRevisionId: string;
/**
* @generated from field: string source_root_commit = 3;
*/
sourceRootCommit: string;
};
/**
* Describes the message quixos.orch.GetWorkspaceResponse.
* Use `create(GetWorkspaceResponseSchema)` to create a new message.
*/
export const GetWorkspaceResponseSchema: GenMessage<GetWorkspaceResponse> = /*@__PURE__*/
messageDesc(file_quixos_orch, 9);
/**
* @generated from message quixos.orch.ListActivationsRequest
*/
export type ListActivationsRequest = Message<"quixos.orch.ListActivationsRequest"> & {
};
/**
* Describes the message quixos.orch.ListActivationsRequest.
* Use `create(ListActivationsRequestSchema)` to create a new message.
*/
export const ListActivationsRequestSchema: GenMessage<ListActivationsRequest> = /*@__PURE__*/
messageDesc(file_quixos_orch, 10);
/**
* @generated from message quixos.orch.ListPackageDescriptorsRequest
*/
export type ListPackageDescriptorsRequest = Message<"quixos.orch.ListPackageDescriptorsRequest"> & {
};
/**
* Describes the message quixos.orch.ListPackageDescriptorsRequest.
* Use `create(ListPackageDescriptorsRequestSchema)` to create a new message.
*/
export const ListPackageDescriptorsRequestSchema: GenMessage<ListPackageDescriptorsRequest> = /*@__PURE__*/
messageDesc(file_quixos_orch, 11);
/**
* @generated from message quixos.orch.ListPackageDescriptorsResponse
*/
export type ListPackageDescriptorsResponse = Message<"quixos.orch.ListPackageDescriptorsResponse"> & {
/**
* @generated from field: repeated quixos.PackageDescriptor descriptors = 1;
*/
descriptors: PackageDescriptor[];
};
/**
* Describes the message quixos.orch.ListPackageDescriptorsResponse.
* Use `create(ListPackageDescriptorsResponseSchema)` to create a new message.
*/
export const ListPackageDescriptorsResponseSchema: GenMessage<ListPackageDescriptorsResponse> = /*@__PURE__*/
messageDesc(file_quixos_orch, 12);
/**
* @generated from message quixos.orch.ListPackageRuntimesRequest
*/
export type ListPackageRuntimesRequest = Message<"quixos.orch.ListPackageRuntimesRequest"> & {
};
/**
* Describes the message quixos.orch.ListPackageRuntimesRequest.
* Use `create(ListPackageRuntimesRequestSchema)` to create a new message.
*/
export const ListPackageRuntimesRequestSchema: GenMessage<ListPackageRuntimesRequest> = /*@__PURE__*/
messageDesc(file_quixos_orch, 13);
/**
* @generated from message quixos.orch.ListPackageRuntimesResponse
*/
export type ListPackageRuntimesResponse = Message<"quixos.orch.ListPackageRuntimesResponse"> & {
/**
* @generated from field: repeated quixos.orch.PackageRuntimeStatus runtimes = 1;
*/
runtimes: PackageRuntimeStatus[];
};
/**
* Describes the message quixos.orch.ListPackageRuntimesResponse.
* Use `create(ListPackageRuntimesResponseSchema)` to create a new message.
*/
export const ListPackageRuntimesResponseSchema: GenMessage<ListPackageRuntimesResponse> = /*@__PURE__*/
messageDesc(file_quixos_orch, 14);
/**
* @generated from message quixos.orch.ListActivationsResponse
*/
export type ListActivationsResponse = Message<"quixos.orch.ListActivationsResponse"> & {
/**
* @generated from field: repeated quixos.orch.Activation activations = 1;
*/
activations: Activation[];
};
/**
* Describes the message quixos.orch.ListActivationsResponse.
* Use `create(ListActivationsResponseSchema)` to create a new message.
*/
export const ListActivationsResponseSchema: GenMessage<ListActivationsResponse> = /*@__PURE__*/
messageDesc(file_quixos_orch, 15);
/**
* @generated from message quixos.orch.CloseActivationRequest
*/
export type CloseActivationRequest = Message<"quixos.orch.CloseActivationRequest"> & {
/**
* @generated from field: string activation_id = 1;
*/
activationId: string;
/**
* @generated from field: string reason = 2;
*/
reason: string;
};
/**
* Describes the message quixos.orch.CloseActivationRequest.
* Use `create(CloseActivationRequestSchema)` to create a new message.
*/
export const CloseActivationRequestSchema: GenMessage<CloseActivationRequest> = /*@__PURE__*/
messageDesc(file_quixos_orch, 16);
/**
* @generated from message quixos.orch.CloseActivationResponse
*/
export type CloseActivationResponse = Message<"quixos.orch.CloseActivationResponse"> & {
/**
* @generated from field: quixos.orch.Activation activation = 1;
*/
activation?: Activation | undefined;
};
/**
* Describes the message quixos.orch.CloseActivationResponse.
* Use `create(CloseActivationResponseSchema)` to create a new message.
*/
export const CloseActivationResponseSchema: GenMessage<CloseActivationResponse> = /*@__PURE__*/
messageDesc(file_quixos_orch, 17);
/**
* @generated from message quixos.orch.Activation
*/
export type Activation = Message<"quixos.orch.Activation"> & {
/**
* @generated from field: string activation_id = 1;
*/
activationId: string;
/**
* @generated from field: quixos.PackageExportRef export = 2;
*/
export?: PackageExportRef | undefined;
/**
* @generated from field: string object_id = 3;
*/
objectId: string;
/**
* @generated from field: string state = 4;
*/
state: string;
/**
* @generated from field: uint32 demand = 5;
*/
demand: number;
/**
* @generated from field: string opened_at = 6;
*/
openedAt: string;
/**
* @generated from field: string last_used_at = 7;
*/
lastUsedAt: string;
/**
* @generated from field: string idle_deadline_at = 8;
*/
idleDeadlineAt: string;
/**
* @generated from field: string closed_at = 9;
*/
closedAt: string;
/**
* @generated from field: string close_reason = 10;
*/
closeReason: string;
};
/**
* Describes the message quixos.orch.Activation.
* Use `create(ActivationSchema)` to create a new message.
*/
export const ActivationSchema: GenMessage<Activation> = /*@__PURE__*/
messageDesc(file_quixos_orch, 18);
/**
* @generated from message quixos.orch.PackageRuntimeStatus
*/
export type PackageRuntimeStatus = Message<"quixos.orch.PackageRuntimeStatus"> & {
/**
* @generated from field: string runtime_key = 1;
*/
runtimeKey: string;
/**
* @generated from field: string package_revision_id = 2;
*/
packageRevisionId: string;
/**
* @generated from field: string source_repository = 3;
*/
sourceRepository: string;
/**
* @generated from field: string source_commit = 4;
*/
sourceCommit: string;
/**
* @generated from field: string build_target = 5;
*/
buildTarget: string;
/**
* @generated from field: string server_path = 6;
*/
serverPath: string;
/**
* @generated from field: uint32 pid = 7;
*/
pid: number;
/**
* @generated from field: string state = 8;
*/
state: string;
/**
* @generated from field: string started_at = 9;
*/
startedAt: string;
/**
* @generated from field: string last_handshake_at = 10;
*/
lastHandshakeAt: string;
/**
* @generated from field: string runtime_protocol_version = 11;
*/
runtimeProtocolVersion: string;
/**
* @generated from field: uint32 advertised_export_count = 12;
*/
advertisedExportCount: number;
};
/**
* Describes the message quixos.orch.PackageRuntimeStatus.
* Use `create(PackageRuntimeStatusSchema)` to create a new message.
*/
export const PackageRuntimeStatusSchema: GenMessage<PackageRuntimeStatus> = /*@__PURE__*/
messageDesc(file_quixos_orch, 19);
/**
* @generated from service quixos.orch.OrchestratorRuntime
*/
export const OrchestratorRuntime: GenService<{
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.InvokeCapability
*/
invokeCapability: {
methodKind: "unary";
input: typeof InvokeCapabilityRequestSchema;
output: typeof InvokeCapabilityResponseSchema;
},
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.WatchCapability
*/
watchCapability: {
methodKind: "server_streaming";
input: typeof WatchCapabilityRequestSchema;
output: typeof WatchCapabilityEventSchema;
},
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.ConstructObject
*/
constructObject: {
methodKind: "unary";
input: typeof ConstructObjectRequestSchema;
output: typeof ConstructObjectResponseSchema;
},
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.ResolveOrConstructRelatedObject
*/
resolveOrConstructRelatedObject: {
methodKind: "unary";
input: typeof ResolveOrConstructRelatedObjectRequestSchema;
output: typeof ResolveOrConstructRelatedObjectResponseSchema;
},
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.GetWorkspace
*/
getWorkspace: {
methodKind: "unary";
input: typeof GetWorkspaceRequestSchema;
output: typeof GetWorkspaceResponseSchema;
},
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.ListPackageDescriptors
*/
listPackageDescriptors: {
methodKind: "unary";
input: typeof ListPackageDescriptorsRequestSchema;
output: typeof ListPackageDescriptorsResponseSchema;
},
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.ListPackageRuntimes
*/
listPackageRuntimes: {
methodKind: "unary";
input: typeof ListPackageRuntimesRequestSchema;
output: typeof ListPackageRuntimesResponseSchema;
},
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.ListActivations
*/
listActivations: {
methodKind: "unary";
input: typeof ListActivationsRequestSchema;
output: typeof ListActivationsResponseSchema;
},
/**
* @generated from rpc quixos.orch.OrchestratorRuntime.CloseActivation
*/
closeActivation: {
methodKind: "unary";
input: typeof CloseActivationRequestSchema;
output: typeof CloseActivationResponseSchema;
},
}> = /*@__PURE__*/
serviceDesc(file_quixos_orch, 0);
+68
View File
@@ -0,0 +1,68 @@
// @generated by protoc-gen-es v2.12.1 with parameter "target=ts,import_extension=js"
// @generated from file quixos/package.proto (package quixos, syntax proto3)
/* eslint-disable */
import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file quixos/package.proto.
*/
export const file_quixos_package: GenFile = /*@__PURE__*/
fileDesc("ChRxdWl4b3MvcGFja2FnZS5wcm90bxIGcXVpeG9zIo4BChFQYWNrYWdlRGVzY3JpcHRvchISCgpwYWNrYWdlX2lkGAEgASgJEhsKE3BhY2thZ2VfcmV2aXNpb25faWQYAiABKAkSIAoYcnVudGltZV9wcm90b2NvbF92ZXJzaW9uGAMgASgJEiYKB2V4cG9ydHMYBCADKAsyFS5xdWl4b3MuUnVudGltZUV4cG9ydCI6Cg1SdW50aW1lRXhwb3J0EhEKCWV4cG9ydF9pZBgBIAEoCRIWCg5ydW50aW1lX3N5bWJvbBgCIAEoCWIGcHJvdG8z");
/**
* @generated from message quixos.PackageDescriptor
*/
export type PackageDescriptor = Message<"quixos.PackageDescriptor"> & {
/**
* @generated from field: string package_id = 1;
*/
packageId: string;
/**
* @generated from field: string package_revision_id = 2;
*/
packageRevisionId: string;
/**
* @generated from field: string runtime_protocol_version = 3;
*/
runtimeProtocolVersion: string;
/**
* @generated from field: repeated quixos.RuntimeExport exports = 4;
*/
exports: RuntimeExport[];
};
/**
* Describes the message quixos.PackageDescriptor.
* Use `create(PackageDescriptorSchema)` to create a new message.
*/
export const PackageDescriptorSchema: GenMessage<PackageDescriptor> = /*@__PURE__*/
messageDesc(file_quixos_package, 0);
/**
* @generated from message quixos.RuntimeExport
*/
export type RuntimeExport = Message<"quixos.RuntimeExport"> & {
/**
* @generated from field: string export_id = 1;
*/
exportId: string;
/**
* @generated from field: string runtime_symbol = 2;
*/
runtimeSymbol: string;
};
/**
* Describes the message quixos.RuntimeExport.
* Use `create(RuntimeExportSchema)` to create a new message.
*/
export const RuntimeExportSchema: GenMessage<RuntimeExport> = /*@__PURE__*/
messageDesc(file_quixos_package, 1);
+108 -25
View File
@@ -10,42 +10,125 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file quixos/refs.proto. * Describes the file quixos/refs.proto.
*/ */
export const file_quixos_refs: GenFile = /*@__PURE__*/ export const file_quixos_refs: GenFile = /*@__PURE__*/
fileDesc("ChFxdWl4b3MvcmVmcy5wcm90bxIGcXVpeG9zInYKC0Z1bmN0aW9uUmVmEhkKEXBhY2thZ2VfbmFtZXNwYWNlGAEgASgJEhQKDHBhY2thZ2VfbmFtZRgCIAEoCRIOCgZzeW1ib2wYAyABKAkSEwoLdmVyc2lvbl9yZWYYBCABKAkSEQoJb3BlcmF0aW9uGAUgASgJYgZwcm90bzM"); fileDesc("ChFxdWl4b3MvcmVmcy5wcm90bxIGcXVpeG9zIkQKDUNhcGFiaWxpdHlSZWYSHQoVaW50ZXJmYWNlX3JldmlzaW9uX2lkGAEgASgJEhQKDG9wZXJhdGlvbl9pZBgCIAEoCSJCChBQYWNrYWdlRXhwb3J0UmVmEhsKE3BhY2thZ2VfcmV2aXNpb25faWQYASABKAkSEQoJZXhwb3J0X2lkGAIgASgJIs0BChJJbmplY3RlZERlcGVuZGVuY3kSDwoHcG9ydF9pZBgBIAEoCRIXCg1zdGF0ZV9zbG90X2lkGAIgASgJSAASJgoEZWRnZRgDIAEoCzIWLnF1aXhvcy5FZGdlRGVwZW5kZW5jeUgAEigKHnJlY2VpdmVyX2ludGVyZmFjZV9yZXZpc2lvbl9pZBgEIAEoCUgAEh0KE2NvbnN0cnVjdG9yX2F0b21faWQYBSABKAlIABIRCglvYmplY3RfaWQYBiABKAlCCQoHYmluZGluZyI9Cg5FZGdlRGVwZW5kZW5jeRIUCgxlZGdlX3R5cGVfaWQYASABKAkSFQoNcHJvamVjdGlvbl9pZBgCIAEoCWIGcHJvdG8z");
/** /**
* @generated from message quixos.FunctionRef * @generated from message quixos.CapabilityRef
*/ */
export type FunctionRef = Message<"quixos.FunctionRef"> & { export type CapabilityRef = Message<"quixos.CapabilityRef"> & {
/** /**
* @generated from field: string package_namespace = 1; * @generated from field: string interface_revision_id = 1;
*/ */
packageNamespace: string; interfaceRevisionId: string;
/** /**
* @generated from field: string package_name = 2; * @generated from field: string operation_id = 2;
*/ */
packageName: string; operationId: string;
/**
* @generated from field: string symbol = 3;
*/
symbol: string;
/**
* @generated from field: string version_ref = 4;
*/
versionRef: string;
/**
* @generated from field: string operation = 5;
*/
operation: string;
}; };
/** /**
* Describes the message quixos.FunctionRef. * Describes the message quixos.CapabilityRef.
* Use `create(FunctionRefSchema)` to create a new message. * Use `create(CapabilityRefSchema)` to create a new message.
*/ */
export const FunctionRefSchema: GenMessage<FunctionRef> = /*@__PURE__*/ export const CapabilityRefSchema: GenMessage<CapabilityRef> = /*@__PURE__*/
messageDesc(file_quixos_refs, 0); messageDesc(file_quixos_refs, 0);
/**
* @generated from message quixos.PackageExportRef
*/
export type PackageExportRef = Message<"quixos.PackageExportRef"> & {
/**
* @generated from field: string package_revision_id = 1;
*/
packageRevisionId: string;
/**
* @generated from field: string export_id = 2;
*/
exportId: string;
};
/**
* Describes the message quixos.PackageExportRef.
* Use `create(PackageExportRefSchema)` to create a new message.
*/
export const PackageExportRefSchema: GenMessage<PackageExportRef> = /*@__PURE__*/
messageDesc(file_quixos_refs, 1);
/**
* @generated from message quixos.InjectedDependency
*/
export type InjectedDependency = Message<"quixos.InjectedDependency"> & {
/**
* @generated from field: string port_id = 1;
*/
portId: string;
/**
* @generated from oneof quixos.InjectedDependency.binding
*/
binding: {
/**
* @generated from field: string state_slot_id = 2;
*/
value: string;
case: "stateSlotId";
} | {
/**
* @generated from field: quixos.EdgeDependency edge = 3;
*/
value: EdgeDependency;
case: "edge";
} | {
/**
* @generated from field: string receiver_interface_revision_id = 4;
*/
value: string;
case: "receiverInterfaceRevisionId";
} | {
/**
* @generated from field: string constructor_atom_id = 5;
*/
value: string;
case: "constructorAtomId";
} | { case: undefined; value?: undefined };
/**
* Defaults to the invocation receiver. A checked dependency traversal can
* select a related object explicitly before the package runtime starts.
*
* @generated from field: string object_id = 6;
*/
objectId: string;
};
/**
* Describes the message quixos.InjectedDependency.
* Use `create(InjectedDependencySchema)` to create a new message.
*/
export const InjectedDependencySchema: GenMessage<InjectedDependency> = /*@__PURE__*/
messageDesc(file_quixos_refs, 2);
/**
* @generated from message quixos.EdgeDependency
*/
export type EdgeDependency = Message<"quixos.EdgeDependency"> & {
/**
* @generated from field: string edge_type_id = 1;
*/
edgeTypeId: string;
/**
* @generated from field: string projection_id = 2;
*/
projectionId: string;
};
/**
* Describes the message quixos.EdgeDependency.
* Use `create(EdgeDependencySchema)` to create a new message.
*/
export const EdgeDependencySchema: GenMessage<EdgeDependency> = /*@__PURE__*/
messageDesc(file_quixos_refs, 3);
+25 -20
View File
@@ -6,7 +6,7 @@ import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegen
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
import type { Value } from "../camino/api_pb.js"; import type { Value } from "../camino/api_pb.js";
import { file_camino_api } from "../camino/api_pb.js"; import { file_camino_api } from "../camino/api_pb.js";
import type { FunctionRef } from "./refs_pb.js"; import type { InjectedDependency, PackageExportRef } from "./refs_pb.js";
import { file_quixos_refs } from "./refs_pb.js"; import { file_quixos_refs } from "./refs_pb.js";
import type { Message } from "@bufbuild/protobuf"; import type { Message } from "@bufbuild/protobuf";
@@ -14,7 +14,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file quixos/runtime.proto. * Describes the file quixos/runtime.proto.
*/ */
export const file_quixos_runtime: GenFile = /*@__PURE__*/ export const file_quixos_runtime: GenFile = /*@__PURE__*/
fileDesc("ChRxdWl4b3MvcnVudGltZS5wcm90bxIOcXVpeG9zLnJ1bnRpbWUiMQoQSGFuZHNoYWtlUmVxdWVzdBIdChVvcmNoX3Byb3RvY29sX3ZlcnNpb24YASABKAkijgEKEUhhbmRzaGFrZVJlc3BvbnNlEhkKEXBhY2thZ2VfbmFtZXNwYWNlGAEgASgJEhQKDHBhY2thZ2VfbmFtZRgCIAEoCRIgChhydW50aW1lX3Byb3RvY29sX3ZlcnNpb24YAyABKAkSJgoJZnVuY3Rpb25zGAQgAygLMhMucXVpeG9zLkZ1bmN0aW9uUmVmItYBCg1JbnZva2VSZXF1ZXN0EhUKDWludm9jYXRpb25faWQYASABKAkSJQoIZnVuY3Rpb24YAiABKAsyEy5xdWl4b3MuRnVuY3Rpb25SZWYSEQoJb2JqZWN0X2lkGAMgASgJEjcKBWlucHV0GAQgAygLMigucXVpeG9zLnJ1bnRpbWUuSW52b2tlUmVxdWVzdC5JbnB1dEVudHJ5GjsKCklucHV0RW50cnkSCwoDa2V5GAEgASgJEhwKBXZhbHVlGAIgASgLMg0uY2FtaW5vLlZhbHVlOgI4ASJKCg5JbnZva2VSZXNwb25zZRIKCgJvaxgBIAEoCBIdCgZyZXN1bHQYAiABKAsyDS5jYW1pbm8uVmFsdWUSDQoFZXJyb3IYAyABKAki1AEKDFdhdGNoUmVxdWVzdBIVCg1pbnZvY2F0aW9uX2lkGAEgASgJEiUKCGZ1bmN0aW9uGAIgASgLMhMucXVpeG9zLkZ1bmN0aW9uUmVmEhEKCW9iamVjdF9pZBgDIAEoCRI2CgVpbnB1dBgEIAMoCzInLnF1aXhvcy5ydW50aW1lLldhdGNoUmVxdWVzdC5JbnB1dEVudHJ5GjsKCklucHV0RW50cnkSCwoDa2V5GAEgASgJEhwKBXZhbHVlGAIgASgLMg0uY2FtaW5vLlZhbHVlOgI4ASJeChFEZXJpdmVkRGVwZW5kZW5jeRIMCgRraW5kGAEgASgJEhEKCW9iamVjdF9pZBgCIAEoCRISCgpmaWVsZF9uYW1lGAMgASgJEhQKDHNvdXJjZV9maWVsZBgEIAEoCSKVAQoKV2F0Y2hFdmVudBIQCgh3YXRjaF9pZBgBIAEoCRIcCgV2YWx1ZRgCIAEoCzINLmNhbWluby5WYWx1ZRI3CgxkZXBlbmRlbmNpZXMYAyADKAsyIS5xdWl4b3MucnVudGltZS5EZXJpdmVkRGVwZW5kZW5jeRINCgVlcnJvchgEIAEoCRIPCgdpbml0aWFsGAUgASgIMvABCg5QYWNrYWdlUnVudGltZRJQCglIYW5kc2hha2USIC5xdWl4b3MucnVudGltZS5IYW5kc2hha2VSZXF1ZXN0GiEucXVpeG9zLnJ1bnRpbWUuSGFuZHNoYWtlUmVzcG9uc2USRwoGSW52b2tlEh0ucXVpeG9zLnJ1bnRpbWUuSW52b2tlUmVxdWVzdBoeLnF1aXhvcy5ydW50aW1lLkludm9rZVJlc3BvbnNlEkMKBVdhdGNoEhwucXVpeG9zLnJ1bnRpbWUuV2F0Y2hSZXF1ZXN0GhoucXVpeG9zLnJ1bnRpbWUuV2F0Y2hFdmVudDABYgZwcm90bzM", [file_camino_api, file_quixos_refs]); fileDesc("ChRxdWl4b3MvcnVudGltZS5wcm90bxIOcXVpeG9zLnJ1bnRpbWUiMQoQSGFuZHNoYWtlUmVxdWVzdBIdChVvcmNoX3Byb3RvY29sX3ZlcnNpb24YASABKAkiZgoRSGFuZHNoYWtlUmVzcG9uc2USGwoTcGFja2FnZV9yZXZpc2lvbl9pZBgBIAEoCRIgChhydW50aW1lX3Byb3RvY29sX3ZlcnNpb24YAiABKAkSEgoKZXhwb3J0X2lkcxgDIAMoCSKLAgoNSW52b2tlUmVxdWVzdBIVCg1pbnZvY2F0aW9uX2lkGAEgASgJEigKBmV4cG9ydBgCIAEoCzIYLnF1aXhvcy5QYWNrYWdlRXhwb3J0UmVmEhEKCW9iamVjdF9pZBgDIAEoCRI3CgVpbnB1dBgEIAMoCzIoLnF1aXhvcy5ydW50aW1lLkludm9rZVJlcXVlc3QuSW5wdXRFbnRyeRIwCgxkZXBlbmRlbmNpZXMYBSADKAsyGi5xdWl4b3MuSW5qZWN0ZWREZXBlbmRlbmN5GjsKCklucHV0RW50cnkSCwoDa2V5GAEgASgJEhwKBXZhbHVlGAIgASgLMg0uY2FtaW5vLlZhbHVlOgI4ASJKCg5JbnZva2VSZXNwb25zZRIKCgJvaxgBIAEoCBIdCgZyZXN1bHQYAiABKAsyDS5jYW1pbm8uVmFsdWUSDQoFZXJyb3IYAyABKAkiiQIKDFdhdGNoUmVxdWVzdBIVCg1pbnZvY2F0aW9uX2lkGAEgASgJEigKBmV4cG9ydBgCIAEoCzIYLnF1aXhvcy5QYWNrYWdlRXhwb3J0UmVmEhEKCW9iamVjdF9pZBgDIAEoCRI2CgVpbnB1dBgEIAMoCzInLnF1aXhvcy5ydW50aW1lLldhdGNoUmVxdWVzdC5JbnB1dEVudHJ5EjAKDGRlcGVuZGVuY2llcxgFIAMoCzIaLnF1aXhvcy5JbmplY3RlZERlcGVuZGVuY3kaOwoKSW5wdXRFbnRyeRILCgNrZXkYASABKAkSHAoFdmFsdWUYAiABKAsyDS5jYW1pbm8uVmFsdWU6AjgBImIKEURlcml2ZWREZXBlbmRlbmN5EgwKBGtpbmQYASABKAkSEQoJb2JqZWN0X2lkGAIgASgJEhUKDWF0dGFjaG1lbnRfaWQYAyABKAkSFQoNcHJvamVjdGlvbl9pZBgEIAEoCSKVAQoKV2F0Y2hFdmVudBIQCgh3YXRjaF9pZBgBIAEoCRIcCgV2YWx1ZRgCIAEoCzINLmNhbWluby5WYWx1ZRI3CgxkZXBlbmRlbmNpZXMYAyADKAsyIS5xdWl4b3MucnVudGltZS5EZXJpdmVkRGVwZW5kZW5jeRINCgVlcnJvchgEIAEoCRIPCgdpbml0aWFsGAUgASgIMvABCg5QYWNrYWdlUnVudGltZRJQCglIYW5kc2hha2USIC5xdWl4b3MucnVudGltZS5IYW5kc2hha2VSZXF1ZXN0GiEucXVpeG9zLnJ1bnRpbWUuSGFuZHNoYWtlUmVzcG9uc2USRwoGSW52b2tlEh0ucXVpeG9zLnJ1bnRpbWUuSW52b2tlUmVxdWVzdBoeLnF1aXhvcy5ydW50aW1lLkludm9rZVJlc3BvbnNlEkMKBVdhdGNoEhwucXVpeG9zLnJ1bnRpbWUuV2F0Y2hSZXF1ZXN0GhoucXVpeG9zLnJ1bnRpbWUuV2F0Y2hFdmVudDABYgZwcm90bzM", [file_camino_api, file_quixos_refs]);
/** /**
* @generated from message quixos.runtime.HandshakeRequest * @generated from message quixos.runtime.HandshakeRequest
@@ -38,24 +38,19 @@ export const HandshakeRequestSchema: GenMessage<HandshakeRequest> = /*@__PURE__*
*/ */
export type HandshakeResponse = Message<"quixos.runtime.HandshakeResponse"> & { export type HandshakeResponse = Message<"quixos.runtime.HandshakeResponse"> & {
/** /**
* @generated from field: string package_namespace = 1; * @generated from field: string package_revision_id = 1;
*/ */
packageNamespace: string; packageRevisionId: string;
/** /**
* @generated from field: string package_name = 2; * @generated from field: string runtime_protocol_version = 2;
*/
packageName: string;
/**
* @generated from field: string runtime_protocol_version = 3;
*/ */
runtimeProtocolVersion: string; runtimeProtocolVersion: string;
/** /**
* @generated from field: repeated quixos.FunctionRef functions = 4; * @generated from field: repeated string export_ids = 3;
*/ */
functions: FunctionRef[]; exportIds: string[];
}; };
/** /**
@@ -75,9 +70,9 @@ export type InvokeRequest = Message<"quixos.runtime.InvokeRequest"> & {
invocationId: string; invocationId: string;
/** /**
* @generated from field: quixos.FunctionRef function = 2; * @generated from field: quixos.PackageExportRef export = 2;
*/ */
function?: FunctionRef | undefined; export?: PackageExportRef | undefined;
/** /**
* @generated from field: string object_id = 3; * @generated from field: string object_id = 3;
@@ -88,6 +83,11 @@ export type InvokeRequest = Message<"quixos.runtime.InvokeRequest"> & {
* @generated from field: map<string, camino.Value> input = 4; * @generated from field: map<string, camino.Value> input = 4;
*/ */
input: { [key: string]: Value }; input: { [key: string]: Value };
/**
* @generated from field: repeated quixos.InjectedDependency dependencies = 5;
*/
dependencies: InjectedDependency[];
}; };
/** /**
@@ -134,9 +134,9 @@ export type WatchRequest = Message<"quixos.runtime.WatchRequest"> & {
invocationId: string; invocationId: string;
/** /**
* @generated from field: quixos.FunctionRef function = 2; * @generated from field: quixos.PackageExportRef export = 2;
*/ */
function?: FunctionRef | undefined; export?: PackageExportRef | undefined;
/** /**
* @generated from field: string object_id = 3; * @generated from field: string object_id = 3;
@@ -147,6 +147,11 @@ export type WatchRequest = Message<"quixos.runtime.WatchRequest"> & {
* @generated from field: map<string, camino.Value> input = 4; * @generated from field: map<string, camino.Value> input = 4;
*/ */
input: { [key: string]: Value }; input: { [key: string]: Value };
/**
* @generated from field: repeated quixos.InjectedDependency dependencies = 5;
*/
dependencies: InjectedDependency[];
}; };
/** /**
@@ -171,14 +176,14 @@ export type DerivedDependency = Message<"quixos.runtime.DerivedDependency"> & {
objectId: string; objectId: string;
/** /**
* @generated from field: string field_name = 3; * @generated from field: string attachment_id = 3;
*/ */
fieldName: string; attachmentId: string;
/** /**
* @generated from field: string source_field = 4; * @generated from field: string projection_id = 4;
*/ */
sourceField: string; projectionId: string;
}; };
/** /**
-809
View File
@@ -1,809 +0,0 @@
import fs from "node:fs";
import path from "node:path";
import protobuf from "protobufjs";
import type {
Cardinality,
ClassSchema,
ConflictStrategy,
FieldSchema,
FieldStorage,
FieldStorageKind,
FunctionRef,
InterfaceFieldContract,
InterfaceImplementation,
InterfaceSchema,
MethodSchema,
OperationSchema,
OperationServiceSchema,
MigrationSpec,
SchemaCompileResult,
SymbolRef,
TypeRef,
} from "./schema-ir.js";
type OptionBag = Record<string, unknown>;
const CLASS_OPTION = "(camino.class)";
const INTERFACE_OPTION = "(camino.interface)";
const IMPLEMENTS_OPTION = "(camino.implements)";
const CONSTRUCTOR_OPTION = "(camino.constructor)";
const METHOD_OPTION = "(camino.method)";
const MIGRATION_OPTION = "(camino.migration)";
const CONFLICT_OPTION = "(camino.conflict)";
const EDGE_OPTION = "(camino.edge)";
const FIELD_STORAGE_OPTION = "(camino.field_storage)";
const FIELD_OPS_OPTION = "(camino.field_ops)";
const INTERFACE_FIELD_OPTION = "(camino.interface_field)";
const DISPLAY_LABEL_OPTION = "(camino.display_label)";
const IMPL_OPTION = "(camino.impl)";
const SCHEMA_NAMESPACE_OPTION = "(camino.schema_namespace)";
const SCHEMA_VERSION_OPTION = "(camino.schema_version)";
const enumName = (value: unknown) =>
String(value)
.replace(/([a-z0-9])([A-Z])/g, "$1_$2")
.replace(/-/g, "_")
.toUpperCase();
const lowerEnumName = (value: unknown) => enumName(value).toLowerCase();
const getOption = (
options: OptionBag | undefined,
name: string,
): unknown => {
if (!options) {
return undefined;
}
if (Object.hasOwn(options, name)) {
return options[name];
}
const bareName = name.replace(/^\((.*)\)$/, "$1");
if (Object.hasOwn(options, bareName)) {
return options[bareName];
}
return undefined;
};
const getParsedOptions = (
reflection: protobuf.ReflectionObject,
): OptionBag[] => {
const parsedOptions = (reflection as unknown as { parsedOptions?: unknown })
.parsedOptions;
return Array.isArray(parsedOptions)
? parsedOptions.filter(
(option): option is OptionBag =>
Boolean(option) && typeof option === "object" && !Array.isArray(option),
)
: [];
};
const getReflectionOptions = (
reflection: protobuf.ReflectionObject,
name: string,
): unknown[] => {
const parsedValues = getParsedOptions(reflection).flatMap((option) => {
const value = getOption(option, name);
return value === undefined ? [] : [value];
});
if (parsedValues.length > 0) {
return parsedValues;
}
const value = getOption(reflection.options, name);
return value === undefined ? [] : [value];
};
const getReflectionOption = (
reflection: protobuf.ReflectionObject,
name: string,
): unknown => getReflectionOptions(reflection, name)[0];
const asObject = (value: unknown): OptionBag | undefined =>
value && typeof value === "object" && !Array.isArray(value)
? (value as OptionBag)
: undefined;
const asArray = (value: unknown): unknown[] =>
Array.isArray(value) ? value : value === undefined ? [] : [value];
const readString = (
object: OptionBag | undefined,
key: string,
): string | undefined => {
const value = object?.[key];
return typeof value === "string" ? value : undefined;
};
const readNumber = (
object: OptionBag | undefined,
key: string,
): number | undefined => {
const value = object?.[key];
return typeof value === "number" && Number.isFinite(value)
? value
: undefined;
};
const readBoolean = (
object: OptionBag | undefined,
key: string,
): boolean | undefined => {
const value = object?.[key];
return typeof value === "boolean" ? value : undefined;
};
const symbolRefFromOption = (
value: unknown,
fallback: SymbolRef,
): SymbolRef => {
const object = asObject(value);
if (!object) {
return fallback;
}
return {
namespace: readString(object, "namespace") ?? fallback.namespace,
name: readString(object, "name") ?? fallback.name,
version: readString(object, "version") ?? fallback.version,
...(readString(object, "hash")
? { hash: readString(object, "hash") }
: {}),
};
};
const typeRefFromOption = (
value: unknown,
fallbackVersion: string,
): TypeRef | undefined => {
const object = asObject(value);
if (!object) {
return undefined;
}
const symbol = asObject(object.symbol)
? symbolRefFromOption(object.symbol, {
namespace: "",
name: "",
version: fallbackVersion,
})
: undefined;
const protoType = readString(object, "proto_type")?.replace(/^\./, "");
const symbolProtoType =
symbol?.namespace && symbol.name ? `${symbol.namespace}.${symbol.name}` : "";
const resolvedProtoType = protoType ?? symbolProtoType;
if (!resolvedProtoType) {
return undefined;
}
return {
protoType: resolvedProtoType,
...(symbol?.namespace && symbol.name ? { symbol } : {}),
};
};
const interfaceFieldContractFromOption = (
value: unknown,
schemaVersion: string,
): InterfaceFieldContract | undefined => {
const object = asObject(value);
if (!object) {
return undefined;
}
const type = typeRefFromOption(object.type, schemaVersion);
return {
required: readBoolean(object, "required") ?? false,
readable: readBoolean(object, "readable") ?? false,
writable: readBoolean(object, "writable") ?? false,
watchable: readBoolean(object, "watchable") ?? false,
...(readString(object, "type_param")
? { typeParam: readString(object, "type_param") }
: {}),
...(type ? { type } : {}),
};
};
const functionRefFromOption = (value: unknown): FunctionRef => {
const object = asObject(value);
if (!object) {
throw new Error("Expected function ref option object");
}
const packageNamespace = readString(object, "package_namespace");
const packageName = readString(object, "package_name");
const symbol = readString(object, "symbol");
if (!packageNamespace || !packageName || !symbol) {
throw new Error("Function ref requires package_namespace, package_name, and symbol");
}
return {
packageNamespace,
packageName,
symbol,
...(readString(object, "operation")
? { operation: readString(object, "operation") }
: {}),
...(readString(object, "version_ref")
? { versionRef: readString(object, "version_ref") }
: {}),
};
};
const conflictFromOption = (value: unknown): ConflictStrategy => {
const normalized = enumName(value);
if (!value || normalized === "CONFLICT_STRATEGY_UNSPECIFIED") {
return "preserve_conflicts";
}
if (normalized === "REPLACE") {
return "replace";
}
if (normalized === "PRESERVE_CONFLICTS") {
return "preserve_conflicts";
}
if (normalized === "CRDT") {
return "crdt";
}
throw new Error(`Unknown Camino conflict strategy: ${String(value)}`);
};
const cardinalityFromOption = (value: unknown): Cardinality => {
const normalized = lowerEnumName(value);
if (!value || normalized === "cardinality_unspecified") {
return "many";
}
if (
normalized === "optional_one" ||
normalized === "exactly_one" ||
normalized === "many" ||
normalized === "many_unique" ||
normalized === "many_ordered"
) {
return normalized;
}
throw new Error(`Unknown Camino cardinality: ${String(value)}`);
};
const fieldStorageKindFromOption = (value: unknown): FieldStorageKind => {
if (value === 5) {
return "static_final";
}
const normalized = lowerEnumName(value);
if (!value || normalized === "field_storage_kind_unspecified") {
return "stored";
}
if (
normalized === "stored" ||
normalized === "derived" ||
normalized === "lazy" ||
normalized === "external" ||
normalized === "static_final"
) {
return normalized;
}
throw new Error(`Unknown Camino field storage kind: ${String(value)}`);
};
const fieldStorageFromOption = (value: unknown): FieldStorage => {
const object = asObject(value);
if (!object) {
return {
kind: "stored",
cache: false,
};
}
const kind = fieldStorageKindFromOption(object.kind);
const resolver = object.resolver === undefined
? undefined
: functionRefFromOption(object.resolver);
if ((kind === "derived" || kind === "lazy" || kind === "external") && !resolver) {
throw new Error(`${kind} field storage requires resolver`);
}
return {
kind,
...(resolver ? { resolver } : {}),
cache: object.cache === true,
};
};
const fieldOpsFromOption = (value: unknown) => {
const object = asObject(value);
if (!object) {
return undefined;
}
const implementation = enumName(object.implementation);
if (implementation !== "SERVICE") {
throw new Error(
`Unsupported Camino field implementation: ${String(object.implementation)}`,
);
}
const service = readString(object, "service");
if (!service) {
throw new Error("SERVICE field_ops requires service");
}
return {
implementation: "service" as const,
service,
};
};
const extractFileDefaults = (sourceFile: string) => {
const text = fs.readFileSync(sourceFile, "utf8");
const packageMatch = /^\s*package\s+([a-zA-Z0-9_.]+)\s*;/m.exec(text);
const namespaceMatch =
/^\s*option\s+\(camino\.schema_namespace\)\s*=\s*"([^"]+)"\s*;/m.exec(
text,
);
const versionMatch =
/^\s*option\s+\(camino\.schema_version\)\s*=\s*"([^"]+)"\s*;/m.exec(text);
return {
packageName: packageMatch?.[1] ?? "",
schemaNamespace: namespaceMatch?.[1] ?? packageMatch?.[1] ?? "",
schemaVersion: versionMatch?.[1] ?? "1",
};
};
const protoSymbolFromReflection = (
reflection: protobuf.ReflectionObject | null,
fallbackVersion: string,
): SymbolRef | undefined => {
if (!reflection?.fullName) {
return undefined;
}
const parts = reflection.fullName.replace(/^\./, "").split(".");
const name = parts.pop();
if (!name) {
return undefined;
}
return {
namespace: parts.join("."),
name,
version: fallbackVersion,
};
};
const typeRefForField = (
field: protobuf.Field,
schemaVersion: string,
): TypeRef => {
const symbol = protoSymbolFromReflection(field.resolvedType, schemaVersion);
const enumValues =
field.resolvedType instanceof protobuf.Enum
? Object.entries(field.resolvedType.values)
.filter(([_name, value]) => value !== 0)
.map(([name]) => name)
: undefined;
return {
protoType: field.type,
...(symbol ? { symbol } : {}),
...(enumValues ? { enumValues } : {}),
};
};
const typeRefForType = (
type: protobuf.Type | undefined,
fallbackType: string,
schemaVersion: string,
): TypeRef => {
const symbol = protoSymbolFromReflection(type ?? null, schemaVersion);
return {
protoType: type?.fullName?.replace(/^\./, "") ?? fallbackType,
...(symbol ? { symbol } : {}),
};
};
const fieldSchemaFromField = (
field: protobuf.Field,
schemaVersion: string,
): FieldSchema => {
const storage = fieldStorageFromOption(
getReflectionOption(field, FIELD_STORAGE_OPTION),
);
const ops = fieldOpsFromOption(getReflectionOption(field, FIELD_OPS_OPTION));
if (ops && storage.kind !== "stored" && storage.kind !== "static_final") {
throw new Error(
`Field ${field.fullName} cannot declare both field_ops and package-resolved storage`,
);
}
if (storage.kind === "static_final" && !ops) {
throw new Error(`Field ${field.fullName} with static_final storage requires field_ops`);
}
const interfaceContract = interfaceFieldContractFromOption(
getReflectionOption(field, INTERFACE_FIELD_OPTION),
schemaVersion,
);
return {
name: field.name,
tag: field.id,
type: typeRefForField(field, schemaVersion),
conflict: conflictFromOption(getReflectionOption(field, CONFLICT_OPTION)),
repeated: field.repeated,
optional: field.optional,
storage,
...(ops ? { ops } : {}),
...(interfaceContract ? { interfaceContract } : {}),
isDisplayLabel: getReflectionOption(field, DISPLAY_LABEL_OPTION) === true,
};
};
const isStringType = (type: TypeRef) =>
type.protoType === "string" || type.protoType === "google.protobuf.StringValue";
const validateDisplayLabelFields = (
type: protobuf.Type,
fields: FieldSchema[],
operationServices: OperationServiceSchema[],
) => {
const displayLabelFields = fields.filter((field) => field.isDisplayLabel);
if (displayLabelFields.length > 1) {
throw new Error(
`Class ${type.fullName} declares multiple Camino display label fields`,
);
}
const displayLabelField = displayLabelFields[0];
if (!displayLabelField) {
return;
}
if (!displayLabelField.ops) {
if (!isStringType(displayLabelField.type)) {
throw new Error(
`Display label field ${type.fullName}.${displayLabelField.name} must have string type`,
);
}
return;
}
const serviceName = displayLabelField.ops.service.replace(/^\./, "");
const getOperation = operationServices
.find((service) => service.fullName === serviceName)
?.operations.find((operation) => operation.name === "Get");
if (!getOperation || !isStringType(getOperation.outputType)) {
throw new Error(
`Display label field ${type.fullName}.${displayLabelField.name} must resolve to string`,
);
}
};
const typeBindingFromOption = (
value: unknown,
schemaVersion: string,
) => {
const object = asObject(value);
if (!object) {
return undefined;
}
const name = readString(object, "name");
const type = typeRefFromOption(object.type, schemaVersion);
if (!name || !type) {
throw new Error("Interface type_binding requires name and type");
}
return { name, type };
};
const interfaceImplementationFromOption = (
value: unknown,
defaults: ReturnType<typeof extractFileDefaults>,
): InterfaceImplementation => {
const object = asObject(value);
if (!object) {
throw new Error("Expected implements option object");
}
const interfaceId = symbolRefFromOption(object.interface, {
namespace: defaults.schemaNamespace,
name: "",
version: defaults.schemaVersion,
});
if (!interfaceId.name) {
throw new Error("implements option requires interface name");
}
return {
interface: interfaceId,
typeBindings: asArray(object.type_binding)
.map((binding) => typeBindingFromOption(binding, defaults.schemaVersion))
.filter((binding): binding is NonNullable<typeof binding> =>
Boolean(binding),
),
};
};
const serviceName = (service: protobuf.Service) =>
service.fullName.replace(/^\./, "");
const operationFromMethod = (
method: protobuf.Method,
schemaVersion: string,
): OperationSchema => {
const fn = functionRefFromOption(getReflectionOption(method, IMPL_OPTION));
const methodWithTypes = method as protobuf.Method & {
resolvedRequestType?: protobuf.Type;
resolvedResponseType?: protobuf.Type;
};
return {
name: method.name,
inputType: typeRefForType(
methodWithTypes.resolvedRequestType,
method.requestType,
schemaVersion,
),
outputType: typeRefForType(
methodWithTypes.resolvedResponseType,
method.responseType,
schemaVersion,
),
function: fn,
};
};
const operationServiceFromService = (
service: protobuf.Service,
schemaVersion: string,
): OperationServiceSchema => ({
name: service.name,
fullName: serviceName(service),
operations: service.methodsArray.map((method) =>
operationFromMethod(method, schemaVersion),
),
});
const classSchemaFromType = (
type: protobuf.Type,
sourceFile: string,
defaults: ReturnType<typeof extractFileDefaults>,
operationServices: OperationServiceSchema[],
): ClassSchema | undefined => {
const classOption = asObject(getReflectionOption(type, CLASS_OPTION));
if (!classOption) {
return undefined;
}
const fallbackClassRef = {
namespace: defaults.schemaNamespace,
name: type.name,
version: defaults.schemaVersion,
};
const classId = symbolRefFromOption(classOption.id, fallbackClassRef);
const classVersion = readNumber(classOption, "version") ?? Number(classId.version);
if (!Number.isInteger(classVersion) || classVersion <= 0) {
throw new Error(`Class ${type.fullName} has invalid Camino class version`);
}
const fields = type.fieldsArray.map((field) =>
fieldSchemaFromField(field, defaults.schemaVersion),
);
validateDisplayLabelFields(type, fields, operationServices);
const edges = type.fieldsArray.flatMap((field) => {
const edgeOption = asObject(getReflectionOption(field, EDGE_OPTION));
if (!edgeOption) {
return [];
}
const targetClass = symbolRefFromOption(edgeOption.target, {
namespace: defaults.schemaNamespace,
name: "",
version: defaults.schemaVersion,
});
if (!targetClass.name) {
throw new Error(`Edge field ${type.fullName}.${field.name} requires target`);
}
const cardinality = cardinalityFromOption(edgeOption.cardinality);
const sourceType = typeRefForField(field, defaults.schemaVersion);
if (
sourceType.symbol?.namespace !== "camino" ||
sourceType.symbol.name !== "Ref"
) {
throw new Error(`Edge field ${type.fullName}.${field.name} must use camino.Ref`);
}
const isMany =
cardinality === "many" ||
cardinality === "many_unique" ||
cardinality === "many_ordered";
if (isMany && !field.repeated) {
throw new Error(`Edge field ${type.fullName}.${field.name} must be repeated for ${cardinality}`);
}
if (!isMany && field.repeated) {
throw new Error(`Edge field ${type.fullName}.${field.name} must not be repeated for ${cardinality}`);
}
const edgeId = symbolRefFromOption(edgeOption.id, {
namespace: defaults.schemaNamespace,
name: `${type.name}.${field.name}`,
version: defaults.schemaVersion,
});
return [
{
id: edgeId,
sourceField: field.name,
fromClass: classId,
toClass: targetClass,
cardinality,
...(readString(edgeOption, "inverse")
? { inverse: readString(edgeOption, "inverse") }
: {}),
fields: [],
},
];
});
const methods: MethodSchema[] = getReflectionOptions(type, METHOD_OPTION)
.map(asObject)
.filter((option): option is OptionBag => Boolean(option))
.map((option) => {
const name = readString(option, "name");
if (!name) {
throw new Error(`Method option on ${type.fullName} requires name`);
}
return {
name,
function: functionRefFromOption(option.function),
};
});
const migrations: MigrationSpec[] = getReflectionOptions(type, MIGRATION_OPTION)
.map(asObject)
.filter((option): option is OptionBag => Boolean(option))
.map((option) => {
const fromVersion = readNumber(option, "from_version");
const toVersion = readNumber(option, "to_version");
if (!fromVersion || !toVersion) {
throw new Error(`Migration option on ${type.fullName} requires versions`);
}
return {
fromVersion,
toVersion,
function: functionRefFromOption(option.function),
};
});
const constructorOption = asObject(
getReflectionOption(type, CONSTRUCTOR_OPTION),
);
const constructorSpec = constructorOption
? { function: functionRefFromOption(constructorOption.function) }
: undefined;
return {
id: classId,
version: classVersion,
fields,
edges,
methods,
migrations,
operationServices,
implements: getReflectionOptions(type, IMPLEMENTS_OPTION).map((option) =>
interfaceImplementationFromOption(option, defaults),
),
...(constructorSpec ? { constructorSpec } : {}),
sourceFile,
protoMessage: type.fullName,
};
};
const interfaceSchemaFromType = (
type: protobuf.Type,
sourceFile: string,
defaults: ReturnType<typeof extractFileDefaults>,
): InterfaceSchema | undefined => {
const interfaceOption = asObject(getReflectionOption(type, INTERFACE_OPTION));
if (!interfaceOption) {
return undefined;
}
const classOption = asObject(getReflectionOption(type, CLASS_OPTION));
if (classOption) {
throw new Error(`${type.fullName} cannot be both a Camino class and interface`);
}
const fallbackInterfaceRef = {
namespace: defaults.schemaNamespace,
name: type.name,
version: defaults.schemaVersion,
};
const interfaceId = symbolRefFromOption(
interfaceOption.id,
fallbackInterfaceRef,
);
const interfaceVersion =
readNumber(interfaceOption, "version") ?? Number(interfaceId.version);
if (!Number.isInteger(interfaceVersion) || interfaceVersion <= 0) {
throw new Error(`Interface ${type.fullName} has invalid Camino interface version`);
}
return {
id: interfaceId,
version: interfaceVersion,
fields: type.fieldsArray.map((field) =>
fieldSchemaFromField(field, defaults.schemaVersion),
),
sourceFile,
protoMessage: type.fullName,
};
};
const walkTypes = (
namespace: protobuf.NamespaceBase,
visit: (type: protobuf.Type) => void,
) => {
for (const nested of namespace.nestedArray) {
if (nested instanceof protobuf.Type) {
visit(nested);
walkTypes(nested, visit);
} else if (nested instanceof protobuf.Namespace) {
walkTypes(nested, visit);
}
}
};
const walkServices = (
namespace: protobuf.NamespaceBase,
visit: (service: protobuf.Service) => void,
) => {
for (const nested of namespace.nestedArray) {
if (nested instanceof protobuf.Service) {
visit(nested);
} else if (nested instanceof protobuf.Namespace) {
walkServices(nested, visit);
}
}
};
export const compileCaminoSchema = async (
sourceFile: string,
): Promise<SchemaCompileResult> => {
const absoluteSourceFile = path.resolve(sourceFile);
const defaults = extractFileDefaults(absoluteSourceFile);
const root = new protobuf.Root();
const envIncludeDirs = [
process.env.QUIXOS_PROTO_PATH,
process.env.CAMINO_PROTO_PATH,
]
.filter((value): value is string => Boolean(value))
.join(path.delimiter)
.split(path.delimiter)
.map((entry) => entry.trim())
.filter(Boolean)
.map((entry) => path.resolve(entry));
const includeDirs = [
path.dirname(absoluteSourceFile),
path.resolve("../../quixos-protocol/proto"),
path.resolve("quixos-protocol/proto"),
path.resolve("proto"),
...envIncludeDirs,
];
root.resolvePath = (origin, target) => {
if (path.isAbsolute(target) && fs.existsSync(target)) {
return target;
}
const originDir = origin ? path.dirname(origin) : undefined;
const candidates = [
...(originDir ? [path.resolve(originDir, target)] : []),
...includeDirs.map((dir) => path.resolve(dir, target)),
];
const found = candidates.find((candidate) => fs.existsSync(candidate));
return found ?? target;
};
await root.load(absoluteSourceFile, { keepCase: true });
root.resolveAll();
const operationServices: OperationServiceSchema[] = [];
walkServices(root, (service) => {
operationServices.push(
operationServiceFromService(service, defaults.schemaVersion),
);
});
const classes: ClassSchema[] = [];
const interfaces: InterfaceSchema[] = [];
walkTypes(root, (type) => {
const interfaceSchema = interfaceSchemaFromType(
type,
absoluteSourceFile,
defaults,
);
if (interfaceSchema) {
interfaces.push(interfaceSchema);
}
const classSchema = classSchemaFromType(
type,
absoluteSourceFile,
defaults,
operationServices,
);
if (classSchema) {
classes.push(classSchema);
}
});
return {
sourceFile: absoluteSourceFile,
classes,
interfaces,
};
};
-148
View File
@@ -1,148 +0,0 @@
export type SymbolRef = {
namespace: string;
name: string;
version: string;
hash?: string;
};
export type FunctionRef = {
packageNamespace: string;
packageName: string;
symbol: string;
operation?: string;
versionRef?: string;
};
export type ConflictStrategy =
| "replace"
| "preserve_conflicts"
| "crdt";
export type Cardinality =
| "optional_one"
| "exactly_one"
| "many"
| "many_unique"
| "many_ordered";
export type FieldStorageKind =
| "stored"
| "derived"
| "lazy"
| "external"
| "static_final";
export type FieldStorage = {
kind: FieldStorageKind;
resolver?: FunctionRef;
cache: boolean;
};
export type FieldOps = {
implementation: "service";
service: string;
};
export type TypeRef = {
protoType: string;
symbol?: SymbolRef;
enumValues?: string[];
};
export type TypeBinding = {
name: string;
type: TypeRef;
};
export type InterfaceFieldContract = {
required: boolean;
readable: boolean;
writable: boolean;
watchable: boolean;
typeParam?: string;
type?: TypeRef;
};
export type InterfaceImplementation = {
interface: SymbolRef;
typeBindings: TypeBinding[];
};
export type FieldSchema = {
name: string;
tag: number;
type: TypeRef;
conflict: ConflictStrategy;
repeated: boolean;
optional: boolean;
storage: FieldStorage;
ops?: FieldOps;
interfaceContract?: InterfaceFieldContract;
isDisplayLabel: boolean;
};
export type EdgeSchema = {
id: SymbolRef;
sourceField: string;
fromClass: SymbolRef;
toClass: SymbolRef;
cardinality: Cardinality;
inverse?: string;
fields: FieldSchema[];
};
export type MethodSchema = {
name: string;
function: FunctionRef;
};
export type MigrationSpec = {
fromVersion: number;
toVersion: number;
function: FunctionRef;
};
export type ConstructorSpec = {
function: FunctionRef;
};
export type OperationSchema = {
name: string;
inputType: TypeRef;
outputType: TypeRef;
function: FunctionRef;
};
export type OperationServiceSchema = {
name: string;
fullName: string;
operations: OperationSchema[];
};
export type ClassSchema = {
id: SymbolRef;
version: number;
fields: FieldSchema[];
edges: EdgeSchema[];
methods: MethodSchema[];
migrations: MigrationSpec[];
operationServices: OperationServiceSchema[];
implements: InterfaceImplementation[];
constructorSpec?: ConstructorSpec;
sourceFile: string;
protoMessage: string;
};
export type InterfaceSchema = {
id: SymbolRef;
version: number;
fields: FieldSchema[];
sourceFile: string;
protoMessage: string;
};
export type SchemaCompileResult = {
sourceFile: string;
classes: ClassSchema[];
interfaces: InterfaceSchema[];
};
+235
View File
@@ -0,0 +1,235 @@
import assert from "node:assert/strict";
import http from "node:http";
import test from "node:test";
import { create } from "@bufbuild/protobuf";
import { createClient } from "@connectrpc/connect";
import { connectNodeAdapter, createConnectTransport } from "@connectrpc/connect-node";
import {
createPackageRuntimeRoutes,
createRuntimeContext,
derived,
jsToProtoValue,
liveValue,
protoValueToJs,
} from "../dist/index.js";
import {
CaminoObjectSchema,
CaminoService,
CrdtValueSchema,
StateValueSourceSchema,
ValueSchema,
ValueSourceSchema,
} from "../dist/camino/api_pb.js";
import {
EdgeDependencySchema,
InjectedDependencySchema,
PackageExportRefSchema,
} from "../dist/quixos/refs_pb.js";
import { PackageRuntime } from "../dist/quixos/runtime_pb.js";
const listen = async (routes) => {
const server = http.createServer((request, response) => void connectNodeAdapter({ routes })(request, response));
await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
const address = server.address();
assert.ok(address && typeof address === "object");
return {
url: `http://127.0.0.1:${address.port}`,
close: async () => {
server.closeAllConnections();
await new Promise((resolve) => server.close(resolve));
},
};
};
test("generic values preserve nested values and object references", () => {
const value = jsToProtoValue({
title: "A task",
target: { $quixosRef: "obj:target" },
tags: ["one", "two"],
});
assert.deepEqual(protoValueToJs(value), {
title: "A task",
target: "obj:target",
tags: ["one", "two"],
});
});
test("live values preserve writable CRDT source identity through derivation", () => {
const value = create(ValueSchema, {
kind: { case: "stringValue", value: "notes" },
source: create(ValueSourceSchema, {
state: create(StateValueSourceSchema, {
objectId: "obj:task",
slotId: "slot:task:notes",
revision: 7n,
crdtSnapshot: create(CrdtValueSchema, {
type: "quixos.automerge-document.v1",
encoding: "automerge-snapshot-v1",
payload: new Uint8Array([1, 2, 3]),
}),
}),
}),
});
const forwarded = jsToProtoValue(liveValue(value));
assert.equal(forwarded.source?.state?.objectId, "obj:task");
assert.equal(forwarded.source?.state?.slotId, "slot:task:notes");
assert.equal(forwarded.source?.state?.revision, 7n);
assert.deepEqual(forwarded.source?.state?.crdtSnapshot?.payload, new Uint8Array([1, 2, 3]));
});
test("runtime context exposes only explicitly injected ports", async () => {
const writes = [];
const camino = {
readState: async ({ objectId, slotId }) => ({
value: jsToProtoValue(`${objectId}/${slotId}`),
}),
writeState: async (request) => {
writes.push(request);
return {};
},
resolveEdge: async () => ({ edges: [] }),
connectEdge: async () => ({}),
};
const context = createRuntimeContext(camino, {}, {
objectId: "obj:task",
input: {},
dependencies: [
create(InjectedDependencySchema, {
portId: "port:title",
binding: { case: "stateSlotId", value: "slot:task:title" },
}),
create(InjectedDependencySchema, {
portId: "port:children",
binding: {
case: "edge",
value: create(EdgeDependencySchema, {
edgeTypeId: "edge:task:children",
projectionId: "projection:task:children",
}),
},
}),
],
});
assert.equal(await context.state("port:title").get(), "obj:task/slot:task:title");
await context.state("port:title").set("Changed");
assert.equal(writes.length, 1);
assert.equal("camino" in context, false);
assert.equal("orch" in context, false);
assert.throws(() => context.state("port:not-injected"), /Missing slotId dependency/);
assert.throws(() => context.interface("port:title"), /Missing interfaceRevisionId dependency/);
assert.deepEqual(await context.edge("port:children").resolve(), []);
});
test("injected ports preserve an explicitly traversed object through PackageRuntime RPC", async () => {
const reads = [];
const caminoServer = await listen((router) => router.service(CaminoService, {
readState: (request) => {
reads.push(request);
return { value: jsToProtoValue("Project name") };
},
}));
const runtimeServer = await listen(createPackageRuntimeRoutes({
packageRevisionId: "package:test@1",
caminoUrl: caminoServer.url,
exports: {
"export:test:value": (context) => context.state("port:value").get(),
},
}));
const client = createClient(PackageRuntime, createConnectTransport({
baseUrl: runtimeServer.url,
httpVersion: "1.1",
}));
try {
const response = await client.invoke({
export: create(PackageExportRefSchema, {
packageRevisionId: "package:test@1",
exportId: "export:test:value",
}),
objectId: "obj:component",
dependencies: [create(InjectedDependencySchema, {
portId: "port:value",
objectId: "obj:project",
binding: { case: "stateSlotId", value: "slot:project:name" },
})],
});
assert.equal(response.ok, true);
assert.equal(protoValueToJs(response.result), "Project name");
assert.equal(reads.length, 1);
assert.equal(reads[0]?.objectId, "obj:project");
} finally {
await runtimeServer.close();
await caminoServer.close();
}
});
test("derived watches subscribe before reading and emit only real changes", async () => {
let current = "before";
let subscribed = false;
const changes = [];
const caminoServer = await listen((router) => router.service(CaminoService, {
readState: () => {
assert.equal(subscribed, true, "the dependency stream must be live before the state read");
return { value: jsToProtoValue(current) };
},
watchObject: async function* (request, context) {
subscribed = true;
yield {
objectId: request.objectId,
snapshot: create(CaminoObjectSchema, {
id: request.objectId,
atomId: "atom:test",
workspaceRevisionId: "workspace:test@1",
}),
};
while (!context.signal.aborted) {
const changed = await new Promise((resolve) => {
const finish = () => resolve(true);
changes.push(finish);
context.signal.addEventListener("abort", () => resolve(false), { once: true });
});
if (!changed) return;
yield { objectId: request.objectId };
}
},
}));
const runtimeServer = await listen(createPackageRuntimeRoutes({
packageRevisionId: "package:test@1",
caminoUrl: caminoServer.url,
exports: {
"export:test:value": derived((context) => context.state("port:value").get()),
},
}));
const client = createClient(PackageRuntime, createConnectTransport({
baseUrl: runtimeServer.url,
httpVersion: "1.1",
}));
const controller = new AbortController();
try {
const stream = client.watch({
export: create(PackageExportRefSchema, {
packageRevisionId: "package:test@1",
exportId: "export:test:value",
}),
objectId: "obj:test",
dependencies: [create(InjectedDependencySchema, {
portId: "port:value",
binding: { case: "stateSlotId", value: "slot:test:value" },
})],
}, { signal: controller.signal })[Symbol.asyncIterator]();
const initial = await stream.next();
assert.equal(protoValueToJs(initial.value?.value), "before");
assert.equal(initial.value?.initial, true);
current = "after";
changes.shift()?.();
const updated = await stream.next();
assert.equal(protoValueToJs(updated.value?.value), "after");
assert.equal(updated.value?.initial, false);
} finally {
controller.abort();
await runtimeServer.close();
await caminoServer.close();
}
});
+5 -1
View File
@@ -7,7 +7,11 @@
"esModuleInterop": true, "esModuleInterop": true,
"skipLibCheck": true, "skipLibCheck": true,
"forceConsistentCasingInFileNames": true, "forceConsistentCasingInFileNames": true,
"outDir": "dist" "types": ["node"],
"declaration": true,
"declarationMap": true,
"outDir": "dist",
"rootDir": "src"
}, },
"include": ["src/**/*.ts"] "include": ["src/**/*.ts"]
} }
+6 -19
View File
@@ -7,8 +7,8 @@
let let
yarnBin = fetchurl { yarnBin = fetchurl {
url = "https://repo.yarnpkg.com/4.14.1/packages/yarnpkg-cli/bin/yarn.js"; url = "https://repo.yarnpkg.com/4.18.0/packages/yarnpkg-cli/bin/yarn.js";
hash = "sha512-ZN9EgFWy03uiadfbU1pGm42pP47xFAwl/XqDwAqPuqyyFMoOAlU7kqLFTO94u2fQtIF/qwIAHfDiT6wPrMw7Qg=="; hash = "sha512-/Lhxb+fNDuzhQf/Bi5IZOp35IEwbqDGJwoiDUiP8C75kr0c7qw1emSen2utcryuwfrJ4fMkzjKBA6hJfKh8vfg==";
}; };
cacheFolder = ".yarn/cache"; cacheFolder = ".yarn/cache";
@@ -156,35 +156,22 @@ let
overriddenProject = optionalOverride overrideAttrs project; overriddenProject = optionalOverride overrideAttrs project;
cacheEntries = { cacheEntries = {
"@automerge/automerge@npm:3.3.0" = { filename = "@automerge-automerge-npm-3.3.0-3f6661ca17-74b3a8ef9e.zip"; hash = "sha512-dLOo7548v0B2DomHJ+za1RKOUv0rBTgJRUrnsrhbTsZHw8uipjXNv4MfIxVzGtQl2jenhLeb8TvIbsKKfpKv8g=="; };
"@bufbuild/protobuf@npm:2.12.1" = { filename = "@bufbuild-protobuf-npm-2.12.1-d8afb467b3-2d40cfe4ec.zip"; hash = "sha512-LUDP5Ow7sOPwarLih3HcXcVm6qywVfvok9dWIbBAfQJy1I9ApJCtR97YOe1UFRThr3G7E68CSzrjbvDFbVbdqQ=="; }; "@bufbuild/protobuf@npm:2.12.1" = { filename = "@bufbuild-protobuf-npm-2.12.1-d8afb467b3-2d40cfe4ec.zip"; hash = "sha512-LUDP5Ow7sOPwarLih3HcXcVm6qywVfvok9dWIbBAfQJy1I9ApJCtR97YOe1UFRThr3G7E68CSzrjbvDFbVbdqQ=="; };
"@bufbuild/protoc-gen-es@npm:2.12.1" = { filename = "@bufbuild-protoc-gen-es-npm-2.12.1-6e9387fcb8-0e2805376d.zip"; hash = "sha512-DigFN22Lmj/OD9OdkPZa4dH/vqMSvi2tk2f3xyEqvFHcKleC531iqPhh7De9xtG9MM+sVRDRJCeCzXA/kH4f9Q=="; }; "@bufbuild/protoc-gen-es@npm:2.12.1" = { filename = "@bufbuild-protoc-gen-es-npm-2.12.1-6e9387fcb8-0e2805376d.zip"; hash = "sha512-DigFN22Lmj/OD9OdkPZa4dH/vqMSvi2tk2f3xyEqvFHcKleC531iqPhh7De9xtG9MM+sVRDRJCeCzXA/kH4f9Q=="; };
"@bufbuild/protoplugin@npm:2.12.1" = { filename = "@bufbuild-protoplugin-npm-2.12.1-e1aebb80bf-c7b401ab31.zip"; hash = "sha512-x7QBqzHZSsaCXLm75c/3XQXSjuINRnskt6XUKZuaygZmhuo5t6OoRTuLWgGD+qd4HoP8LliAZhgHudMVX3Hr6Q=="; }; "@bufbuild/protoplugin@npm:2.12.1" = { filename = "@bufbuild-protoplugin-npm-2.12.1-e1aebb80bf-c7b401ab31.zip"; hash = "sha512-x7QBqzHZSsaCXLm75c/3XQXSjuINRnskt6XUKZuaygZmhuo5t6OoRTuLWgGD+qd4HoP8LliAZhgHudMVX3Hr6Q=="; };
"@connectrpc/connect-node@npm:2.1.2" = { filename = "@connectrpc-connect-node-npm-2.1.2-021434d5d5-ba8b0c9384.zip"; hash = "sha512-uosMk4TDgps3eqeoJtwM1Qpgk1J9LscBRgSRKDYzbqlgSitazqQrEEd/i+RWnknd7WbKD8d/X1sCcDXgKeE+qQ=="; }; "@connectrpc/connect-node@npm:2.1.2" = { filename = "@connectrpc-connect-node-npm-2.1.2-021434d5d5-ba8b0c9384.zip"; hash = "sha512-uosMk4TDgps3eqeoJtwM1Qpgk1J9LscBRgSRKDYzbqlgSitazqQrEEd/i+RWnknd7WbKD8d/X1sCcDXgKeE+qQ=="; };
"@connectrpc/connect@npm:2.1.2" = { filename = "@connectrpc-connect-npm-2.1.2-ab34825de3-4e15000890.zip"; hash = "sha512-ThUACJAjt1Lv1E+pQKWuHh+gDhvrxLoM7ScruTWSDYw7hbd0UOZErUQruMqaJ1sMFxNviWuo7/A2F4Ex2wHWFQ=="; }; "@connectrpc/connect@npm:2.1.2" = { filename = "@connectrpc-connect-npm-2.1.2-ab34825de3-4e15000890.zip"; hash = "sha512-ThUACJAjt1Lv1E+pQKWuHh+gDhvrxLoM7ScruTWSDYw7hbd0UOZErUQruMqaJ1sMFxNviWuo7/A2F4Ex2wHWFQ=="; };
"@protobufjs/aspromise@npm:1.1.2" = { filename = "@protobufjs-aspromise-npm-1.1.2-71d00b938f-a83343a468.zip"; hash = "sha512-qDNDpGj/W17Gv/Nv14imTIOeSKB/+fT4E1ZPWMr0TQEc1lBO0hR780g1vXp90hBwUq91WWHGsJj9iQK09lANDw=="; };
"@protobufjs/base64@npm:1.1.2" = { filename = "@protobufjs-base64-npm-1.1.2-cd8ca6814a-eec925e681.zip"; hash = "sha512-7skl5oEIGvGQuO4jH5utMQHhiau8GC/yedprUx59vSpW8fMG83qAsb6eAKotJxaQ0I3MXzJvccnu2FRmdcjK9g=="; };
"@protobufjs/codegen@npm:2.0.5" = { filename = "@protobufjs-codegen-npm-2.0.5-bb74ff329d-1b8a2ae56e.zip"; hash = "sha512-G4oq5W7mClbp0gXNS2ByoVA8UGm467kFcQ+XT/AJig0HAGQcE34KjZje3xRCMVahBqlDNpXL9SV0gQ9VAA/cqw=="; };
"@protobufjs/eventemitter@npm:1.1.1" = { filename = "@protobufjs-eventemitter-npm-1.1.1-dbe0dfc812-8e06193d46.zip"; hash = "sha512-jgYZPUYpxefAnU+MLduo/E36c58BSfM6HZAVaNNbt7i1J3pOhFK6873QswL9WZzyVdGTJnqpOgpHR+I80HPErA=="; };
"@protobufjs/fetch@npm:1.1.1" = { filename = "@protobufjs-fetch-npm-1.1.1-b98d5396a8-a497ff5433.zip"; hash = "sha512-pJf/VDOFToV38EJ5g+o5uRE7SagSD5RRUpHXYzJwYdLDAT5g4k6kNtCR2vrgGg9usYZ+OxYWBF2Wox2LPGRu1A=="; };
"@protobufjs/float@npm:1.0.2" = { filename = "@protobufjs-float-npm-1.0.2-5678f64d08-18f2bdede7.zip"; hash = "sha512-GPK97edv/PAXBwivFcnJ22JZt3HmuExRsG3zSpwznbvuwmfRTOC93SCswUKx2YDZg9MUNDmN9/mOsMlKDreQaQ=="; };
"@protobufjs/path@npm:1.1.2" = { filename = "@protobufjs-path-npm-1.1.2-641d08de76-cece0a938e.zip"; hash = "sha512-zs4Kk45/Xf0voD+MFPLxz4sNbhOscyb/TJbqMR7/1ft64LunVPv1BTEq8uOFACUMkOaFBrl8AjYKQ3k9iKDYtA=="; };
"@protobufjs/pool@npm:1.1.0" = { filename = "@protobufjs-pool-npm-1.1.0-47a76f96a1-eda2718b7f.zip"; hash = "sha512-7aJxi38iKsbmrTb3WKku+Q0mUmAmoZ9PF/Zo9F4DBqW9c03vP0j1H4E0rgl4tiYqXFF8CLEVpVF1bRo6rfzwOA=="; };
"@protobufjs/utf8@npm:1.1.2" = { filename = "@protobufjs-utf8-npm-1.1.2-9c7ca5968f-975c6e2c03.zip"; hash = "sha512-l1xuLAMZvVDBdTHRhrU3qIy00yBePKkpfNhCtjHTQdoO4/8WvoZWzSZgdW3HU7KcimoUwK2O1gLB+R3fIuez8w=="; };
"@quixos/camino-datatypes@https://gitea-external.egads.tutti.syntaxblitz.net/quixos/camino-datatypes.git#commit=e061e290709c672d2dc675e5c871733de195211a" = { filename = "@quixos-camino-datatypes-https-faf980267e-4ed01c75c1.zip"; hash = "sha512-TtAcdcG7mReSI/kmbu+U91w39uYetoOiQbq6ex48zaTphDXn1vO1aaw0k8kEDhQgE1LMZrFgHyPzjlUIkyKdrA=="; };
"@types/node@npm:24.13.3" = { filename = "@types-node-npm-24.13.3-b512a0bbeb-a5bc08f49b.zip"; hash = "sha512-pbwI9JuVgdzcqQ4CzXcZejx5mECAdmSULlzVFhpVPU0q6AZPfjKUQQ10jX0Ji1wYSL5/pQwG8pxBk6sWvk5Z6w=="; }; "@types/node@npm:24.13.3" = { filename = "@types-node-npm-24.13.3-b512a0bbeb-a5bc08f49b.zip"; hash = "sha512-pbwI9JuVgdzcqQ4CzXcZejx5mECAdmSULlzVFhpVPU0q6AZPfjKUQQ10jX0Ji1wYSL5/pQwG8pxBk6sWvk5Z6w=="; };
"@types/node@npm:26.1.1" = { filename = "@types-node-npm-26.1.1-7a7a9f32f4-25ac509319.zip"; hash = "sha512-JaxQkxlXNt0HTVAnrbuoVhe8lR1aQVBuvTuQcwSKy3IzYT84ItX5uUR/nAhByR9jh8Rig5FnZ+PvefI5F0UsRg=="; }; "@typescript/typescript-linux-arm64@npm:7.0.2" = { filename = "@typescript-typescript-linux-arm64-npm-7.0.2-9cacfc53a0-10c0.zip"; hash = "sha512-s4c7nGT/lQIw6x0IfrL0b3ECy/D0g7UoDLdiIWJoM6EGXk5N/dmXdxUdA8Cr3hV/3nO2BYKTQ6Ai8/zGhiSQ3A=="; };
"@typescript/typescript-linux-x64@npm:7.0.2" = { filename = "@typescript-typescript-linux-x64-npm-7.0.2-8dd7ff8d24-10c0.zip"; hash = "sha512-k9EUK5CZ3OOPnyslp8SAAonHJpnpPmlaulppI/NmFyCzNs3UN/TLPUkyQia3KIxgbyTzKoXI5L5fl8Uj9bJ7Cg=="; };
"@typescript/vfs@npm:1.6.4" = { filename = "@typescript-vfs-npm-1.6.4-78935c9d3e-acb9de42f2.zip"; hash = "sha512-rLneQvI/2j9149eQC6EG7zI6L0588OSpTbtFfibTU8pjuzUZPtGjL8hzPzrlkJlhKykLBr1iIWlIYb65v7YvYg=="; }; "@typescript/vfs@npm:1.6.4" = { filename = "@typescript-vfs-npm-1.6.4-78935c9d3e-acb9de42f2.zip"; hash = "sha512-rLneQvI/2j9149eQC6EG7zI6L0588OSpTbtFfibTU8pjuzUZPtGjL8hzPzrlkJlhKykLBr1iIWlIYb65v7YvYg=="; };
"debug@npm:4.4.3" = { filename = "debug-npm-4.4.3-0105c6123a-d79136ec6c.zip"; hash = "sha512-15E27GyD7L79D2pVk9pqnJHsTX3cS1TIg9bnHsmsy19noaXpbQCjKBlrW1yG02XpjYo6cIVqrxa057GYXmf1pg=="; }; "debug@npm:4.4.3" = { filename = "debug-npm-4.4.3-0105c6123a-d79136ec6c.zip"; hash = "sha512-15E27GyD7L79D2pVk9pqnJHsTX3cS1TIg9bnHsmsy19noaXpbQCjKBlrW1yG02XpjYo6cIVqrxa057GYXmf1pg=="; };
"long@npm:5.3.2" = { filename = "long-npm-5.3.2-f80d0f7d39-7130fe1cbc.zip"; hash = "sha512-cTD+HLzi3KBnNLNbcNOAyj9wJxx/iFLJIqfGLIbE418MOSkFZeynEzxiWQjUDhJqxXwCsbGkY2uUV9d+HmC5gQ=="; };
"ms@npm:2.1.3" = { filename = "ms-npm-2.1.3-81ff3cfac1-d924b57e73.zip"; hash = "sha512-2SS1fnMSs7Y60h/Fs9wK9eeNYaH8fPtUV+2vJjJr9ivlMHzIf/toYu8cKzOwIzzbXU8BxMlYzA1mCUi2Wih6SA=="; }; "ms@npm:2.1.3" = { filename = "ms-npm-2.1.3-81ff3cfac1-d924b57e73.zip"; hash = "sha512-2SS1fnMSs7Y60h/Fs9wK9eeNYaH8fPtUV+2vJjJr9ivlMHzIf/toYu8cKzOwIzzbXU8BxMlYzA1mCUi2Wih6SA=="; };
"protobufjs@npm:7.6.5" = { filename = "protobufjs-npm-7.6.5-ff4a872120-863eaca9c6.zip"; hash = "sha512-hj6sqcb0W/z7h4fFRfU+nGaWUH4yjjmBtGQ8EtNd9/KCYCHBDj/TC+80LBOo6dMGVHusnAhJ7jv1D3cKEvAdxQ=="; };
"typescript@npm:5.4.5" = { filename = "typescript-npm-5.4.5-8568a42232-2954022ada.zip"; hash = "sha512-KVQCKto0D9PWqeK45TT2XVfJLV85iaJjdUp4q6VJ9+ZSmswZIZE1YKS4FsRtzn30pNKfnxGj3A1CE7t20EMlHg=="; }; "typescript@npm:5.4.5" = { filename = "typescript-npm-5.4.5-8568a42232-2954022ada.zip"; hash = "sha512-KVQCKto0D9PWqeK45TT2XVfJLV85iaJjdUp4q6VJ9+ZSmswZIZE1YKS4FsRtzn30pNKfnxGj3A1CE7t20EMlHg=="; };
"typescript@npm:5.9.3" = { filename = "typescript-npm-5.9.3-48715be868-6bd7552ce3.zip"; hash = "sha512-a9dVLOOfl+cR21qgSPb5mVtT8cUvfYZnwavcFwDGinajCPV5zTCc5rU2Rt606aG+fIE6k7qvCijM1TajAnDhxQ=="; }; "typescript@npm:7.0.2" = { filename = "typescript-npm-7.0.2-0bde2bcec5-3dcee51ec8.zip"; hash = "sha512-Pc7lHsjDMkkjJbzb999ItmZodR8SfmIq59QbbHFusZGEQkpF4U93UPUPNAIyOItp5ih4WRVfBqXOLfdvEssxzw=="; };
"typescript@patch:typescript@npm%3A5.4.5#optional!builtin<compat/typescript>::version=5.4.5&hash=5adc0c" = { filename = "typescript-patch-6e159bfddb-db2ad2a16c.zip"; hash = "sha512-2yrSoWyoKfUEJ+6x2hVeekXlmO7HsIbYtOi6ROWiNfdY5gbWgcZpkiMNP8O4mVhl5f0LIqLJVIbQsyAPgwcuyQ=="; }; "typescript@patch:typescript@npm%3A5.4.5#optional!builtin<compat/typescript>::version=5.4.5&hash=5adc0c" = { filename = "typescript-patch-6e159bfddb-db2ad2a16c.zip"; hash = "sha512-2yrSoWyoKfUEJ+6x2hVeekXlmO7HsIbYtOi6ROWiNfdY5gbWgcZpkiMNP8O4mVhl5f0LIqLJVIbQsyAPgwcuyQ=="; };
"typescript@patch:typescript@npm%3A5.9.3#optional!builtin<compat/typescript>::version=5.9.3&hash=5786d5" = { filename = "typescript-patch-6fda4d02cf-ad09fdf7a7.zip"; hash = "sha512-rQn996dWgU3OZbxgwWV7QNREUTRoWO6iMOEPLpWiidkYO24y5cEelazAzMIUtPNiidytS/GIawrbhNcR0zakMA=="; }; "typescript@patch:typescript@npm%3A7.0.2#optional!builtin<compat/typescript>::version=7.0.2&hash=3bafbf" = { filename = "typescript-patch-4859cbaf66-6b3cdc369c.zip"; hash = "sha512-azzcNpzYKdRuAHNOpkIz7oRBnCglrY/kCJFa3ed6vO1LeiQB9+7VF9VKek9dHBhpdTy5kBjfHCFZx2HZ8zSDpg=="; };
"undici-types@npm:7.18.2" = { filename = "undici-types-npm-7.18.2-3e6d69d829-85a7918911.zip"; hash = "sha512-haeRiRE6I4lZ16ZHNo5PfFVZw6QE69uPxEiBRc6UJvzYIlKoRKMCeY38Djfm+xeP9IHtA7xMr2NMV1fZ70NSHQ=="; }; "undici-types@npm:7.18.2" = { filename = "undici-types-npm-7.18.2-3e6d69d829-85a7918911.zip"; hash = "sha512-haeRiRE6I4lZ16ZHNo5PfFVZw6QE69uPxEiBRc6UJvzYIlKoRKMCeY38Djfm+xeP9IHtA7xMr2NMV1fZ70NSHQ=="; };
"undici-types@npm:8.3.0" = { filename = "undici-types-npm-8.3.0-d34470de3e-c8aa7e2fbe.zip"; hash = "sha512-yKp+L76/zlGWVNr63A7OWb6IjSzK8YD7RJXah157U20kVjRcOEBpx+bz6cmrdDXwdJV9owbxQjQ+7ob/gEiFWg=="; };
}; };
in overriddenProject in overriddenProject
+274 -140
View File
@@ -2,16 +2,9 @@
# Manual changes might be lost - proceed with caution! # Manual changes might be lost - proceed with caution!
__metadata: __metadata:
version: 9 version: 10
cacheKey: 10c0 cacheKey: 10c0
"@automerge/automerge@npm:^3.3.0":
version: 3.3.0
resolution: "@automerge/automerge@npm:3.3.0"
checksum: 10c0/74b3a8ef9e3cbf40760e898727ecdad5128e52fd2b053809454ae7b2b85b4ec647c3cba2a635cdbf831f2315731ad425da37a784b79bf13bc86ec28a7e92aff2
languageName: node
linkType: hard
"@bufbuild/protobuf@npm:2.12.1, @bufbuild/protobuf@npm:^2.12.1": "@bufbuild/protobuf@npm:2.12.1, @bufbuild/protobuf@npm:^2.12.1":
version: 2.12.1 version: 2.12.1
resolution: "@bufbuild/protobuf@npm:2.12.1" resolution: "@bufbuild/protobuf@npm:2.12.1"
@@ -66,107 +59,19 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2":
version: 1.1.2
resolution: "@protobufjs/aspromise@npm:1.1.2"
checksum: 10c0/a83343a468ff5b5ec6bff36fd788a64c839e48a07ff9f4f813564f58caf44d011cd6504ed2147bf34835bd7a7dd2107052af755961c6b098fd8902b4f6500d0f
languageName: node
linkType: hard
"@protobufjs/base64@npm:^1.1.2":
version: 1.1.2
resolution: "@protobufjs/base64@npm:1.1.2"
checksum: 10c0/eec925e681081af190b8ee231f9bad3101e189abbc182ff279da6b531e7dbd2a56f1f306f37a80b1be9e00aa2d271690d08dcc5f326f71c9eed8546675c8caf6
languageName: node
linkType: hard
"@protobufjs/codegen@npm:^2.0.5":
version: 2.0.5
resolution: "@protobufjs/codegen@npm:2.0.5"
checksum: 10c0/1b8a2ae56ee60a56e9d205cd4b6072a1503c5069b8ebb905710f974ff0098a0d0700641c137e0a8d98dedf14423156a106a9433695cbf52574810f55000fdcab
languageName: node
linkType: hard
"@protobufjs/eventemitter@npm:^1.1.1":
version: 1.1.1
resolution: "@protobufjs/eventemitter@npm:1.1.1"
checksum: 10c0/8e06193d4629c5e7c09d4f8c2ddba8fc4dfa739f0149f33a1d901568d35bb7b8b5277a4e8452baf3bdd0b302fd599cf255d193267aa93a0a4747e23cd073c4ac
languageName: node
linkType: hard
"@protobufjs/fetch@npm:^1.1.1":
version: 1.1.1
resolution: "@protobufjs/fetch@npm:1.1.1"
dependencies:
"@protobufjs/aspromise": "npm:^1.1.1"
checksum: 10c0/a497ff5433854e8577f0427983ea39b9113b49a8120f94515291d763327061d2c3013e60e24ea436d091dafae01a0f6eb1867e3b1616045d96a31d8b3c646ed4
languageName: node
linkType: hard
"@protobufjs/float@npm:^1.0.2":
version: 1.0.2
resolution: "@protobufjs/float@npm:1.0.2"
checksum: 10c0/18f2bdede76ffcf0170708af15c9c9db6259b771e6b84c51b06df34a9c339dbbeec267d14ce0bddd20acc142b1d980d983d31434398df7f98eb0c94a0eb79069
languageName: node
linkType: hard
"@protobufjs/path@npm:^1.1.2":
version: 1.1.2
resolution: "@protobufjs/path@npm:1.1.2"
checksum: 10c0/cece0a938e7f5dfd2fa03f8c14f2f1cf8b0d6e13ac7326ff4c96ea311effd5fb7ae0bba754fbf505312af2e38500250c90e68506b97c02360a43793d88a0d8b4
languageName: node
linkType: hard
"@protobufjs/pool@npm:^1.1.0":
version: 1.1.0
resolution: "@protobufjs/pool@npm:1.1.0"
checksum: 10c0/eda2718b7f222ac6e6ad36f758a92ef90d26526026a19f4f17f668f45e0306a5bd734def3f48f51f8134ae0978b6262a5c517c08b115a551756d1a3aadfcf038
languageName: node
linkType: hard
"@protobufjs/utf8@npm:^1.1.1":
version: 1.1.2
resolution: "@protobufjs/utf8@npm:1.1.2"
checksum: 10c0/975c6e2c0319bd50c17531d186b537a88cb4d3205e3ca9297cd842b631d341da0ee3ff16be8656cd2660756dc753b29c8a6a14c0ad8ed602c1f91ddf22e7b3f3
languageName: node
linkType: hard
"@quixos/camino-datatypes@https://gitea-external.egads.tutti.syntaxblitz.net/quixos/camino-datatypes.git#commit=e061e290709c672d2dc675e5c871733de195211a":
version: 0.1.0
resolution: "@quixos/camino-datatypes@https://gitea-external.egads.tutti.syntaxblitz.net/quixos/camino-datatypes.git#commit=e061e290709c672d2dc675e5c871733de195211a"
dependencies:
"@automerge/automerge": "npm:^3.3.0"
checksum: 10c0/4ed01c75c1bb99179223f9266eef94f75c37f6e61eb683a241baba7b1e3ccda4e98435e7d6f3b569ac3493c9040e14201352cc66b1601f23f38e550893229dac
languageName: node
linkType: hard
"@quixos/camino-package-runtime@workspace:.": "@quixos/camino-package-runtime@workspace:.":
version: 0.0.0-use.local version: 0.0.0-use.local
resolution: "@quixos/camino-package-runtime@workspace:." resolution: "@quixos/camino-package-runtime@workspace:."
dependencies: dependencies:
"@automerge/automerge": "npm:^3.3.0"
"@bufbuild/protobuf": "npm:^2.12.1" "@bufbuild/protobuf": "npm:^2.12.1"
"@bufbuild/protoc-gen-es": "npm:^2.12.1" "@bufbuild/protoc-gen-es": "npm:^2.12.1"
"@connectrpc/connect": "npm:^2.1.2" "@connectrpc/connect": "npm:^2.1.2"
"@connectrpc/connect-node": "npm:^2.1.2" "@connectrpc/connect-node": "npm:^2.1.2"
"@quixos/camino-datatypes": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/camino-datatypes.git#commit=e061e290709c672d2dc675e5c871733de195211a"
"@types/node": "npm:^24" "@types/node": "npm:^24"
protobufjs: "npm:^7.5.4" typescript: "npm:^7.0.2"
typescript: "npm:^5.9.3"
bin:
camino-codegen-ts-runtime: dist/src/codegen-ts-runtime.js
languageName: unknown languageName: unknown
linkType: soft linkType: soft
"@types/node@npm:>=13.7.0":
version: 26.1.1
resolution: "@types/node@npm:26.1.1"
dependencies:
undici-types: "npm:~8.3.0"
checksum: 10c0/25ac5093195736dd074d5027adbba85617bc951d5a41506ebd3b9073048acb7233613f3822d5f9b9447f9c0841c91f6387c46283916767e3ef79f23917452c46
languageName: node
linkType: hard
"@types/node@npm:^24": "@types/node@npm:^24":
version: 24.13.3 version: 24.13.3
resolution: "@types/node@npm:24.13.3" resolution: "@types/node@npm:24.13.3"
@@ -176,6 +81,146 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript/typescript-aix-ppc64@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-aix-ppc64@npm:7.0.2"
conditions: os=aix & cpu=ppc64
languageName: node
linkType: hard
"@typescript/typescript-darwin-arm64@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-darwin-arm64@npm:7.0.2"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@typescript/typescript-darwin-x64@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-darwin-x64@npm:7.0.2"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@typescript/typescript-freebsd-arm64@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-freebsd-arm64@npm:7.0.2"
conditions: os=freebsd & cpu=arm64
languageName: node
linkType: hard
"@typescript/typescript-freebsd-x64@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-freebsd-x64@npm:7.0.2"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
"@typescript/typescript-linux-arm64@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-linux-arm64@npm:7.0.2"
conditions: os=linux & cpu=arm64
languageName: node
linkType: hard
"@typescript/typescript-linux-arm@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-linux-arm@npm:7.0.2"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
"@typescript/typescript-linux-loong64@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-linux-loong64@npm:7.0.2"
conditions: os=linux & cpu=loong64
languageName: node
linkType: hard
"@typescript/typescript-linux-mips64el@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-linux-mips64el@npm:7.0.2"
conditions: os=linux & cpu=mips64el
languageName: node
linkType: hard
"@typescript/typescript-linux-ppc64@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-linux-ppc64@npm:7.0.2"
conditions: os=linux & cpu=ppc64
languageName: node
linkType: hard
"@typescript/typescript-linux-riscv64@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-linux-riscv64@npm:7.0.2"
conditions: os=linux & cpu=riscv64
languageName: node
linkType: hard
"@typescript/typescript-linux-s390x@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-linux-s390x@npm:7.0.2"
conditions: os=linux & cpu=s390x
languageName: node
linkType: hard
"@typescript/typescript-linux-x64@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-linux-x64@npm:7.0.2"
conditions: os=linux & cpu=x64
languageName: node
linkType: hard
"@typescript/typescript-netbsd-arm64@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-netbsd-arm64@npm:7.0.2"
conditions: os=netbsd & cpu=arm64
languageName: node
linkType: hard
"@typescript/typescript-netbsd-x64@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-netbsd-x64@npm:7.0.2"
conditions: os=netbsd & cpu=x64
languageName: node
linkType: hard
"@typescript/typescript-openbsd-arm64@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-openbsd-arm64@npm:7.0.2"
conditions: os=openbsd & cpu=arm64
languageName: node
linkType: hard
"@typescript/typescript-openbsd-x64@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-openbsd-x64@npm:7.0.2"
conditions: os=openbsd & cpu=x64
languageName: node
linkType: hard
"@typescript/typescript-sunos-x64@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-sunos-x64@npm:7.0.2"
conditions: os=sunos & cpu=x64
languageName: node
linkType: hard
"@typescript/typescript-win32-arm64@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-win32-arm64@npm:7.0.2"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"@typescript/typescript-win32-x64@npm:7.0.2":
version: 7.0.2
resolution: "@typescript/typescript-win32-x64@npm:7.0.2"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@typescript/vfs@npm:^1.6.2": "@typescript/vfs@npm:^1.6.2":
version: 1.6.4 version: 1.6.4
resolution: "@typescript/vfs@npm:1.6.4" resolution: "@typescript/vfs@npm:1.6.4"
@@ -199,13 +244,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"long@npm:^5.3.2":
version: 5.3.2
resolution: "long@npm:5.3.2"
checksum: 10c0/7130fe1cbce2dca06734b35b70d380ca3f70271c7f8852c922a7c62c86c4e35f0c39290565eca7133c625908d40e126ac57c02b1b1a4636b9457d77e1e60b981
languageName: node
linkType: hard
"ms@npm:^2.1.3": "ms@npm:^2.1.3":
version: 2.1.3 version: 2.1.3
resolution: "ms@npm:2.1.3" resolution: "ms@npm:2.1.3"
@@ -213,25 +251,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"protobufjs@npm:^7.5.4":
version: 7.6.5
resolution: "protobufjs@npm:7.6.5"
dependencies:
"@protobufjs/aspromise": "npm:^1.1.2"
"@protobufjs/base64": "npm:^1.1.2"
"@protobufjs/codegen": "npm:^2.0.5"
"@protobufjs/eventemitter": "npm:^1.1.1"
"@protobufjs/fetch": "npm:^1.1.1"
"@protobufjs/float": "npm:^1.0.2"
"@protobufjs/path": "npm:^1.1.2"
"@protobufjs/pool": "npm:^1.1.0"
"@protobufjs/utf8": "npm:^1.1.1"
"@types/node": "npm:>=13.7.0"
long: "npm:^5.3.2"
checksum: 10c0/863eaca9c6f45bfcfb8787c545f53e9c6696507e328e3981b4643c12d35df7f2826021c10e3fd30bef342c13a8e9d306547bac9c0849ee3bf50f770a12f01dc5
languageName: node
linkType: hard
"typescript@npm:5.4.5": "typescript@npm:5.4.5":
version: 5.4.5 version: 5.4.5
resolution: "typescript@npm:5.4.5" resolution: "typescript@npm:5.4.5"
@@ -242,13 +261,74 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"typescript@npm:^5.9.3": "typescript@npm:^7.0.2":
version: 5.9.3 version: 7.0.2
resolution: "typescript@npm:5.9.3" resolution: "typescript@npm:7.0.2"
dependencies:
"@typescript/typescript-aix-ppc64": "npm:7.0.2"
"@typescript/typescript-darwin-arm64": "npm:7.0.2"
"@typescript/typescript-darwin-x64": "npm:7.0.2"
"@typescript/typescript-freebsd-arm64": "npm:7.0.2"
"@typescript/typescript-freebsd-x64": "npm:7.0.2"
"@typescript/typescript-linux-arm": "npm:7.0.2"
"@typescript/typescript-linux-arm64": "npm:7.0.2"
"@typescript/typescript-linux-loong64": "npm:7.0.2"
"@typescript/typescript-linux-mips64el": "npm:7.0.2"
"@typescript/typescript-linux-ppc64": "npm:7.0.2"
"@typescript/typescript-linux-riscv64": "npm:7.0.2"
"@typescript/typescript-linux-s390x": "npm:7.0.2"
"@typescript/typescript-linux-x64": "npm:7.0.2"
"@typescript/typescript-netbsd-arm64": "npm:7.0.2"
"@typescript/typescript-netbsd-x64": "npm:7.0.2"
"@typescript/typescript-openbsd-arm64": "npm:7.0.2"
"@typescript/typescript-openbsd-x64": "npm:7.0.2"
"@typescript/typescript-sunos-x64": "npm:7.0.2"
"@typescript/typescript-win32-arm64": "npm:7.0.2"
"@typescript/typescript-win32-x64": "npm:7.0.2"
dependenciesMeta:
"@typescript/typescript-aix-ppc64":
optional: true
"@typescript/typescript-darwin-arm64":
optional: true
"@typescript/typescript-darwin-x64":
optional: true
"@typescript/typescript-freebsd-arm64":
optional: true
"@typescript/typescript-freebsd-x64":
optional: true
"@typescript/typescript-linux-arm":
optional: true
"@typescript/typescript-linux-arm64":
optional: true
"@typescript/typescript-linux-loong64":
optional: true
"@typescript/typescript-linux-mips64el":
optional: true
"@typescript/typescript-linux-ppc64":
optional: true
"@typescript/typescript-linux-riscv64":
optional: true
"@typescript/typescript-linux-s390x":
optional: true
"@typescript/typescript-linux-x64":
optional: true
"@typescript/typescript-netbsd-arm64":
optional: true
"@typescript/typescript-netbsd-x64":
optional: true
"@typescript/typescript-openbsd-arm64":
optional: true
"@typescript/typescript-openbsd-x64":
optional: true
"@typescript/typescript-sunos-x64":
optional: true
"@typescript/typescript-win32-arm64":
optional: true
"@typescript/typescript-win32-x64":
optional: true
bin: bin:
tsc: bin/tsc tsc: bin/tsc
tsserver: bin/tsserver checksum: 10c0/3dcee51ec8c332492325bcdbf7df48b66668751f127e622ae7d41b6c716eb19184424a45e14f7750f50f340232388b69e6287859155f06a5ce2df76f12cb31cf
checksum: 10c0/6bd7552ce39f97e711db5aa048f6f9995b53f1c52f7d8667c1abdc1700c68a76a308f579cd309ce6b53646deb4e9a1be7c813a93baaf0a28ccd536a30270e1c5
languageName: node languageName: node
linkType: hard linkType: hard
@@ -262,13 +342,74 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"typescript@patch:typescript@npm%3A^5.9.3#optional!builtin<compat/typescript>": "typescript@patch:typescript@npm%3A^7.0.2#optional!builtin<compat/typescript>":
version: 5.9.3 version: 7.0.2
resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin<compat/typescript>::version=5.9.3&hash=5786d5" resolution: "typescript@patch:typescript@npm%3A7.0.2#optional!builtin<compat/typescript>::version=7.0.2&hash=3bafbf"
dependencies:
"@typescript/typescript-aix-ppc64": "npm:7.0.2"
"@typescript/typescript-darwin-arm64": "npm:7.0.2"
"@typescript/typescript-darwin-x64": "npm:7.0.2"
"@typescript/typescript-freebsd-arm64": "npm:7.0.2"
"@typescript/typescript-freebsd-x64": "npm:7.0.2"
"@typescript/typescript-linux-arm": "npm:7.0.2"
"@typescript/typescript-linux-arm64": "npm:7.0.2"
"@typescript/typescript-linux-loong64": "npm:7.0.2"
"@typescript/typescript-linux-mips64el": "npm:7.0.2"
"@typescript/typescript-linux-ppc64": "npm:7.0.2"
"@typescript/typescript-linux-riscv64": "npm:7.0.2"
"@typescript/typescript-linux-s390x": "npm:7.0.2"
"@typescript/typescript-linux-x64": "npm:7.0.2"
"@typescript/typescript-netbsd-arm64": "npm:7.0.2"
"@typescript/typescript-netbsd-x64": "npm:7.0.2"
"@typescript/typescript-openbsd-arm64": "npm:7.0.2"
"@typescript/typescript-openbsd-x64": "npm:7.0.2"
"@typescript/typescript-sunos-x64": "npm:7.0.2"
"@typescript/typescript-win32-arm64": "npm:7.0.2"
"@typescript/typescript-win32-x64": "npm:7.0.2"
dependenciesMeta:
"@typescript/typescript-aix-ppc64":
optional: true
"@typescript/typescript-darwin-arm64":
optional: true
"@typescript/typescript-darwin-x64":
optional: true
"@typescript/typescript-freebsd-arm64":
optional: true
"@typescript/typescript-freebsd-x64":
optional: true
"@typescript/typescript-linux-arm":
optional: true
"@typescript/typescript-linux-arm64":
optional: true
"@typescript/typescript-linux-loong64":
optional: true
"@typescript/typescript-linux-mips64el":
optional: true
"@typescript/typescript-linux-ppc64":
optional: true
"@typescript/typescript-linux-riscv64":
optional: true
"@typescript/typescript-linux-s390x":
optional: true
"@typescript/typescript-linux-x64":
optional: true
"@typescript/typescript-netbsd-arm64":
optional: true
"@typescript/typescript-netbsd-x64":
optional: true
"@typescript/typescript-openbsd-arm64":
optional: true
"@typescript/typescript-openbsd-x64":
optional: true
"@typescript/typescript-sunos-x64":
optional: true
"@typescript/typescript-win32-arm64":
optional: true
"@typescript/typescript-win32-x64":
optional: true
bin: bin:
tsc: bin/tsc tsc: bin/tsc
tsserver: bin/tsserver checksum: 10c0/6b3cdc369cd829d46e00734ea64233ee84419c2825ad8fe408915adde77abced4b7a2401f7eed517d54a7a4f5d1c1869753cb99018df1c2159c761d9f33483a6
checksum: 10c0/ad09fdf7a756814dce65bc60c1657b40d44451346858eea230e10f2e95a289d9183b6e32e5c11e95acc0ccc214b4f36289dcad4bf1886b0adb84d711d336a430
languageName: node languageName: node
linkType: hard linkType: hard
@@ -278,10 +419,3 @@ __metadata:
checksum: 10c0/85a79189113a238959d7a647368e4f7c5559c3a404ebdb8fc4488145ce9426fcd82252a844a302798dfc0e37e6fb178ff481ed03bc4caf634c5757d9ef43521d checksum: 10c0/85a79189113a238959d7a647368e4f7c5559c3a404ebdb8fc4488145ce9426fcd82252a844a302798dfc0e37e6fb178ff481ed03bc4caf634c5757d9ef43521d
languageName: node languageName: node
linkType: hard linkType: hard
"undici-types@npm:~8.3.0":
version: 8.3.0
resolution: "undici-types@npm:8.3.0"
checksum: 10c0/c8aa7e2fbebfce519654dafadc0ece59be888d2ccaf180fb4495da875e7b536d2456345c384069c7e6f3e9c9ab7435f074957da306f142343eee86ff8048855a
languageName: node
linkType: hard