@feltdb/core 0.7.4 → 0.8.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.
Files changed (106) hide show
  1. package/README.md +25 -0
  2. package/dist/application-development.d.ts +3 -1
  3. package/dist/application-development.d.ts.map +1 -1
  4. package/dist/application-development.js +16 -0
  5. package/dist/application-manifest.d.ts +1 -0
  6. package/dist/application-manifest.d.ts.map +1 -1
  7. package/dist/canonical-application.d.ts +1 -0
  8. package/dist/canonical-application.d.ts.map +1 -1
  9. package/dist/canonical-application.js +3 -2
  10. package/dist/cli/cli.js +1 -1
  11. package/dist/cli/commands.js +225 -42
  12. package/dist/cli/index.js +1 -1
  13. package/dist/cli/managed-environment.js +6 -0
  14. package/dist/cli/managed-project.js +6 -0
  15. package/dist/cli/proposal-client.js +12 -3
  16. package/dist/cli/publish-engine.js +7 -4
  17. package/dist/cli/source-sync.js +47 -3
  18. package/dist/create/cli.js +10 -1
  19. package/dist/create/create.js +10 -12
  20. package/dist/create/managed-account.js +71 -7
  21. package/dist/create/package-versions.js +1 -1
  22. package/dist/create/server-source/crates/feltdb/src/application.rs +10 -0
  23. package/dist/create/server-source/crates/feltdb/src/lib.rs +20 -2
  24. package/dist/create/server-source/crates/feltdb-server/src/app_state.rs +12 -24
  25. package/dist/create/server-source/crates/feltdb-server/src/application_contract.rs +11 -3
  26. package/dist/create/server-source/crates/feltdb-server/src/authenticated_principal.rs +0 -1
  27. package/dist/create/server-source/crates/feltdb-server/src/certification_harness.rs +23 -22
  28. package/dist/create/server-source/crates/feltdb-server/src/delegation_token.rs +5 -15
  29. package/dist/create/server-source/crates/feltdb-server/src/durable_operations.rs +13 -28
  30. package/dist/create/server-source/crates/feltdb-server/src/identity.rs +79 -14
  31. package/dist/create/server-source/crates/feltdb-server/src/key_management.rs +28 -7
  32. package/dist/create/server-source/crates/feltdb-server/src/lib.rs +5 -5
  33. package/dist/create/server-source/crates/feltdb-server/src/main.rs +1777 -259
  34. package/dist/create/server-source/crates/feltdb-server/src/managed_diagnostics.rs +10 -30
  35. package/dist/create/server-source/crates/feltdb-server/src/membership_policy.rs +12 -4
  36. package/dist/create/server-source/crates/feltdb-server/src/request_telemetry.rs +8 -6
  37. package/dist/create/server-source/crates/feltdb-server/src/snapshot_cursor.rs +10 -14
  38. package/dist/create/server-source/crates/feltdb-server/src/tenancy.rs +183 -21
  39. package/dist/create/server-source/crates/feltdb-server/src/tenant_policies.rs +9 -21
  40. package/dist/create/server-source/crates/feltdb-server/src/transaction_idempotency.rs +5 -3
  41. package/dist/create/server-source/crates/feltdb-server/src/transaction_recovery.rs +9 -8
  42. package/dist/create/server-source/crates/feltdb-server/tests/revision_recovery_integration_test.rs +1 -4
  43. package/dist/create/template/default-project/feltdb.flow +5 -0
  44. package/dist/flowspec.d.ts +1 -0
  45. package/dist/flowspec.d.ts.map +1 -1
  46. package/dist/flowspec.js +46 -12
  47. package/dist/http-client.d.ts +135 -14
  48. package/dist/http-client.d.ts.map +1 -1
  49. package/dist/http-client.js +79 -31
  50. package/dist/index-core.d.ts +2 -0
  51. package/dist/index-core.d.ts.map +1 -1
  52. package/dist/index-core.js +2 -0
  53. package/dist/module-intent.d.ts +37 -0
  54. package/dist/module-intent.d.ts.map +1 -0
  55. package/dist/module-intent.js +81 -0
  56. package/dist/module.d.ts +76 -0
  57. package/dist/module.d.ts.map +1 -0
  58. package/dist/module.js +61 -0
  59. package/dist/proposal.d.ts +80 -4
  60. package/dist/proposal.d.ts.map +1 -1
  61. package/dist/proposal.js +132 -5
  62. package/dist/studio/app.d.ts +3 -1
  63. package/dist/studio/app.d.ts.map +1 -1
  64. package/dist/studio/components/AskFeltDB.d.ts +2 -1
  65. package/dist/studio/components/AskFeltDB.d.ts.map +1 -1
  66. package/dist/studio/components/ContractInspector.d.ts +7 -0
  67. package/dist/studio/components/ContractInspector.d.ts.map +1 -0
  68. package/dist/studio/components/ManagedInstancePanel.d.ts.map +1 -1
  69. package/dist/studio/components/ManagedInstancePanel.js +1 -5
  70. package/dist/studio/components/ModuleExplorer.d.ts +6 -0
  71. package/dist/studio/components/ModuleExplorer.d.ts.map +1 -0
  72. package/dist/studio/components/ProposalBrowser.d.ts +10 -1
  73. package/dist/studio/components/ProposalBrowser.d.ts.map +1 -1
  74. package/dist/studio/components/StateExplorer.d.ts +6 -7
  75. package/dist/studio/components/StateExplorer.d.ts.map +1 -1
  76. package/dist/studio/components/index.d.ts +2 -0
  77. package/dist/studio/components/index.d.ts.map +1 -1
  78. package/dist/studio/components/index.js +4 -4
  79. package/dist/studio/components-CNSNrmA9.js +2787 -0
  80. package/dist/studio/index.js +193 -147
  81. package/dist/studio/studio.css +1 -1
  82. package/dist/studio/utils/index.d.ts +2 -0
  83. package/dist/studio/utils/index.d.ts.map +1 -1
  84. package/dist/studio/utils/index.js +14 -12
  85. package/dist/studio/utils/managed-instance.d.ts +0 -4
  86. package/dist/studio/utils/managed-instance.d.ts.map +1 -1
  87. package/dist/studio/utils/managed-instance.js +0 -4
  88. package/dist/studio/utils/proposal-api.d.ts +53 -0
  89. package/dist/studio/utils/proposal-api.d.ts.map +1 -0
  90. package/dist/studio/utils/proposal-api.js +91 -0
  91. package/dist/studio/utils/service-api.d.ts +81 -0
  92. package/dist/studio/utils/service-api.d.ts.map +1 -0
  93. package/dist/studio/utils/service-api.js +51 -0
  94. package/dist/studio-app/assets/{dist-DA1MYSzp.js → dist-CCOk39Uc.js} +1 -1
  95. package/dist/studio-app/assets/{feltdb_wasm-B-Ccgccb.js → feltdb_wasm-CSB6KVgw.js} +1 -1
  96. package/dist/studio-app/assets/feltdb_wasm_bg-Dd1fnO9U.wasm +0 -0
  97. package/dist/studio-app/assets/index-Bncji3aN.js +43 -0
  98. package/dist/studio-app/assets/{index-BRrmvaKw.css → index-yazaWMUN.css} +1 -1
  99. package/dist/studio-app/index.html +2 -2
  100. package/dist/wasm/feltdb_wasm_bg.wasm +0 -0
  101. package/dist/workspace/local-development-authority.d.ts.map +1 -1
  102. package/dist/workspace/local-development-authority.js +64 -3
  103. package/package.json +1 -1
  104. package/dist/studio/components-Bm4sjhcX.js +0 -2162
  105. package/dist/studio-app/assets/feltdb_wasm_bg-wH3enJIA.wasm +0 -0
  106. package/dist/studio-app/assets/index-CEIqowCh.js +0 -42
