@loxtep/sdk 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +152 -5
- package/dist/authoring/agent.d.ts +164 -0
- package/dist/authoring/agent.d.ts.map +1 -0
- package/dist/authoring/agent.js +376 -0
- package/dist/authoring/agent.js.map +1 -0
- package/dist/authoring/compiler.d.ts +98 -0
- package/dist/authoring/compiler.d.ts.map +1 -0
- package/dist/authoring/compiler.js +156 -0
- package/dist/authoring/compiler.js.map +1 -0
- package/dist/authoring/define-data-workflow.d.ts +24 -0
- package/dist/authoring/define-data-workflow.d.ts.map +1 -0
- package/dist/authoring/define-data-workflow.js +93 -0
- package/dist/authoring/define-data-workflow.js.map +1 -0
- package/dist/authoring/index.d.ts +19 -0
- package/dist/authoring/index.d.ts.map +1 -0
- package/dist/authoring/index.js +15 -0
- package/dist/authoring/index.js.map +1 -0
- package/dist/authoring/toolbox.d.ts +133 -0
- package/dist/authoring/toolbox.d.ts.map +1 -0
- package/dist/authoring/toolbox.js +166 -0
- package/dist/authoring/toolbox.js.map +1 -0
- package/dist/authoring/triggers.d.ts +41 -0
- package/dist/authoring/triggers.d.ts.map +1 -0
- package/dist/authoring/triggers.js +60 -0
- package/dist/authoring/triggers.js.map +1 -0
- package/dist/authoring/types.d.ts +64 -0
- package/dist/authoring/types.d.ts.map +1 -0
- package/dist/authoring/types.js +9 -0
- package/dist/authoring/types.js.map +1 -0
- package/dist/cli/commands/activity-cmd.d.ts +28 -0
- package/dist/cli/commands/activity-cmd.d.ts.map +1 -0
- package/dist/cli/commands/activity-cmd.js +78 -0
- package/dist/cli/commands/activity-cmd.js.map +1 -0
- package/dist/cli/commands/attach-cmd.d.ts +38 -0
- package/dist/cli/commands/attach-cmd.d.ts.map +1 -0
- package/dist/cli/commands/attach-cmd.js +141 -0
- package/dist/cli/commands/attach-cmd.js.map +1 -0
- package/dist/cli/commands/deploy-cmd.d.ts +101 -0
- package/dist/cli/commands/deploy-cmd.d.ts.map +1 -0
- package/dist/cli/commands/deploy-cmd.js +461 -0
- package/dist/cli/commands/deploy-cmd.js.map +1 -0
- package/dist/cli/commands/generate-cmd.d.ts +35 -0
- package/dist/cli/commands/generate-cmd.d.ts.map +1 -0
- package/dist/cli/commands/generate-cmd.js +134 -0
- package/dist/cli/commands/generate-cmd.js.map +1 -0
- package/dist/cli/commands/improvements-cmd.d.ts +44 -0
- package/dist/cli/commands/improvements-cmd.d.ts.map +1 -0
- package/dist/cli/commands/improvements-cmd.js +215 -0
- package/dist/cli/commands/improvements-cmd.js.map +1 -0
- package/dist/cli/commands/init-cmd.d.ts +78 -0
- package/dist/cli/commands/init-cmd.d.ts.map +1 -0
- package/dist/cli/commands/init-cmd.js +250 -0
- package/dist/cli/commands/init-cmd.js.map +1 -0
- package/dist/cli/commands/login.d.ts +4 -4
- package/dist/cli/commands/login.js +4 -4
- package/dist/cli/commands/login.js.map +1 -1
- package/dist/cli/commands/test-cmd.d.ts +89 -0
- package/dist/cli/commands/test-cmd.d.ts.map +1 -0
- package/dist/cli/commands/test-cmd.js +378 -0
- package/dist/cli/commands/test-cmd.js.map +1 -0
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +150 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/project-context.d.ts +153 -0
- package/dist/cli/project-context.d.ts.map +1 -0
- package/dist/cli/project-context.js +190 -0
- package/dist/cli/project-context.js.map +1 -0
- package/dist/client/activity-types.d.ts +66 -0
- package/dist/client/activity-types.d.ts.map +1 -0
- package/dist/client/activity-types.js +9 -0
- package/dist/client/activity-types.js.map +1 -0
- package/dist/client/activity.d.ts +22 -0
- package/dist/client/activity.d.ts.map +1 -0
- package/dist/client/activity.js +43 -0
- package/dist/client/activity.js.map +1 -0
- package/dist/client/data-products.d.ts.map +1 -1
- package/dist/client/data-products.js +4 -98
- package/dist/client/data-products.js.map +1 -1
- package/dist/client/flow-types.d.ts +4 -2
- package/dist/client/flow-types.d.ts.map +1 -1
- package/dist/client/flows.d.ts +1 -1
- package/dist/client/flows.d.ts.map +1 -1
- package/dist/client/flows.js +49 -124
- package/dist/client/flows.js.map +1 -1
- package/dist/client/improvements-types.d.ts +55 -0
- package/dist/client/improvements-types.d.ts.map +1 -0
- package/dist/client/improvements-types.js +9 -0
- package/dist/client/improvements-types.js.map +1 -0
- package/dist/client/improvements.d.ts +29 -0
- package/dist/client/improvements.d.ts.map +1 -0
- package/dist/client/improvements.js +50 -0
- package/dist/client/improvements.js.map +1 -0
- package/dist/client/index.d.ts +6 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/loxtep-client.d.ts +45 -0
- package/dist/client/loxtep-client.d.ts.map +1 -1
- package/dist/client/loxtep-client.js +68 -0
- package/dist/client/loxtep-client.js.map +1 -1
- package/dist/client/projects-types.d.ts +25 -0
- package/dist/client/projects-types.d.ts.map +1 -1
- package/dist/client/projects.d.ts +2 -1
- package/dist/client/projects.d.ts.map +1 -1
- package/dist/client/projects.js +17 -0
- package/dist/client/projects.js.map +1 -1
- package/dist/client/queue-types.d.ts +15 -2
- package/dist/client/queue-types.d.ts.map +1 -1
- package/dist/client/queues.d.ts.map +1 -1
- package/dist/client/queues.js +3 -14
- package/dist/client/queues.js.map +1 -1
- package/dist/codegen/emit.d.ts +25 -0
- package/dist/codegen/emit.d.ts.map +1 -0
- package/dist/codegen/emit.js +158 -0
- package/dist/codegen/emit.js.map +1 -0
- package/dist/codegen/index.d.ts +17 -0
- package/dist/codegen/index.d.ts.map +1 -0
- package/dist/codegen/index.js +16 -0
- package/dist/codegen/index.js.map +1 -0
- package/dist/codegen/load-workspace-context.d.ts +30 -0
- package/dist/codegen/load-workspace-context.d.ts.map +1 -0
- package/dist/codegen/load-workspace-context.js +127 -0
- package/dist/codegen/load-workspace-context.js.map +1 -0
- package/dist/codegen/normalize.d.ts +35 -0
- package/dist/codegen/normalize.d.ts.map +1 -0
- package/dist/codegen/normalize.js +77 -0
- package/dist/codegen/normalize.js.map +1 -0
- package/dist/codegen/types.d.ts +89 -0
- package/dist/codegen/types.d.ts.map +1 -0
- package/dist/codegen/types.js +9 -0
- package/dist/codegen/types.js.map +1 -0
- package/dist/codegen/write-artifact.d.ts +40 -0
- package/dist/codegen/write-artifact.d.ts.map +1 -0
- package/dist/codegen/write-artifact.js +74 -0
- package/dist/codegen/write-artifact.js.map +1 -0
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/workspace-config.d.ts +76 -0
- package/dist/config/workspace-config.d.ts.map +1 -0
- package/dist/config/workspace-config.js +129 -0
- package/dist/config/workspace-config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/rstreams/event-bridge.d.ts +16 -2
- package/dist/rstreams/event-bridge.d.ts.map +1 -1
- package/dist/rstreams/event-bridge.js +38 -5
- package/dist/rstreams/event-bridge.js.map +1 -1
- package/dist/skills/check-scope.d.ts +42 -0
- package/dist/skills/check-scope.d.ts.map +1 -0
- package/dist/skills/check-scope.js +84 -0
- package/dist/skills/check-scope.js.map +1 -0
- package/dist/skills/index.d.ts +14 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +12 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/loader.d.ts +79 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +102 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/types.d.ts +55 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +9 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/skills/validate-references.d.ts +54 -0
- package/dist/skills/validate-references.d.ts.map +1 -0
- package/dist/skills/validate-references.js +80 -0
- package/dist/skills/validate-references.js.map +1 -0
- package/package.json +5 -3
|
@@ -76,9 +76,22 @@ export interface QueueReaderHandle {
|
|
|
76
76
|
/** Clean up resources and stop reading. After close(), read() yields no more events. */
|
|
77
77
|
close(): void;
|
|
78
78
|
}
|
|
79
|
-
/**
|
|
79
|
+
/**
|
|
80
|
+
* Options for a single writer `write()`. Callers pass the **business object** to `write()`; the SDK
|
|
81
|
+
* builds the rstreams envelope (source bot = the writer's `bot_id`, `payload` = the business object).
|
|
82
|
+
* Callers never set the envelope/source themselves.
|
|
83
|
+
*/
|
|
84
|
+
export interface WriteOptions {
|
|
85
|
+
/**
|
|
86
|
+
* Source event time for this record. A ms-epoch number, or any `Date.parse`-able string. Sets the
|
|
87
|
+
* leo envelope's `event_source_timestamp`; if omitted, leo assigns the write time.
|
|
88
|
+
*/
|
|
89
|
+
event_source_timestamp?: string | number;
|
|
90
|
+
}
|
|
91
|
+
/** Handle returned by queues.open_writer; forwards to the rstreams `load` stream (which buffers/flushes). */
|
|
80
92
|
export interface QueueWriterHandle {
|
|
81
|
-
|
|
93
|
+
/** Write a business object (the SDK builds the envelope; source = writer bot_id). */
|
|
94
|
+
write(event: unknown, options?: WriteOptions): void | Promise<void>;
|
|
82
95
|
close(): Promise<void>;
|
|
83
96
|
}
|
|
84
97
|
//# sourceMappingURL=queue-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-types.d.ts","sourceRoot":"","sources":["../../src/client/queue-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,iDAAiD;AACjD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,8BAA8B;AAC9B,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,8BAA8B;AAC9B,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,6DAA6D;AAC7D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,8DAA8D;AAC9D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,oFAAoF;AACpF,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;QACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,mEAAmE;AACnE,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,gEAAgE;AAChE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,+EAA+E;AAC/E,MAAM,WAAW,iBAAiB;IAChC,gFAAgF;IAChF,IAAI,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAClE,wFAAwF;IACxF,KAAK,IAAI,IAAI,CAAC;CACf;AAED,
|
|
1
|
+
{"version":3,"file":"queue-types.d.ts","sourceRoot":"","sources":["../../src/client/queue-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queues.d.ts","sourceRoot":"","sources":["../../src/client/queues.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAEhB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACX,MAAM,kBAAkB,CAAC;AAQ1B,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;CACnD;AAKD;;;;;;;;GAQG;AACH,qBAAa,WAAY,YAAW,iBAAiB;IACnD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,MAAM,CAAU;gBAGtB,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,sBAAsB,GAAG;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAU5D;;;;;;OAMG;IACI,IAAI,CAAC,QAAQ,CAAC,EAAE,sBAAsB,GAAG,aAAa,CAAC,UAAU,CAAC;IAqCzE;;;OAGG;IACH,KAAK,IAAI,IAAI;CAGd;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,gBAAgB,EACtB,IAAI,CAAC,EAAE,aAAa,GACnB;IACD,kBAAkB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,qBAAqB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzF,WAAW,EAAE,CAAC,MAAM,EAAE;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,sBAAsB,CAAC;KAClC,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjC,WAAW,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC7F,
|
|
1
|
+
{"version":3,"file":"queues.d.ts","sourceRoot":"","sources":["../../src/client/queues.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAEhB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACX,MAAM,kBAAkB,CAAC;AAQ1B,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;CACnD;AAKD;;;;;;;;GAQG;AACH,qBAAa,WAAY,YAAW,iBAAiB;IACnD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,MAAM,CAAU;gBAGtB,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,sBAAsB,GAAG;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAU5D;;;;;;OAMG;IACI,IAAI,CAAC,QAAQ,CAAC,EAAE,sBAAsB,GAAG,aAAa,CAAC,UAAU,CAAC;IAqCzE;;;OAGG;IACH,KAAK,IAAI,IAAI;CAGd;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,gBAAgB,EACtB,IAAI,CAAC,EAAE,aAAa,GACnB;IACD,kBAAkB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,qBAAqB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzF,WAAW,EAAE,CAAC,MAAM,EAAE;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,sBAAsB,CAAC;KAClC,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjC,WAAW,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC7F,CAsEA"}
|
package/dist/client/queues.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Queues API: observe metadata/checkpoints over REST; read/write live events via the Loxtep stream data plane.
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { createQueueWriter, readQueueBatch, } from '../rstreams/event-bridge.js';
|
|
5
5
|
import { StreamingError } from '../errors/streaming.js';
|
|
6
6
|
/** Default batch size for QueueReader read operations. */
|
|
7
7
|
const DEFAULT_BATCH_SIZE = 100;
|
|
@@ -119,19 +119,8 @@ export function createQueuesApi(http, deps) {
|
|
|
119
119
|
if (!rsdk) {
|
|
120
120
|
throw new Error('queues.open_writer requires a configured Loxtep stream bus on LoxtepClient (pass `streams` and instance env, or explicit bus config).');
|
|
121
121
|
}
|
|
122
|
-
|
|
123
|
-
return {
|
|
124
|
-
async write(event) {
|
|
125
|
-
buffer.push(event);
|
|
126
|
-
},
|
|
127
|
-
async close() {
|
|
128
|
-
if (buffer.length === 0)
|
|
129
|
-
return;
|
|
130
|
-
const events = [...buffer];
|
|
131
|
-
buffer.length = 0;
|
|
132
|
-
await putPayloadsToQueue(rsdk, bot_id, queue_name, events);
|
|
133
|
-
},
|
|
134
|
-
};
|
|
122
|
+
// The rstreams `load` stream (inside createQueueWriter) owns buffering/batching/backoff.
|
|
123
|
+
return createQueueWriter(rsdk, bot_id, queue_name, () => new StreamingError('Cannot write to a closed queue writer.', { details: { queue_name } }));
|
|
135
124
|
},
|
|
136
125
|
};
|
|
137
126
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queues.js","sourceRoot":"","sources":["../../src/client/queues.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"queues.js","sourceRoot":"","sources":["../../src/client/queues.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stage 3: Emit — render typed TypeScript source from NormalizedContext.
|
|
3
|
+
*
|
|
4
|
+
* This pure function transforms a `NormalizedContext` into a string of TypeScript
|
|
5
|
+
* source code containing typed `as const` constants and a `workspace` namespace
|
|
6
|
+
* that aggregates all resource collections.
|
|
7
|
+
*
|
|
8
|
+
* Requirements: R2.1, R2.2, R2.3, R2.4, R2.5
|
|
9
|
+
*
|
|
10
|
+
* @module codegen/emit
|
|
11
|
+
*/
|
|
12
|
+
import type { NormalizedContext } from './types.js';
|
|
13
|
+
/**
|
|
14
|
+
* Renders a `NormalizedContext` into a complete TypeScript source string.
|
|
15
|
+
*
|
|
16
|
+
* The output includes:
|
|
17
|
+
* - A header comment with an auto-generated notice and context hash (R12.4)
|
|
18
|
+
* - Per-resource-type `as const` exports with required fields (R2.1–R2.4)
|
|
19
|
+
* - A `workspace` namespace aggregating all collections (R2.5)
|
|
20
|
+
* - Empty objects for empty collections in the workspace namespace (R2.5)
|
|
21
|
+
*
|
|
22
|
+
* This is a pure function: same input always produces the same output (R2.6).
|
|
23
|
+
*/
|
|
24
|
+
export declare function emitArtifact(norm: NormalizedContext): string;
|
|
25
|
+
//# sourceMappingURL=emit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../src/codegen/emit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAsB,MAAM,YAAY,CAAC;AA+FxE;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CA0F5D"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stage 3: Emit — render typed TypeScript source from NormalizedContext.
|
|
3
|
+
*
|
|
4
|
+
* This pure function transforms a `NormalizedContext` into a string of TypeScript
|
|
5
|
+
* source code containing typed `as const` constants and a `workspace` namespace
|
|
6
|
+
* that aggregates all resource collections.
|
|
7
|
+
*
|
|
8
|
+
* Requirements: R2.1, R2.2, R2.3, R2.4, R2.5
|
|
9
|
+
*
|
|
10
|
+
* @module codegen/emit
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Computes a deterministic SHA-256-like hash of the normalized context for cache
|
|
14
|
+
* invalidation (R12.4). Uses a simple djb2-based hash over the JSON-serialized
|
|
15
|
+
* context to produce a stable hex string.
|
|
16
|
+
*/
|
|
17
|
+
function computeContextHash(norm) {
|
|
18
|
+
const serialized = JSON.stringify(norm);
|
|
19
|
+
let hash = 5381;
|
|
20
|
+
for (let i = 0; i < serialized.length; i++) {
|
|
21
|
+
hash = ((hash << 5) + hash + serialized.charCodeAt(i)) | 0;
|
|
22
|
+
}
|
|
23
|
+
// Convert to unsigned 32-bit hex
|
|
24
|
+
return (hash >>> 0).toString(16).padStart(8, '0');
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Serializes a JavaScript value to a TypeScript literal string.
|
|
28
|
+
* Handles strings, numbers, booleans, null, arrays, and plain objects.
|
|
29
|
+
*/
|
|
30
|
+
function toLiteral(value, indent) {
|
|
31
|
+
const pad = ' '.repeat(indent);
|
|
32
|
+
const innerPad = ' '.repeat(indent + 1);
|
|
33
|
+
if (value === null) {
|
|
34
|
+
return 'null';
|
|
35
|
+
}
|
|
36
|
+
if (typeof value === 'string') {
|
|
37
|
+
return JSON.stringify(value);
|
|
38
|
+
}
|
|
39
|
+
if (typeof value === 'number' || typeof value === 'boolean') {
|
|
40
|
+
return String(value);
|
|
41
|
+
}
|
|
42
|
+
if (Array.isArray(value)) {
|
|
43
|
+
if (value.length === 0) {
|
|
44
|
+
return '[]';
|
|
45
|
+
}
|
|
46
|
+
const items = value.map((item) => `${innerPad}${toLiteral(item, indent + 1)}`);
|
|
47
|
+
return `[\n${items.join(',\n')}\n${pad}]`;
|
|
48
|
+
}
|
|
49
|
+
if (typeof value === 'object') {
|
|
50
|
+
const entries = Object.entries(value);
|
|
51
|
+
if (entries.length === 0) {
|
|
52
|
+
return '{}';
|
|
53
|
+
}
|
|
54
|
+
const props = entries.map(([key, val]) => `${innerPad}${safeKey(key)}: ${toLiteral(val, indent + 1)}`);
|
|
55
|
+
return `{\n${props.join(',\n')}\n${pad}}`;
|
|
56
|
+
}
|
|
57
|
+
return 'undefined';
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Returns a safe object key — quoted if not a valid identifier, bare otherwise.
|
|
61
|
+
*/
|
|
62
|
+
function safeKey(key) {
|
|
63
|
+
if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) {
|
|
64
|
+
return key;
|
|
65
|
+
}
|
|
66
|
+
return JSON.stringify(key);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Emits a single resource entry as a TypeScript object literal line.
|
|
70
|
+
*/
|
|
71
|
+
function emitResourceEntry(key, fields) {
|
|
72
|
+
const props = Object.entries(fields)
|
|
73
|
+
.map(([k, v]) => `${safeKey(k)}: ${toLiteral(v, 2)}`)
|
|
74
|
+
.join(', ');
|
|
75
|
+
return ` ${safeKey(key)}: { ${props} }`;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Emits a resource collection as a typed `as const` export.
|
|
79
|
+
* Returns an empty object `{}` when the collection has no entries.
|
|
80
|
+
*/
|
|
81
|
+
function emitCollection(name, resources, fieldExtractor) {
|
|
82
|
+
if (resources.length === 0) {
|
|
83
|
+
return `export const ${name} = {} as const;`;
|
|
84
|
+
}
|
|
85
|
+
const entries = resources.map((r) => {
|
|
86
|
+
const fields = fieldExtractor(r.data);
|
|
87
|
+
return emitResourceEntry(r.key, fields);
|
|
88
|
+
});
|
|
89
|
+
return `export const ${name} = {\n${entries.join(',\n')},\n} as const;`;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Renders a `NormalizedContext` into a complete TypeScript source string.
|
|
93
|
+
*
|
|
94
|
+
* The output includes:
|
|
95
|
+
* - A header comment with an auto-generated notice and context hash (R12.4)
|
|
96
|
+
* - Per-resource-type `as const` exports with required fields (R2.1–R2.4)
|
|
97
|
+
* - A `workspace` namespace aggregating all collections (R2.5)
|
|
98
|
+
* - Empty objects for empty collections in the workspace namespace (R2.5)
|
|
99
|
+
*
|
|
100
|
+
* This is a pure function: same input always produces the same output (R2.6).
|
|
101
|
+
*/
|
|
102
|
+
export function emitArtifact(norm) {
|
|
103
|
+
const hash = computeContextHash(norm);
|
|
104
|
+
const header = [
|
|
105
|
+
`// .loxtep/generated/index.ts (AUTO-GENERATED — do not edit)`,
|
|
106
|
+
`// Context hash: ${hash}`,
|
|
107
|
+
'',
|
|
108
|
+
].join('\n');
|
|
109
|
+
const dataProductsBlock = emitCollection('dataProducts', norm.dataProducts, (dp) => ({
|
|
110
|
+
name: dp.name,
|
|
111
|
+
id: dp.id,
|
|
112
|
+
domain: dp.domain,
|
|
113
|
+
schema: dp.schema,
|
|
114
|
+
}));
|
|
115
|
+
const connectorsBlock = emitCollection('connectors', norm.connectors, (c) => ({
|
|
116
|
+
name: c.name,
|
|
117
|
+
type: c.type,
|
|
118
|
+
id: c.id,
|
|
119
|
+
connection_id: c.connection_id,
|
|
120
|
+
}));
|
|
121
|
+
const domainsBlock = emitCollection('domains', norm.domains, (d) => ({
|
|
122
|
+
name: d.name,
|
|
123
|
+
id: d.id,
|
|
124
|
+
data_product_ids: d.data_product_ids,
|
|
125
|
+
}));
|
|
126
|
+
const queuesBlock = emitCollection('queues', norm.queues, (q) => ({
|
|
127
|
+
name: q.name,
|
|
128
|
+
id: q.id,
|
|
129
|
+
}));
|
|
130
|
+
const flowsBlock = emitCollection('flows', norm.flows, (f) => ({
|
|
131
|
+
name: f.name,
|
|
132
|
+
id: f.id,
|
|
133
|
+
}));
|
|
134
|
+
const workflowsBlock = emitCollection('workflows', norm.workflows, (w) => ({
|
|
135
|
+
name: w.name,
|
|
136
|
+
id: w.id,
|
|
137
|
+
}));
|
|
138
|
+
const workspaceExport = 'export const workspace = { dataProducts, connectors, domains, queues, flows, workflows } as const;';
|
|
139
|
+
const parts = [
|
|
140
|
+
header,
|
|
141
|
+
dataProductsBlock,
|
|
142
|
+
'',
|
|
143
|
+
connectorsBlock,
|
|
144
|
+
'',
|
|
145
|
+
domainsBlock,
|
|
146
|
+
'',
|
|
147
|
+
queuesBlock,
|
|
148
|
+
'',
|
|
149
|
+
flowsBlock,
|
|
150
|
+
'',
|
|
151
|
+
workflowsBlock,
|
|
152
|
+
'',
|
|
153
|
+
workspaceExport,
|
|
154
|
+
'',
|
|
155
|
+
];
|
|
156
|
+
return parts.join('\n');
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=emit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/codegen/emit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codegen module — typed Workspace Context generation pipeline.
|
|
3
|
+
*
|
|
4
|
+
* The pipeline has four stages:
|
|
5
|
+
* 1. load (I/O) — fetch resources from the control plane
|
|
6
|
+
* 2. normalize (pure) — deterministic key derivation + canonical ordering
|
|
7
|
+
* 3. emit (pure) — render typed TypeScript source
|
|
8
|
+
* 4. write (I/O) — atomic file write
|
|
9
|
+
*
|
|
10
|
+
* @module codegen
|
|
11
|
+
*/
|
|
12
|
+
export type { JsonSchema, WorkspaceContext, NormalizedContext, NormalizedResource, GenerateCounts, } from './types.js';
|
|
13
|
+
export { loadWorkspaceContext } from './load-workspace-context.js';
|
|
14
|
+
export { deriveKey, normalizeContext } from './normalize.js';
|
|
15
|
+
export { emitArtifact } from './emit.js';
|
|
16
|
+
export { writeArtifact, computeCounts } from './write-artifact.js';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/codegen/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codegen module — typed Workspace Context generation pipeline.
|
|
3
|
+
*
|
|
4
|
+
* The pipeline has four stages:
|
|
5
|
+
* 1. load (I/O) — fetch resources from the control plane
|
|
6
|
+
* 2. normalize (pure) — deterministic key derivation + canonical ordering
|
|
7
|
+
* 3. emit (pure) — render typed TypeScript source
|
|
8
|
+
* 4. write (I/O) — atomic file write
|
|
9
|
+
*
|
|
10
|
+
* @module codegen
|
|
11
|
+
*/
|
|
12
|
+
export { loadWorkspaceContext } from './load-workspace-context.js';
|
|
13
|
+
export { deriveKey, normalizeContext } from './normalize.js';
|
|
14
|
+
export { emitArtifact } from './emit.js';
|
|
15
|
+
export { writeArtifact, computeCounts } from './write-artifact.js';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/codegen/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stage 1 (I/O): Load the raw WorkspaceContext from the control plane.
|
|
3
|
+
*
|
|
4
|
+
* Queries the Loxtep API via LoxtepClient namespaces scoped to the project_id:
|
|
5
|
+
* - data_products (org-level, all available to the project)
|
|
6
|
+
* - connectors (org-level)
|
|
7
|
+
* - domains (org-level, with associated data product ids)
|
|
8
|
+
* - queues (instance-level, from observe)
|
|
9
|
+
* - flows (project-scoped)
|
|
10
|
+
* - workflows (project-scoped)
|
|
11
|
+
*
|
|
12
|
+
* @module codegen/load-workspace-context
|
|
13
|
+
*/
|
|
14
|
+
import type { LoxtepClient } from '../client/loxtep-client.js';
|
|
15
|
+
import type { WorkspaceContext } from './types.js';
|
|
16
|
+
/**
|
|
17
|
+
* Fetch all workspace resources from the control plane and assemble them into
|
|
18
|
+
* a WorkspaceContext. The client must be configured with a valid project_id.
|
|
19
|
+
*
|
|
20
|
+
* All list calls use large page sizes to fetch the complete resource set.
|
|
21
|
+
* Pagination is handled by fetching the maximum page size; projects with
|
|
22
|
+
* extremely large resource counts may need future iteration.
|
|
23
|
+
*
|
|
24
|
+
* @param client - An authenticated LoxtepClient instance
|
|
25
|
+
* @param projectId - The project to scope the context to
|
|
26
|
+
* @returns The assembled WorkspaceContext with all resource collections
|
|
27
|
+
* @throws If any control-plane query fails (caller should handle R2.8)
|
|
28
|
+
*/
|
|
29
|
+
export declare function loadWorkspaceContext(client: LoxtepClient, projectId: string): Promise<WorkspaceContext>;
|
|
30
|
+
//# sourceMappingURL=load-workspace-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-workspace-context.d.ts","sourceRoot":"","sources":["../../src/codegen/load-workspace-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAmF3B"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stage 1 (I/O): Load the raw WorkspaceContext from the control plane.
|
|
3
|
+
*
|
|
4
|
+
* Queries the Loxtep API via LoxtepClient namespaces scoped to the project_id:
|
|
5
|
+
* - data_products (org-level, all available to the project)
|
|
6
|
+
* - connectors (org-level)
|
|
7
|
+
* - domains (org-level, with associated data product ids)
|
|
8
|
+
* - queues (instance-level, from observe)
|
|
9
|
+
* - flows (project-scoped)
|
|
10
|
+
* - workflows (project-scoped)
|
|
11
|
+
*
|
|
12
|
+
* @module codegen/load-workspace-context
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Fetch all workspace resources from the control plane and assemble them into
|
|
16
|
+
* a WorkspaceContext. The client must be configured with a valid project_id.
|
|
17
|
+
*
|
|
18
|
+
* All list calls use large page sizes to fetch the complete resource set.
|
|
19
|
+
* Pagination is handled by fetching the maximum page size; projects with
|
|
20
|
+
* extremely large resource counts may need future iteration.
|
|
21
|
+
*
|
|
22
|
+
* @param client - An authenticated LoxtepClient instance
|
|
23
|
+
* @param projectId - The project to scope the context to
|
|
24
|
+
* @returns The assembled WorkspaceContext with all resource collections
|
|
25
|
+
* @throws If any control-plane query fails (caller should handle R2.8)
|
|
26
|
+
*/
|
|
27
|
+
export async function loadWorkspaceContext(client, projectId) {
|
|
28
|
+
// Fetch all resource types concurrently for performance.
|
|
29
|
+
// Project-scoped resources (flows, workflows) use projectId directly.
|
|
30
|
+
// Org-scoped resources (data products, connectors, domains) fetch all available.
|
|
31
|
+
const [dataProductsResult, connectorsResult, domainsResult, flowsResult, workflowsResult,] = await Promise.all([
|
|
32
|
+
client.data_products.list({ page: 1, page_size: 1000 }),
|
|
33
|
+
client.connectors.list({ page: 1, page_size: 1000 }),
|
|
34
|
+
client.domains.list({ page: 1, page_size: 1000 }),
|
|
35
|
+
client.flows.list({ project_id: projectId, page: 1, page_size: 1000 }),
|
|
36
|
+
client.workflows.listWorkflows({ project_id: projectId, page: 1, page_size: 1000 }),
|
|
37
|
+
]);
|
|
38
|
+
// Fetch queues from the observe endpoint (instance-level).
|
|
39
|
+
// The observe.status() returns bot/queue info for the configured instance.
|
|
40
|
+
let queuesRaw = [];
|
|
41
|
+
try {
|
|
42
|
+
const observeData = await client.observe.status();
|
|
43
|
+
queuesRaw = extractQueuesFromObserve(observeData);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// If observe is not available (e.g. no instance configured), queues will be empty.
|
|
47
|
+
// This is acceptable — queues are instance-level and may not be reachable during
|
|
48
|
+
// initial setup.
|
|
49
|
+
queuesRaw = [];
|
|
50
|
+
}
|
|
51
|
+
// Map data products to workspace context shape
|
|
52
|
+
const dataProducts = (dataProductsResult?.items ?? []).map(dp => ({
|
|
53
|
+
name: dp.name,
|
|
54
|
+
id: dp.data_product_id,
|
|
55
|
+
domain: dp.domain_id ?? null,
|
|
56
|
+
schema: dp.schema ?? null,
|
|
57
|
+
}));
|
|
58
|
+
// Map connectors to workspace context shape
|
|
59
|
+
const connectors = (connectorsResult?.items ?? []).map(c => ({
|
|
60
|
+
type: c.connector_type,
|
|
61
|
+
id: c.connector_id,
|
|
62
|
+
connection_id: null, // Connectors at org-level don't have a project connection_id
|
|
63
|
+
name: c.metadata?.name ?? c.connector_type,
|
|
64
|
+
}));
|
|
65
|
+
// Map domains to workspace context shape
|
|
66
|
+
const domainsItems = domainsResult?.items ?? [];
|
|
67
|
+
const domains = domainsItems.map(d => ({
|
|
68
|
+
name: d.name,
|
|
69
|
+
id: d.domain_id,
|
|
70
|
+
data_product_ids: dataProducts
|
|
71
|
+
.filter(dp => dp.domain === d.domain_id)
|
|
72
|
+
.map(dp => dp.id),
|
|
73
|
+
}));
|
|
74
|
+
// Map flows to workspace context shape
|
|
75
|
+
const flowItems = flowsResult?.items ?? [];
|
|
76
|
+
const flows = flowItems.map(f => ({
|
|
77
|
+
name: f.name,
|
|
78
|
+
id: f.workflow_id,
|
|
79
|
+
}));
|
|
80
|
+
// Map workflows to workspace context shape
|
|
81
|
+
const workflowItems = workflowsResult?.items ?? [];
|
|
82
|
+
const workflows = workflowItems.map(w => ({
|
|
83
|
+
name: w.name,
|
|
84
|
+
id: w.workflow_id,
|
|
85
|
+
}));
|
|
86
|
+
return {
|
|
87
|
+
dataProducts,
|
|
88
|
+
connectors,
|
|
89
|
+
domains,
|
|
90
|
+
queues: queuesRaw,
|
|
91
|
+
flows,
|
|
92
|
+
workflows,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Extract queue names and ids from the observe status response.
|
|
97
|
+
* The observe endpoint returns various shapes; we extract queue-like entries
|
|
98
|
+
* that have a name/queue_name and an identifier.
|
|
99
|
+
*/
|
|
100
|
+
function extractQueuesFromObserve(observeData) {
|
|
101
|
+
if (!observeData || typeof observeData !== 'object')
|
|
102
|
+
return [];
|
|
103
|
+
const data = observeData;
|
|
104
|
+
// Try to extract queues from common observe response shapes
|
|
105
|
+
const queuesArray = data.queues ??
|
|
106
|
+
data.data?.queues ??
|
|
107
|
+
[];
|
|
108
|
+
if (!Array.isArray(queuesArray))
|
|
109
|
+
return [];
|
|
110
|
+
const result = [];
|
|
111
|
+
for (const q of queuesArray) {
|
|
112
|
+
if (!q || typeof q !== 'object')
|
|
113
|
+
continue;
|
|
114
|
+
const entry = q;
|
|
115
|
+
const name = entry.queue_name ??
|
|
116
|
+
entry.name ??
|
|
117
|
+
'';
|
|
118
|
+
const id = entry.queue_id ??
|
|
119
|
+
entry.id ??
|
|
120
|
+
'';
|
|
121
|
+
if (name) {
|
|
122
|
+
result.push({ name, id: id || name });
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return result;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=load-workspace-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-workspace-context.js","sourceRoot":"","sources":["../../src/codegen/load-workspace-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stage 2: Normalize — deterministic key derivation + canonical ordering.
|
|
3
|
+
*
|
|
4
|
+
* This pure function transforms a raw `WorkspaceContext` into a `NormalizedContext`
|
|
5
|
+
* with stable, deterministic keys and canonical id-sorted ordering, ensuring
|
|
6
|
+
* byte-identical output for unchanged contexts (R2.6).
|
|
7
|
+
*
|
|
8
|
+
* @module codegen/normalize
|
|
9
|
+
*/
|
|
10
|
+
import type { WorkspaceContext, NormalizedContext } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Derives a deterministic, valid TypeScript identifier key from a resource name.
|
|
13
|
+
*
|
|
14
|
+
* Rules:
|
|
15
|
+
* 1. Lowercase the name
|
|
16
|
+
* 2. Replace any run of non-alphanumeric characters with a single `_`
|
|
17
|
+
* 3. Trim leading/trailing `_`
|
|
18
|
+
* 4. If result is empty or starts with a digit, prefix with `_`
|
|
19
|
+
*
|
|
20
|
+
* Collision resolution is handled separately in `normalizeCollection`.
|
|
21
|
+
*/
|
|
22
|
+
export declare function deriveKey(name: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Normalizes the entire workspace context.
|
|
25
|
+
*
|
|
26
|
+
* Transforms raw `WorkspaceContext` into `NormalizedContext` by:
|
|
27
|
+
* - Sorting each resource collection by id (ascending) for canonical ordering
|
|
28
|
+
* - Deriving deterministic keys from resource names
|
|
29
|
+
* - Resolving key collisions with `_2`, `_3`, … suffixes in id-sorted order
|
|
30
|
+
*
|
|
31
|
+
* This is a pure function: given the same input, it always produces the same output,
|
|
32
|
+
* guaranteeing byte-identical artifacts for unchanged contexts (R2.6).
|
|
33
|
+
*/
|
|
34
|
+
export declare function normalizeContext(ctx: WorkspaceContext): NormalizedContext;
|
|
35
|
+
//# sourceMappingURL=normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/codegen/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAsB,MAAM,YAAY,CAAC;AAE1F;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgB9C;AAgCD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,GAAG,iBAAiB,CASzE"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stage 2: Normalize — deterministic key derivation + canonical ordering.
|
|
3
|
+
*
|
|
4
|
+
* This pure function transforms a raw `WorkspaceContext` into a `NormalizedContext`
|
|
5
|
+
* with stable, deterministic keys and canonical id-sorted ordering, ensuring
|
|
6
|
+
* byte-identical output for unchanged contexts (R2.6).
|
|
7
|
+
*
|
|
8
|
+
* @module codegen/normalize
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Derives a deterministic, valid TypeScript identifier key from a resource name.
|
|
12
|
+
*
|
|
13
|
+
* Rules:
|
|
14
|
+
* 1. Lowercase the name
|
|
15
|
+
* 2. Replace any run of non-alphanumeric characters with a single `_`
|
|
16
|
+
* 3. Trim leading/trailing `_`
|
|
17
|
+
* 4. If result is empty or starts with a digit, prefix with `_`
|
|
18
|
+
*
|
|
19
|
+
* Collision resolution is handled separately in `normalizeCollection`.
|
|
20
|
+
*/
|
|
21
|
+
export function deriveKey(name) {
|
|
22
|
+
// Step 1: lowercase
|
|
23
|
+
let key = name.toLowerCase();
|
|
24
|
+
// Step 2: replace any run of non-alphanumeric characters with a single `_`
|
|
25
|
+
key = key.replace(/[^a-z0-9]+/g, '_');
|
|
26
|
+
// Step 3: trim leading/trailing `_`
|
|
27
|
+
key = key.replace(/^_+|_+$/g, '');
|
|
28
|
+
// Step 4: if empty or starts with a digit, prefix with `_`
|
|
29
|
+
if (key === '' || /^[0-9]/.test(key)) {
|
|
30
|
+
key = '_' + key;
|
|
31
|
+
}
|
|
32
|
+
return key;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Normalizes a single resource collection:
|
|
36
|
+
* - Sorts resources by `id` in ascending lexicographic order (canonical ordering)
|
|
37
|
+
* - Derives a key from each resource's `name`
|
|
38
|
+
* - Resolves collisions by appending `_2`, `_3`, etc. in id-sorted order
|
|
39
|
+
* (the first resource in id order keeps the base key, subsequent collisions get suffixes)
|
|
40
|
+
*/
|
|
41
|
+
function normalizeCollection(resources) {
|
|
42
|
+
// Sort by id ascending for canonical ordering
|
|
43
|
+
const sorted = [...resources].sort((a, b) => a.id.localeCompare(b.id));
|
|
44
|
+
// Group by derived base key to detect collisions
|
|
45
|
+
const keyGroups = new Map();
|
|
46
|
+
return sorted.map((resource) => {
|
|
47
|
+
const baseKey = deriveKey(resource.name);
|
|
48
|
+
// Track how many times we've seen this base key
|
|
49
|
+
const count = keyGroups.get(baseKey) ?? 0;
|
|
50
|
+
keyGroups.set(baseKey, count + 1);
|
|
51
|
+
// First occurrence keeps the base key; subsequent get _2, _3, etc.
|
|
52
|
+
const key = count === 0 ? baseKey : `${baseKey}_${count + 1}`;
|
|
53
|
+
return { key, data: resource };
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Normalizes the entire workspace context.
|
|
58
|
+
*
|
|
59
|
+
* Transforms raw `WorkspaceContext` into `NormalizedContext` by:
|
|
60
|
+
* - Sorting each resource collection by id (ascending) for canonical ordering
|
|
61
|
+
* - Deriving deterministic keys from resource names
|
|
62
|
+
* - Resolving key collisions with `_2`, `_3`, … suffixes in id-sorted order
|
|
63
|
+
*
|
|
64
|
+
* This is a pure function: given the same input, it always produces the same output,
|
|
65
|
+
* guaranteeing byte-identical artifacts for unchanged contexts (R2.6).
|
|
66
|
+
*/
|
|
67
|
+
export function normalizeContext(ctx) {
|
|
68
|
+
return {
|
|
69
|
+
dataProducts: normalizeCollection(ctx.dataProducts),
|
|
70
|
+
connectors: normalizeCollection(ctx.connectors),
|
|
71
|
+
domains: normalizeCollection(ctx.domains),
|
|
72
|
+
queues: normalizeCollection(ctx.queues),
|
|
73
|
+
flows: normalizeCollection(ctx.flows),
|
|
74
|
+
workflows: normalizeCollection(ctx.workflows),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/codegen/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,oBAAoB;IACpB,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAE7B,2EAA2E;IAC3E,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAEtC,oCAAoC;IACpC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAElC,2DAA2D;IAC3D,IAAI,GAAG,KAAK,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAC1B,SAAc;IAEd,8CAA8C;IAC9C,MAAM,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvE,iDAAiD;IACjD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE5C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEzC,gDAAgD;QAChD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1C,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAElC,mEAAmE;QACnE,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAE9D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAqB;IACpD,OAAO;QACL,YAAY,EAAE,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC;QACnD,UAAU,EAAE,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC;QAC/C,OAAO,EAAE,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC;QACzC,MAAM,EAAE,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC;QACvC,KAAK,EAAE,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;QACrC,SAAS,EAAE,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC;KAC9C,CAAC;AACJ,CAAC"}
|