package/README.md CHANGED
@@ -30,6 +30,31 @@ Install `react` and `react-dom` only when using the React bindings. The
30
30
  `@feltdb/webllm` package remains an optional, separately installed AI runtime.
31
31
  The `feltdb studio` command serves the Studio application bundled with core.
32
32
 
33
+ ## Canonical managed Service API
34
+
35
+ Use one scoped client for managed application discovery, authorized data
36
+ inspection, and the Proposal lifecycle:
37
+
38
+ ```typescript
39
+ import { createClient } from '@feltdb/core';
40
+
41
+ const feltdb = createClient({
42
+ url: process.env.FELTDB_URL!,
43
+ token: process.env.FELTDB_TOKEN!,
44
+ applicationId: process.env.FELTDB_APPLICATION_ID!,
45
+ environment: 'production',
46
+ });
47
+
48
+ const application = await feltdb.application.get();
49
+ const users = await feltdb.data.list('User', { limit: 50 });
50
+ const proposals = await feltdb.proposals.list({ status: 'previewed' });
51
+ ```
52
+
53
+ All these operations use the application-facing `/v1` Service API and retain
54
+ the same application/environment scope. Proposal approval is available here;
55
+ repository application intentionally is not. Only `feltdb ai apply <id>` owns
56
+ repository mutation.
57
+
33
58
  ## Quick Start
34
59
 
35
60
  ```typescript
@@ -14,6 +14,7 @@ export interface FeltDBContractSnapshot {
14
14
  workflows: CanonicalApplicationContract['manifest']['workflows'];
15
15
  agents: CanonicalApplicationContract['manifest']['agents'];
16
16
  capabilities: CanonicalApplicationContract['manifest']['capabilities'];
17
+ modules: NonNullable<CanonicalApplicationContract['manifest']['modules']>;
17
18
  supported_primitives: readonly string[];
18
19
  }
19
20
  export interface FeltDBFlowProposal {
@@ -23,6 +24,7 @@ export interface FeltDBFlowProposal {
23
24
  summary: string;
24
25
  changes: string[];
25
26
  warnings: string[];
27
+ implementation?: import('./module-intent.js').ModuleImplementationPlan;
26
28
  }
27
29
  export interface AuthorizationChange {
28
30
  policy: string;
@@ -51,7 +53,7 @@ export declare function loadContractSnapshot(db: {
51
53
  };
52
54
  }): Promise<FeltDBContractSnapshot>;
53
55
  export declare function flowSourceHash(source: string): Promise<string>;
54
- export declare const FELTDB_FLOW_DSL_GUIDE = "FeltDB FlowSpec v1 reference:\n- One document: flow_version 1, then app Name { ... }.\n- collection Name { field: primitive; optional fields append ?; references use ref Collection; indexes use index name using hash(field) }.\n- capability Name { visibility public|internal|agent; read Collection; write Collection }.\n- workflow Name { step step_name { read Collection | write Collection | capability CapabilityName } }.\n- agent Name { capability CapabilityName; workflow WorkflowName }.\n- policy Collection { read: expression; write: expression }. Preserve existing authorization unless the request explicitly requires a change.\n- Valid policy examples include authenticated, member, owner, self(field), and alternatives joined with |.\n- Every referenced collection, capability, and workflow must be declared. Names are case-sensitive.\n- Use only supported_primitives from the supplied snapshot. Do not invent UI, deployment, record data, secrets, or executable implementation syntax.\n- Make the smallest semantic change that satisfies the request and retain all unrelated declarations.";
56
+ export declare const FELTDB_FLOW_DSL_GUIDE = "FeltDB FlowSpec v1 reference:\n- One document: flow_version 1, then app Name { ... }.\n- collection Name { field: primitive; optional fields append ?; references use ref Collection; indexes use index name using hash(field) }.\n- capability Name { visibility public|internal|agent; read Collection; write Collection }.\n- module Name { provider provider-name; version exact-semver }. Module-qualified references use ref module.Model.\n- workflow Name { step step_name { read Collection | write Collection | capability CapabilityName } }.\n- agent Name { capability CapabilityName; workflow WorkflowName }.\n- policy Collection { read: expression; write: expression }. Preserve existing authorization unless the request explicitly requires a change.\n- Valid policy examples include authenticated, member, owner, self(field), and alternatives joined with |.\n- Every referenced collection, capability, and workflow must be declared. Names are case-sensitive.\n- Use only supported_primitives from the supplied snapshot. Do not invent UI, deployment, record data, secrets, or executable implementation syntax.\n- Make the smallest semantic change that satisfies the request and retain all unrelated declarations.";
55
57
  /** One provider-neutral prompt used by local WebLLM and bring-your-own models. */
56
58
  export declare function createFlowProposalMessages(snapshot: FeltDBContractSnapshot, currentFlow: string, intent: string): ({
57
59
  role: "system";
@@ -1 +1 @@
1
- {"version":3,"file":"application-development.d.ts","sourceRoot":"","sources":["../src/application-development.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"application-development.d.ts","sourceRoot":"","sources":["../src/application-development.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { canonicalApplicationBytes, compileApplicationContract } from './canonical-application.js';
2
2
  import { FLOW_PRIMITIVE_TYPES, diffFlowSpec, parseFlowSpec, planFlowSpecMigration, validateFlowSpec, } from './flowspec.js';
3
+ import { planModuleImplementation, resolveModuleIntent } from './module-intent.js';
3
4
  async function sha256(value) {
4
5
  const digest = await crypto.subtle.digest('SHA-256', value.slice().buffer);
5
6
  return `sha256:${Array.from(new Uint8Array(digest), byte => byte.toString(16).padStart(2, '0')).join('')}`;
@@ -23,6 +24,7 @@ export function createContractSnapshot(contract, options = {}) {
23
24
  workflows: manifest.workflows,
24
25
  agents: manifest.agents,
25
26
  capabilities: manifest.capabilities,
27
+ modules: manifest.modules ?? [],
26
28
  supported_primitives: FLOW_PRIMITIVE_TYPES,
27
29
  };
28
30
  }
@@ -45,6 +47,7 @@ export const FELTDB_FLOW_DSL_GUIDE = `FeltDB FlowSpec v1 reference:
45
47
  - One document: flow_version 1, then app Name { ... }.
46
48
  - collection Name { field: primitive; optional fields append ?; references use ref Collection; indexes use index name using hash(field) }.
47
49
  - capability Name { visibility public|internal|agent; read Collection; write Collection }.
50
+ - module Name { provider provider-name; version exact-semver }. Module-qualified references use ref module.Model.
48
51
  - workflow Name { step step_name { read Collection | write Collection | capability CapabilityName } }.
49
52
  - agent Name { capability CapabilityName; workflow WorkflowName }.
50
53
  - policy Collection { read: expression; write: expression }. Preserve existing authorization unless the request explicitly requires a change.
@@ -54,6 +57,7 @@ export const FELTDB_FLOW_DSL_GUIDE = `FeltDB FlowSpec v1 reference:
54
57
  - Make the smallest semantic change that satisfies the request and retain all unrelated declarations.`;
55
58
  /** One provider-neutral prompt used by local WebLLM and bring-your-own models. */
56
59
  export function createFlowProposalMessages(snapshot, currentFlow, intent) {
60
+ const moduleIntent = resolveModulePlanningContext(intent, snapshot, currentFlow);
57
61
  return [
58
62
  { role: 'system', content: [
59
63
  'You propose minimal changes to a FeltDB application.',
@@ -65,10 +69,22 @@ export function createFlowProposalMessages(snapshot, currentFlow, intent) {
65
69
  FELTDB_FLOW_DSL_GUIDE,
66
70
  `Current contract snapshot: ${contractSnapshotText(snapshot)}`,
67
71
  `Current feltdb.flow:\n${currentFlow}`,
72
+ moduleIntent ? `Authoritative resolved module implementation context (fit these semantics to the application; do not invent or redefine module semantics):\n${moduleIntent}` : '',
68
73
  ].join('\n\n') },
69
74
  { role: 'user', content: intent },
70
75
  ];
71
76
  }
77
+ function resolveModulePlanningContext(intent, snapshot, currentFlow) {
78
+ try {
79
+ const resolved = resolveModuleIntent(intent);
80
+ return resolved ? JSON.stringify(planModuleImplementation(resolved, snapshot, currentFlow)) : undefined;
81
+ }
82
+ catch (error) {
83
+ if (error instanceof Error && (error.message.startsWith('MODULE_NOT_AVAILABLE') || error.message.startsWith('AMBIGUOUS_MODULE_INTENT')))
84
+ throw error;
85
+ return undefined;
86
+ }
87
+ }
72
88
  /** Parse and validate untrusted model output through the canonical FeltDB pipeline. */
73
89
  export async function validateGeneratedFlowProposal(input) {
74
90
  const cleaned = input.raw.trim().replace(/^```(?:json)?\s*/i, '').replace(/\s*```$/, '');
@@ -79,6 +79,7 @@ export interface ApplicationManifest {
79
79
  provider?: string;
80
80
  visibility?: 'public' | 'agent' | 'workflow' | 'internal';
81
81
  }[];
82
+ modules?: import('./module.js').FeltDBModuleDefinition[];
82
83
  connections: {
83
84
  name: string;
84
85
  connection_id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"application-manifest.d.ts","sourceRoot":"","sources":["../src/application-manifest.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,MAAM,WAAW,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAA,QAAQ,CAAC,EAAC,OAAO,CAAC;IAAA,OAAO,CAAC,EAAC,OAAO,CAAC;IAAA,WAAW,CAAC,EAAC,MAAM,EAAE,CAAC;IAAA,SAAS,CAAC,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,EAAC,MAAM,CAAA;CAAE;AAC7K,MAAM,WAAW,kBAAkB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE;AAC7E,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAA,oBAAoB,CAAC,EAAC,MAAM,CAAC;IACvF,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAAA;KAAE,CAAC;IACjF,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,OAAO,EAAE;QAAE,IAAI,EAAC,MAAM,CAAC;QAAC,UAAU,EAAC,MAAM,CAAC;QAAC,MAAM,EAAC,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAC,OAAO,CAAC;QAAA,MAAM,CAAC,EAAC,OAAO,CAAC;QAAA,OAAO,CAAC,EAAC,MAAM,CAAA;KAAE,EAAE,CAAC;IAChH,UAAU,EAAE;QAAE,IAAI,EAAC,MAAM,CAAC;QAAC,eAAe,EAAC,MAAM,CAAC;QAAC,UAAU,EAAC,MAAM,CAAC;QAAC,aAAa,EAAC,MAAM,CAAC;QAAC,QAAQ,EAAC,MAAM,CAAA;KAAE,EAAE,CAAC;IAChH,OAAO,EAAE;QAAE,IAAI,EAAC,MAAM,CAAC;QAAC,UAAU,EAAC,MAAM,CAAC;QAAC,MAAM,CAAC,EAAC,OAAO,CAAC;QAAC,MAAM,CAAC,EAAC,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACjF,OAAO,EAAE;QAAE,IAAI,EAAC,MAAM,CAAC;QAAC,SAAS,EAAC,QAAQ,GAAC,QAAQ,GAAC,QAAQ,CAAC;QAAC,UAAU,EAAC,MAAM,CAAC;QAAC,YAAY,CAAC,EAAC,MAAM,EAAE,CAAC;QAAC,qBAAqB,CAAC,EAAC,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAC,OAAO,CAAA;KAAE,EAAE,CAAC;IAC7J,SAAS,EAAE;QAAE,IAAI,EAAC,MAAM,CAAC;QAAC,KAAK,EAAC;YAAC,IAAI,EAAC,MAAM,CAAC;YAAC,UAAU,CAAC,EAAC,MAAM,CAAA;SAAC,EAAE,CAAA;KAAE,EAAE,CAAC;IACxE,QAAQ,EAAE;QAAE,IAAI,EAAC,MAAM,CAAC;QAAC,KAAK,EAAC,MAAM,CAAC;QAAC,QAAQ,EAAC,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3D,SAAS,EAAE;QAAE,IAAI,EAAC,MAAM,CAAC;QAAC,UAAU,EAAC,MAAM,CAAC;QAAC,QAAQ,EAAC,MAAM,CAAA;KAAE,EAAE,CAAC;IACjE,MAAM,EAAE;QAAE,IAAI,EAAC,MAAM,CAAC;QAAC,YAAY,EAAC,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACjD,YAAY,EAAE;QAAE,IAAI,EAAC,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAC,MAAM,CAAC;QAAC,UAAU,CAAC,EAAC,QAAQ,GAAC,OAAO,GAAC,UAAU,GAAC,UAAU,CAAA;KAAE,EAAE,CAAC;IACtG,WAAW,EAAE;QAAE,IAAI,EAAC,MAAM,CAAC;QAAC,aAAa,EAAC,MAAM,CAAC;QAAC,aAAa,CAAC,EAAC,OAAO,CAAC;QAAC,OAAO,CAAC,EAAC;YAAC,OAAO,EAAC,MAAM,CAAC;YAAA,SAAS,EAAC,MAAM,CAAA;SAAC,EAAE,CAAA;KAAE,EAAE,CAAC;IAC3H,QAAQ,EAAE;QAAE,IAAI,EAAC,MAAM,CAAC;QAAC,QAAQ,EAAC,MAAM,CAAC;QAAC,IAAI,CAAC,EAAC,MAAM,CAAC;QAAC,KAAK,CAAC,EAAC,MAAM,CAAC;QAAC,YAAY,EAAC,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACjG,EAAE,EAAE;QAAE,MAAM,EAAC;YAAC,IAAI,EAAC,MAAM,CAAC;YAAA,IAAI,EAAC,MAAM,CAAA;SAAC,EAAE,CAAC;QAAC,QAAQ,EAAC;YAAC,IAAI,EAAC,MAAM,CAAC;YAAA,UAAU,CAAC,EAAC,MAAM,CAAC;YAAA,KAAK,CAAC,EAAC,MAAM,CAAC;YAAA,MAAM,CAAC,EAAC,MAAM,EAAE,CAAA;SAAC,EAAE,CAAC;QAAC,KAAK,EAAC;YAAC,IAAI,EAAC,MAAM,CAAC;YAAA,UAAU,EAAC,MAAM,CAAC;YAAA,MAAM,EAAC,MAAM,EAAE,CAAA;SAAC,EAAE,CAAC;QAAC,UAAU,EAAC;YAAC,IAAI,EAAC,MAAM,CAAC;YAAA,QAAQ,EAAC,MAAM,EAAE,CAAA;SAAC,EAAE,CAAA;KAAE,CAAC;IAC9N,YAAY,EAAE;QAAE,IAAI,EAAC,MAAM,CAAC;QAAC,aAAa,CAAC,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAAA;KAAE,EAAE,CAAC;IACtE,SAAS,EAAE;QAAE,IAAI,EAAC,MAAM,CAAC;QAAC,GAAG,EAAC,MAAM,CAAC;QAAC,UAAU,EAAC,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5D,UAAU,EAAE;QAAE,YAAY,EAAC,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAC,MAAM,CAAA;KAAE,CAAC;IACzD,OAAO,EAAE;QAAE,QAAQ,EAAC,MAAM,CAAC;QAAC,cAAc,EAAC,MAAM,CAAC;QAAC,wBAAwB,CAAC,EAAC,MAAM,CAAA;KAAE,CAAC;CACvF;AACD,MAAM,WAAW,gBAAgB;IAAG,QAAQ,EAAC,MAAM,CAAC;IAAC,cAAc,EAAC,MAAM,CAAC;IAAC,SAAS,EAAC,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAC,MAAM,CAAC;IAAC,QAAQ,EAAC,mBAAmB,CAAC;IAAC,OAAO,EAAC,MAAM,CAAC;IAAC,UAAU,EAAC,MAAM,CAAC;IAAC,UAAU,EAAC,MAAM,CAAA;CAAE;AAC5M,MAAM,WAAW,mBAAmB;IAAG,WAAW,EAAC,MAAM,CAAC;IAAC,cAAc,EAAC,MAAM,CAAC;IAAC,SAAS,EAAC,MAAM,CAAC;IAAC,eAAe,EAAC,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAC,MAAM,CAAC;IAAC,aAAa,EAAC,MAAM,CAAC;IAAC,QAAQ,EAAC,mBAAmB,CAAC;IAAC,UAAU,EAAC,MAAM,CAAC;IAAC,UAAU,EAAC,MAAM,CAAC;IAAC,MAAM,EAAC,WAAW,CAAA;CAAE;AACtQ,MAAM,WAAW,mBAAmB;IAAG,WAAW,CAAC,EAAC,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAC,MAAM,CAAC;IAAC,QAAQ,EAAC,mBAAmB,CAAC;IAAC,SAAS,CAAC,EAAC,MAAM,CAAC;IAAC,WAAW,EAAC,MAAM,CAAA;CAAE;AAC3J,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAC,oBAAoB,GAAC,UAAU,GAAC,SAAS,CAAC;AAC3F,MAAM,WAAW,kBAAkB;IAAG,KAAK,EAAC,OAAO,CAAC;IAAC,aAAa,EAAC,qBAAqB,CAAC;IAAC,MAAM,EAAC;QAAC,QAAQ,EAAC,MAAM,CAAC;QAAA,IAAI,EAAC,MAAM,CAAC;QAAA,OAAO,EAAC,MAAM,CAAA;KAAC,EAAE,CAAA;CAAE;AACjJ,MAAM,MAAM,YAAY,GAAC,MAAM,GAAC,UAAU,GAAC,UAAU,GAAC,oBAAoB,GAAC,UAAU,GAAC,oBAAoB,GAAC,mBAAmB,CAAC;AAC/H,MAAM,WAAW,YAAY;IAAG,cAAc,EAAC,MAAM,CAAC;IAAA,aAAa,CAAC,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,cAAc,EAAC,WAAW,GAAC,UAAU,GAAC,UAAU,GAAC,oBAAoB,GAAC,UAAU,GAAC,oBAAoB,GAAC,mBAAmB,CAAC;IAAC,aAAa,EAAC,qBAAqB,CAAC;IAAC,OAAO,EAAC;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,IAAI,EAAC,MAAM,CAAC;QAAA,IAAI,EAAC,OAAO,GAAC,SAAS,GAAC,UAAU,CAAC;QAAA,MAAM,EAAC,YAAY,CAAC;QAAA,MAAM,CAAC,EAAC,MAAM,CAAA;KAAC,EAAE,CAAC;IAAA,UAAU,EAAC;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,QAAQ,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,MAAM,CAAC;QAAA,WAAW,EAAC,OAAO,CAAA;KAAC,EAAE,CAAC;IAAA,gBAAgB,EAAC;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,QAAQ,EAAC,MAAM,CAAC;QAAA,WAAW,EAAC,MAAM,CAAA;KAAC,EAAE,CAAC;IAAA,cAAc,EAAC;QAAC,aAAa,CAAC,EAAC,MAAM,CAAC;QAAA,WAAW,EAAC,MAAM,CAAC;QAAA,UAAU,EAAC,OAAO,EAAE,CAAC;QAAA,sBAAsB,EAAC,OAAO,EAAE,CAAC;QAAA,UAAU,EAAC,OAAO,CAAA;KAAC,CAAC;IAAA,SAAS,EAAC,MAAM,CAAA;CAAE;AAC1pB,MAAM,WAAW,gBAAgB;IAAE,WAAW,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,OAAO,GAAC,qBAAqB,GAAC,SAAS,CAAC;IAAA,MAAM,EAAC;QAAC,IAAI,EAAC,MAAM,CAAC;QAAA,MAAM,EAAC,OAAO,CAAC;QAAA,QAAQ,EAAC,OAAO,CAAC;QAAA,OAAO,EAAC,MAAM,CAAA;KAAC,EAAE,CAAA;CAAC;AAC9L,MAAM,WAAW,iBAAiB;IAAE,cAAc,EAAC,MAAM,CAAC;IAAA,aAAa,CAAC,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,MAAM,CAAC;IAAA,SAAS,EAAC,MAAM,CAAC;IAAA,cAAc,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,OAAO,CAAA;CAAC;AAClO,MAAM,WAAW,0BAA0B;IAAG,cAAc,EAAC,MAAM,CAAC;IAAA,SAAS,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,eAAe,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAAA,KAAK,EAAC,OAAO,CAAC;IAAA,OAAO,EAAC;QAAC,WAAW,EAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAAA,aAAa,EAAC,OAAO,CAAA;KAAC,CAAC;IAAA,OAAO,EAAC;QAAC,WAAW,EAAC,mBAAmB,CAAC,SAAS,CAAC,CAAA;KAAC,CAAC;IAAA,SAAS,EAAC,OAAO,CAAC;IAAA,QAAQ,EAAC,OAAO,CAAC;IAAA,SAAS,EAAC,OAAO,CAAC;IAAA,MAAM,EAAC,OAAO,CAAC;IAAA,YAAY,EAAC,OAAO,CAAC;IAAA,WAAW,EAAC,OAAO,CAAC;IAAA,QAAQ,EAAC,OAAO,CAAC;IAAA,EAAE,EAAC,OAAO,CAAC;IAAA,SAAS,EAAC,OAAO,CAAC;IAAA,WAAW,EAAC;QAAC,IAAI,EAAC,MAAM,CAAC;QAAA,aAAa,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;QAAA,eAAe,EAAC,MAAM,CAAC;QAAA,QAAQ,EAAC,OAAO,CAAA;KAAC,CAAC;IAAA,aAAa,EAAC;QAAC,gBAAgB,EAAC,MAAM,CAAC;QAAA,wBAAwB,EAAC,MAAM,CAAC;QAAA,cAAc,EAAC,MAAM,CAAC;QAAA,cAAc,EAAC,MAAM,CAAC;QAAA,wBAAwB,CAAC,EAAC,MAAM,CAAA;KAAC,CAAA;CAAE;AAE7sB,qBAAa,yBAAyB;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAO,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAApC,OAAO,SAAK,EAAmB,KAAK,SAAK;YACxD,OAAO;IACrB,WAAW,CAAC,aAAa,EAAC,MAAM,EAAC,cAAc,CAAC,EAAC,MAAM;IACvD,QAAQ,CAAC,aAAa,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM;IAC5C,WAAW,CAAC,aAAa,EAAC,MAAM,EAAC,KAAK,EAAC,gBAAgB,EAAC,QAAQ,EAAC,mBAAmB;IACpF,aAAa,CAAC,aAAa,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM;IACjD,WAAW,CAAC,aAAa,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM;IAC/C,SAAS,CAAC,aAAa,EAAC,MAAM;mBAAiC,mBAAmB,EAAE;8BAAsB,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC;;IAC/H,IAAI,CAAC,aAAa,EAAC,MAAM,EAAC,QAAQ,EAAC,MAAM,GAAC,MAAM,EAAC,IAAI,CAAC,EAAC,MAAM,GAAC,MAAM;IACpE,OAAO,CAAC,aAAa,EAAC,MAAM,EAAC,QAAQ,EAAC,MAAM,GAAC,MAAM,EAAC,MAAM,CAAC,EAAC,OAAO;IACnE,YAAY,CAAC,aAAa,EAAC,MAAM;sBAAoC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC;;IAC1F,SAAS,CAAC,aAAa,EAAC,MAAM,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,CAAC,EAAC,MAAM,GAAC,MAAM;IACzE,kBAAkB,CAAC,aAAa,EAAC,MAAM,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAC,MAAM,EAAC,uBAAuB,CAAC,EAAC,MAAM,EAAC,MAAM,SAAG,EAAC,yBAAyB,UAAM;mBAAiC,iBAAiB;mBAAW,gBAAgB;;IACjO,QAAQ,CAAC,aAAa,EAAC,MAAM,EAAC,WAAW,EAAC,MAAM,EAAC,cAAc,EAAC,MAAM,EAAC,uBAAuB,EAAC,MAAM,EAAC,MAAM,SAAG;mBAAiC,iBAAiB;mBAAW,gBAAgB;;IAC5L,OAAO,CAAC,aAAa,EAAC,MAAM,EAAC,WAAW,EAAC,MAAM;iBAA+B,iBAAiB,EAAE;;IACjG,OAAO,CAAC,aAAa,EAAC,MAAM,EAAC,QAAQ,EAAC,MAAM,GAAC,MAAM,EAAC,WAAW,EAAC,MAAM,EAAC,MAAM,SAAG,EAAC,uBAAuB,CAAC,EAAC,MAAM,EAAC,yBAAyB,UAAM;IAChJ,OAAO,CAAC,aAAa,EAAC,MAAM,EAAC,QAAQ,EAAC,MAAM,GAAC,MAAM,EAAC,WAAW,SAAa;IAC5E,GAAG,CAAC,aAAa,EAAC,MAAM,EAAC,QAAQ,EAAC,MAAM,GAAC,MAAM,EAAC,WAAW,SAAU;IACrE,IAAI,CAAC,aAAa,EAAC,MAAM,EAAC,QAAQ,EAAC,MAAM,GAAC,MAAM,EAAC,WAAW,SAAU;IACtE,aAAa,CAAC,aAAa,EAAC,MAAM,EAAC,QAAQ,EAAC,MAAM,GAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,EAAC,WAAW,SAAU;IAC3G,YAAY,CAAC,aAAa,EAAC,MAAM,EAAC,QAAQ,EAAC,MAAM,GAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,WAAW,SAAU;CAC5F"}
1
+ {"version":3,"file":"application-manifest.d.ts","sourceRoot":"","sources":["../src/application-manifest.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export interface CanonicalApplicationHashes {
6
6
  workflows: string;
7
7
  agents: string;
8
8
  capabilities: string;
9
+ modules: string;
9
10
  application: string;
10
11
  }
11
12
  /** Executable, transport-neutral application definition compiled from feltdb.flow. */
@@ -1 +1 @@
1
- {"version":3,"file":"canonical-application.d.ts","sourceRoot":"","sources":["../src/canonical-application.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAElE,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,sFAAsF;AACtF,MAAM,WAAW,4BAA4B;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE,0BAA0B,CAAC;CACpC;AAaD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAEpE;AAQD;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,4BAA4B,CAAC,CAmBvC"}
1
+ {"version":3,"file":"canonical-application.d.ts","sourceRoot":"","sources":["../src/canonical-application.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAElE,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,sFAAsF;AACtF,MAAM,WAAW,4BAA4B;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE,0BAA0B,CAAC;CACpC;AAaD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAEpE;AAQD;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,4BAA4B,CAAC,CAoBvC"}
@@ -26,12 +26,13 @@ export async function compileApplicationContract(spec, tenantId, applicationId)
26
26
  if (spec.version !== 1)
27
27
  throw new Error(`Unsupported flow_version ${spec.version}; this SDK supports flow_version 1`);
28
28
  const manifest = flowSpecToManifest(spec, tenantId, applicationId);
29
- const [model, authorization, workflows, agents, capabilities] = await Promise.all([
29
+ const [model, authorization, workflows, agents, capabilities, modules] = await Promise.all([
30
30
  hash({ collections: manifest.collections, indexes: manifest.indexes, references: manifest.references }),
31
31
  hash(manifest.policies),
32
32
  hash({ workflows: manifest.workflows, triggers: manifest.triggers, schedules: manifest.schedules }),
33
33
  hash(manifest.agents),
34
34
  hash(manifest.capabilities),
35
+ hash(manifest.modules ?? []),
35
36
  ]);
36
37
  const application = await hash({ dsl_version: spec.version, manifest });
37
38
  return {
@@ -40,6 +41,6 @@ export async function compileApplicationContract(spec, tenantId, applicationId)
40
41
  schema_version: manifest.schema,
41
42
  dsl_version: spec.version,
42
43
  manifest,
43
- hashes: { model, authorization, workflows, agents, capabilities, application },
44
+ hashes: { model, authorization, workflows, agents, capabilities, modules, application },
44
45
  };
45
46
  }
package/dist/cli/cli.js CHANGED
@@ -11,7 +11,7 @@ async function main() {
11
11
  await handleCommand(command, process.argv.slice(3));
12
12
  }
13
13
  catch (error) {
14
- console.error('Error:', error);
14
+ console.error('Error:', error instanceof Error ? error.message : String(error));
15
15
  process.exit(1);
16
16
  }
17
17
  }