@feltdb/core 0.7.3 → 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 (147) hide show
  1. package/README.md +25 -0
  2. package/dist/application-development.d.ts +78 -0
  3. package/dist/application-development.d.ts.map +1 -0
  4. package/dist/application-development.js +153 -0
  5. package/dist/application-manifest.d.ts +6 -1
  6. package/dist/application-manifest.d.ts.map +1 -1
  7. package/dist/application-manifest.js +10 -3
  8. package/dist/canonical-application.d.ts +27 -0
  9. package/dist/canonical-application.d.ts.map +1 -0
  10. package/dist/canonical-application.js +46 -0
  11. package/dist/cli/ai-model-config.js +97 -0
  12. package/dist/cli/cli.js +1 -1
  13. package/dist/cli/commands.js +664 -120
  14. package/dist/cli/index.js +1 -1
  15. package/dist/cli/managed-environment.js +6 -0
  16. package/dist/cli/managed-project.js +6 -0
  17. package/dist/cli/proposal-client.js +63 -0
  18. package/dist/cli/publish-engine.js +165 -0
  19. package/dist/cli/source-sync.js +183 -0
  20. package/dist/create/cli.js +11 -2
  21. package/dist/create/create.js +38 -16
  22. package/dist/create/managed-account.js +82 -11
  23. package/dist/create/package-versions.js +1 -1
  24. package/dist/create/server-source/crates/feltdb/src/application.rs +41 -1
  25. package/dist/create/server-source/crates/feltdb/src/authority_failover.rs +84 -6
  26. package/dist/create/server-source/crates/feltdb/src/bin/feltdb_node.rs +126 -38
  27. package/dist/create/server-source/crates/feltdb/src/distributed_transactions.rs +72 -34
  28. package/dist/create/server-source/crates/feltdb/src/lib.rs +20 -2
  29. package/dist/create/server-source/crates/feltdb-server/src/app_state.rs +12 -24
  30. package/dist/create/server-source/crates/feltdb-server/src/application_contract.rs +11 -3
  31. package/dist/create/server-source/crates/feltdb-server/src/authenticated_principal.rs +0 -1
  32. package/dist/create/server-source/crates/feltdb-server/src/certification_harness.rs +23 -22
  33. package/dist/create/server-source/crates/feltdb-server/src/delegation_token.rs +5 -15
  34. package/dist/create/server-source/crates/feltdb-server/src/durable_operations.rs +13 -28
  35. package/dist/create/server-source/crates/feltdb-server/src/identity.rs +111 -3
  36. package/dist/create/server-source/crates/feltdb-server/src/key_management.rs +28 -7
  37. package/dist/create/server-source/crates/feltdb-server/src/lib.rs +5 -5
  38. package/dist/create/server-source/crates/feltdb-server/src/main.rs +1960 -143
  39. package/dist/create/server-source/crates/feltdb-server/src/managed_diagnostics.rs +10 -30
  40. package/dist/create/server-source/crates/feltdb-server/src/membership_policy.rs +12 -4
  41. package/dist/create/server-source/crates/feltdb-server/src/request_telemetry.rs +8 -6
  42. package/dist/create/server-source/crates/feltdb-server/src/snapshot_cursor.rs +10 -14
  43. package/dist/create/server-source/crates/feltdb-server/src/tenancy.rs +195 -13
  44. package/dist/create/server-source/crates/feltdb-server/src/tenant_policies.rs +9 -21
  45. package/dist/create/server-source/crates/feltdb-server/src/transaction_idempotency.rs +5 -3
  46. package/dist/create/server-source/crates/feltdb-server/src/transaction_recovery.rs +9 -8
  47. package/dist/create/server-source/crates/feltdb-server/tests/revision_recovery_integration_test.rs +1 -4
  48. package/dist/create/template/default-project/README.md +57 -0
  49. package/dist/create/template/default-project/agents/activity-assistant.ts +18 -0
  50. package/dist/create/template/default-project/agents/project-assistant.ts +19 -0
  51. package/dist/create/template/default-project/capabilities/activity-summary.ts +14 -0
  52. package/dist/create/template/default-project/capabilities/project-search.ts +16 -0
  53. package/dist/create/template/default-project/capabilities/project-summary.ts +15 -0
  54. package/dist/create/template/default-project/feltdb.flow +174 -0
  55. package/dist/create/template/default-project/src/App.tsx +20 -0
  56. package/dist/create/template/default-project/src/context/AuthContext.tsx +27 -0
  57. package/dist/create/template/default-project/src/feltdb.ts +87 -0
  58. package/dist/create/template/default-project/src/index.tsx +14 -0
  59. package/dist/create/template/default-project/src/pages/Activity.tsx +7 -0
  60. package/dist/create/template/default-project/src/pages/Agents.tsx +15 -0
  61. package/dist/create/template/default-project/src/pages/Dashboard.tsx +17 -0
  62. package/dist/create/template/default-project/src/pages/Invitations.tsx +11 -0
  63. package/dist/create/template/default-project/src/pages/Projects.tsx +11 -0
  64. package/dist/create/template/default-project/src/pages/SignIn.tsx +8 -0
  65. package/dist/create/template/default-project/src/pages/SignUp.tsx +8 -0
  66. package/dist/create/template/default-project/src/styles-application.css +21 -0
  67. package/dist/create/template/default-project/src/styles.css +1 -0
  68. package/dist/create/template/default-project/workflows/agent-assisted-summary.ts +1 -0
  69. package/dist/create/template/default-project/workflows/invitation.ts +30 -0
  70. package/dist/create/template/default-project/workflows/project-created.ts +2 -0
  71. package/dist/db.d.ts +49 -1
  72. package/dist/db.d.ts.map +1 -1
  73. package/dist/db.js +77 -0
  74. package/dist/error-codes.d.ts +20 -1
  75. package/dist/error-codes.d.ts.map +1 -1
  76. package/dist/error-codes.js +25 -0
  77. package/dist/flowspec.d.ts +1 -0
  78. package/dist/flowspec.d.ts.map +1 -1
  79. package/dist/flowspec.js +66 -11
  80. package/dist/http-client.d.ts +135 -14
  81. package/dist/http-client.d.ts.map +1 -1
  82. package/dist/http-client.js +79 -31
  83. package/dist/http-db.d.ts +15 -2
  84. package/dist/http-db.d.ts.map +1 -1
  85. package/dist/http-db.js +113 -5
  86. package/dist/index-core.d.ts +5 -0
  87. package/dist/index-core.d.ts.map +1 -1
  88. package/dist/index-core.js +5 -0
  89. package/dist/module-intent.d.ts +37 -0
  90. package/dist/module-intent.d.ts.map +1 -0
  91. package/dist/module-intent.js +81 -0
  92. package/dist/module.d.ts +76 -0
  93. package/dist/module.d.ts.map +1 -0
  94. package/dist/module.js +61 -0
  95. package/dist/proposal.d.ts +161 -0
  96. package/dist/proposal.d.ts.map +1 -0
  97. package/dist/proposal.js +232 -0
  98. package/dist/studio/app.d.ts +5 -1
  99. package/dist/studio/app.d.ts.map +1 -1
  100. package/dist/studio/components/ApplicationDesigner.d.ts +2 -1
  101. package/dist/studio/components/ApplicationDesigner.d.ts.map +1 -1
  102. package/dist/studio/components/AskFeltDB.d.ts +21 -0
  103. package/dist/studio/components/AskFeltDB.d.ts.map +1 -0
  104. package/dist/studio/components/ContractInspector.d.ts +7 -0
  105. package/dist/studio/components/ContractInspector.d.ts.map +1 -0
  106. package/dist/studio/components/ManagedInstancePanel.d.ts.map +1 -1
  107. package/dist/studio/components/ManagedInstancePanel.js +1 -5
  108. package/dist/studio/components/ModuleExplorer.d.ts +6 -0
  109. package/dist/studio/components/ModuleExplorer.d.ts.map +1 -0
  110. package/dist/studio/components/ProposalBrowser.d.ts +12 -0
  111. package/dist/studio/components/ProposalBrowser.d.ts.map +1 -0
  112. package/dist/studio/components/StateExplorer.d.ts +6 -7
  113. package/dist/studio/components/StateExplorer.d.ts.map +1 -1
  114. package/dist/studio/components/index.d.ts +4 -0
  115. package/dist/studio/components/index.d.ts.map +1 -1
  116. package/dist/studio/components/index.js +4 -4
  117. package/dist/studio/components-CNSNrmA9.js +2787 -0
  118. package/dist/studio/index.js +214 -157
  119. package/dist/studio/studio.css +1 -1
  120. package/dist/studio/utils/index.d.ts +2 -0
  121. package/dist/studio/utils/index.d.ts.map +1 -1
  122. package/dist/studio/utils/index.js +14 -12
  123. package/dist/studio/utils/managed-instance.d.ts +0 -4
  124. package/dist/studio/utils/managed-instance.d.ts.map +1 -1
  125. package/dist/studio/utils/managed-instance.js +0 -4
  126. package/dist/studio/utils/proposal-api.d.ts +53 -0
  127. package/dist/studio/utils/proposal-api.d.ts.map +1 -0
  128. package/dist/studio/utils/proposal-api.js +91 -0
  129. package/dist/studio/utils/service-api.d.ts +81 -0
  130. package/dist/studio/utils/service-api.d.ts.map +1 -0
  131. package/dist/studio/utils/service-api.js +51 -0
  132. package/dist/studio-app/assets/dist-CCOk39Uc.js +1 -0
  133. package/dist/studio-app/assets/{feltdb_wasm-DVKsw75S.js → feltdb_wasm-CSB6KVgw.js} +1 -1
  134. package/dist/studio-app/assets/feltdb_wasm_bg-Dd1fnO9U.wasm +0 -0
  135. package/dist/studio-app/assets/index-Bncji3aN.js +43 -0
  136. package/dist/studio-app/assets/{index-C1GWyazR.css → index-yazaWMUN.css} +1 -1
  137. package/dist/studio-app/assets/lib-B2_7fcn7.js +69 -0
  138. package/dist/studio-app/assets/worker-CARZ5g7K.js +69 -0
  139. package/dist/studio-app/index.html +2 -2
  140. package/dist/wasm/feltdb_wasm_bg.wasm +0 -0
  141. package/dist/workspace/local-development-authority.d.ts +3 -0
  142. package/dist/workspace/local-development-authority.d.ts.map +1 -1
  143. package/dist/workspace/local-development-authority.js +124 -2
  144. package/package.json +1 -1
  145. package/dist/studio/components-Dxuhrv8_.js +0 -1832
  146. package/dist/studio-app/assets/feltdb_wasm_bg-DNyNf0yy.wasm +0 -0
  147. package/dist/studio-app/assets/index-B5tnmvSD.js +0 -28
@@ -0,0 +1,30 @@
1
+ import { auditEvents, db, invitations, memberships, users, type AuditEvent, type Invitation, type Membership } from '../src/feltdb';
2
+
3
+ const makeId = (prefix: string) => `${prefix}_${crypto.randomUUID()}`;
4
+
5
+ export async function runInviteMemberWorkflow(input: { organization: string; actor: string; email: string; role: string }) {
6
+ const invited = (await users.find({ email: input.email.trim().toLowerCase() }))[0];
7
+ if (!invited) throw new Error('Invite an existing application user in this starter.');
8
+ const now = new Date().toISOString();
9
+ const invitation: Invitation = { id: makeId('invitation'), organization: input.organization, user: invited.id, email: invited.email, role: input.role, status: 'pending', created_at: now, updated_at: now };
10
+ const event: AuditEvent = { id: makeId('event'), organization: input.organization, user: input.actor, action: 'invitation.created', resource_type: 'Invitation', resource_id: invitation.id, details: invited.email, created_at: now };
11
+ await db.transaction(async transaction => {
12
+ transaction.collection<Invitation>('Invitation').insert(invitation, invitation.id, { requireAbsent: true });
13
+ transaction.collection<AuditEvent>('AuditEvent').insert(event, event.id, { requireAbsent: true });
14
+ });
15
+ return invitation;
16
+ }
17
+
18
+ export async function runAcceptInvitationWorkflow(invitation: Invitation, userId: string) {
19
+ if (invitation.user !== userId || invitation.status !== 'pending') throw new Error('This invitation cannot be accepted by the current identity.');
20
+ const now = new Date().toISOString();
21
+ const membership: Membership = { id: makeId('membership'), user: userId, organization: invitation.organization, role: invitation.role as Membership['role'], created_at: now };
22
+ const accepted = { ...invitation, status: 'accepted', updated_at: now };
23
+ const event: AuditEvent = { id: makeId('event'), organization: invitation.organization, user: userId, action: 'invitation.accepted', resource_type: 'Invitation', resource_id: invitation.id, details: membership.role, created_at: now };
24
+ await db.transaction(async transaction => {
25
+ transaction.collection<Invitation>('Invitation').insert(accepted, invitation.id);
26
+ transaction.collection<Membership>('Membership').insert(membership, membership.id, { requireAbsent: true });
27
+ transaction.collection<AuditEvent>('AuditEvent').insert(event, event.id, { requireAbsent: true });
28
+ });
29
+ return membership;
30
+ }
@@ -0,0 +1,2 @@
1
+ // Project and AuditEvent are committed atomically by the canonical operation.
2
+ export { createProject as runProjectCreatedWorkflow } from '../src/feltdb';
package/dist/db.d.ts CHANGED
@@ -29,7 +29,9 @@ interface FeltDBBaseOptions {
29
29
  export type FeltDBOptions = FeltDBBaseOptions & ({
30
30
  server: {
31
31
  url: string;
32
- token: string;
32
+ token?: string;
33
+ applicationId?: string;
34
+ environment?: string;
33
35
  };
34
36
  memory?: never;
35
37
  path?: never;
@@ -250,6 +252,7 @@ export declare class StateFirstDB {
250
252
  private capabilityWorkers;
251
253
  private observation?;
252
254
  private closeDevelopmentBridge?;
255
+ private localActorSession?;
253
256
  readonly workloads: WorkloadClient;
254
257
  readonly artifacts: ArtifactClient;
255
258
  readonly bundle: BundleClient;
@@ -259,7 +262,52 @@ export declare class StateFirstDB {
259
262
  readonly workers: WorkerClient;
260
263
  readonly workerPools: WorkerPoolClient;
261
264
  readonly mesh: MeshClient;
265
+ readonly workflows: {
266
+ run: (name: string, input?: unknown, options?: {
267
+ idempotencyKey?: string;
268
+ }) => Promise<unknown>;
269
+ };
270
+ readonly agents: {
271
+ run: (name: string, input?: unknown, options?: {
272
+ idempotencyKey?: string;
273
+ goal?: string;
274
+ }) => Promise<unknown>;
275
+ };
276
+ readonly capabilities: {
277
+ run: <T = unknown>(name: string, input?: unknown, options?: {
278
+ idempotencyKey?: string;
279
+ }) => Promise<T>;
280
+ };
281
+ readonly application: {
282
+ get: () => Promise<Record<string, unknown> | {
283
+ application_id: any;
284
+ environment: string;
285
+ version: any;
286
+ contract_hash: string;
287
+ dsl_version: number;
288
+ snapshot: import("./application-development.js").FeltDBContractSnapshot;
289
+ }>;
290
+ };
291
+ readonly schema: {
292
+ get: () => Promise<Record<string, unknown>>;
293
+ };
294
+ readonly auth: {
295
+ signUp: (input: {
296
+ email: string;
297
+ password: string;
298
+ display_name?: string;
299
+ }) => Promise<any>;
300
+ signIn: (input: {
301
+ email: string;
302
+ password: string;
303
+ }) => Promise<any>;
304
+ signOut: () => Promise<any>;
305
+ session: () => Promise<any>;
306
+ };
262
307
  constructor(jsDb: JsDb, observation?: DevelopmentObservationSink, closeDevelopmentBridge?: () => Promise<void>);
308
+ private applicationRequest;
309
+ private authRequest;
310
+ private localAuthRequest;
263
311
  /**
264
312
  * Detect runtime environment and storage characteristics
265
313
  */
package/dist/db.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
package/dist/db.js CHANGED
@@ -24,6 +24,16 @@ import { BundleClient } from './bundle.js';
24
24
  import { ReleaseClient } from './release.js';
25
25
  import { ObserveClient } from './observe.js';
26
26
  import { ProviderClient } from './provider.js';
27
+ import { compileApplicationContract } from './canonical-application.js';
28
+ import { createContractSnapshot } from './application-development.js';
29
+ async function localPasswordHash(password, saltHex) {
30
+ const salt = Uint8Array.from(saltHex.match(/../g) || [], value => parseInt(value, 16));
31
+ const passwordBytes = new TextEncoder().encode(password);
32
+ const key = await crypto.subtle.importKey('raw', passwordBytes.slice().buffer, 'PBKDF2', false, ['deriveBits']);
33
+ const bits = await crypto.subtle.deriveBits({ name: 'PBKDF2', salt: salt.slice().buffer, iterations: 210_000, hash: 'SHA-256' }, key, 256);
34
+ return Array.from(new Uint8Array(bits), value => value.toString(16).padStart(2, '0')).join('');
35
+ }
36
+ function randomHex(bytes = 32) { const value = crypto.getRandomValues(new Uint8Array(bytes)); return Array.from(value, item => item.toString(16).padStart(2, '0')).join(''); }
27
37
  import { emitTelemetry } from './telemetry.js';
28
38
  import { attachDevelopmentRuntimeBridge } from './development-runtime-bridge.js';
29
39
  export function createFeltDB(options) {
@@ -82,6 +92,7 @@ export class StateFirstDB {
82
92
  capabilityWorkers = new Map();
83
93
  observation;
84
94
  closeDevelopmentBridge;
95
+ localActorSession;
85
96
  workloads = new WorkloadClient();
86
97
  artifacts = new ArtifactClient();
87
98
  bundle = new BundleClient();
@@ -91,6 +102,31 @@ export class StateFirstDB {
91
102
  workers = new WorkerClient();
92
103
  workerPools = new WorkerPoolClient();
93
104
  mesh = new MeshClient();
105
+ workflows = { run: (name, input = {}, options = {}) => this.applicationRequest(`/workflows/${encodeURIComponent(name)}/run`, { method: 'POST', headers: options.idempotencyKey ? { 'Idempotency-Key': options.idempotencyKey } : {}, body: JSON.stringify({ input }) }) };
106
+ agents = { run: (name, input = {}, options = {}) => this.applicationRequest(`/agents/${encodeURIComponent(name)}/run`, { method: 'POST', headers: options.idempotencyKey ? { 'Idempotency-Key': options.idempotencyKey } : {}, body: JSON.stringify({ goal: options.goal || name, input }) }) };
107
+ capabilities = { run: (name, input = {}, options = {}) => this.applicationRequest(`/capabilities/${encodeURIComponent(name)}/run`, { method: 'POST', headers: options.idempotencyKey ? { 'Idempotency-Key': options.idempotencyKey } : {}, body: JSON.stringify(input) }) };
108
+ application = { get: async () => {
109
+ if (this.jsDb instanceof HttpJsDb)
110
+ return this.applicationRequest('/application');
111
+ const applications = await this.collection('_flow_apps').all();
112
+ const active = applications.find(value => value.status === 'active') ?? applications[0];
113
+ if (!active?.spec)
114
+ throw new Error('No application contract has been deployed to this embedded runtime');
115
+ const contract = await compileApplicationContract(active.spec, 'local', active.app);
116
+ return { application_id: active.app, environment: 'local', version: active.version ?? 1,
117
+ contract_hash: contract.hashes.application, dsl_version: contract.dsl_version,
118
+ snapshot: createContractSnapshot(contract, { environment: 'local', contractVersion: active.version ?? 1 }) };
119
+ } };
120
+ schema = { get: async () => {
121
+ const application = await this.applicationRequest('/application');
122
+ return this.applicationRequest(`/schema?revision_id=${encodeURIComponent(application.revision_id)}`);
123
+ } };
124
+ auth = {
125
+ signUp: (input) => this.authRequest('signup', input),
126
+ signIn: (input) => this.authRequest('signin', input),
127
+ signOut: () => this.authRequest('signout'),
128
+ session: () => this.authRequest('session'),
129
+ };
94
130
  constructor(jsDb, observation, closeDevelopmentBridge) {
95
131
  this.jsDb = jsDb;
96
132
  this.observation = observation;
@@ -111,6 +147,47 @@ export class StateFirstDB {
111
147
  // Non-blocking, fails silently if telemetry unavailable
112
148
  emitTelemetry('initialize');
113
149
  }
150
+ applicationRequest(path, init) {
151
+ if (!(this.jsDb instanceof HttpJsDb)) {
152
+ return Promise.reject(new Error(`${path} requires an application service runtime; embedded collection and capability APIs remain available locally.`));
153
+ }
154
+ return this.jsDb.application_request(path, init);
155
+ }
156
+ authRequest(operation, body) {
157
+ if (this.jsDb instanceof HttpJsDb)
158
+ return this.jsDb.auth_request(operation, body);
159
+ return this.localAuthRequest(operation, body);
160
+ }
161
+ async localAuthRequest(operation, body) {
162
+ const identities = this.collection('_flow_local_identities');
163
+ if (operation === 'session') {
164
+ if (!this.localActorSession || this.localActorSession.session.expires_at <= Date.now())
165
+ throw new Error('Authentication required');
166
+ return this.localActorSession;
167
+ }
168
+ if (operation === 'signout') {
169
+ this.localActorSession = undefined;
170
+ return {};
171
+ }
172
+ const email = body?.email?.trim().toLowerCase();
173
+ const password = body?.password || '';
174
+ if (!email || password.length < 8)
175
+ throw new Error('email and a password of at least 8 characters are required');
176
+ let identity = (await identities.find({ email }))[0];
177
+ if (operation === 'signup') {
178
+ if (identity)
179
+ throw new Error('identity already exists');
180
+ const salt = randomHex(16);
181
+ const userId = `user_${randomHex(12)}`;
182
+ identity = { id: userId, email, display_name: body?.display_name, salt, password_hash: await localPasswordHash(password, salt), created_at: new Date().toISOString() };
183
+ await identities.insert(identity, userId);
184
+ }
185
+ else if (!identity || identity.password_hash !== await localPasswordHash(password, identity.salt))
186
+ throw new Error('invalid credentials');
187
+ const session = { session_id: `session_${randomHex(12)}`, expires_at: Date.now() + 15 * 60_000 };
188
+ this.localActorSession = { access_token: `local_${randomHex()}`, actor: { user_id: identity.id, email: identity.email, display_name: identity.display_name }, session };
189
+ return this.localActorSession;
190
+ }
114
191
  /**
115
192
  * Detect runtime environment and storage characteristics
116
193
  */
@@ -23,7 +23,26 @@ export declare enum FeltDBErrorCode {
23
23
  /** 429: Queue depth exceeded; retry with exponential backoff */
24
24
  TOO_BUSY = "TOO_BUSY",
25
25
  /** 500: Unrecoverable server error; audit trail available */
26
- INTERNAL_ERROR = "INTERNAL_ERROR"
26
+ INTERNAL_ERROR = "INTERNAL_ERROR",
27
+ AUTHENTICATION_REQUIRED = "AUTHENTICATION_REQUIRED",
28
+ AUTHENTICATION_FAILED = "AUTHENTICATION_FAILED",
29
+ FORBIDDEN = "FORBIDDEN",
30
+ NOT_FOUND = "NOT_FOUND",
31
+ VALIDATION_ERROR = "VALIDATION_ERROR",
32
+ IDEMPOTENCY_CONFLICT = "IDEMPOTENCY_CONFLICT",
33
+ QUERY_INVALID = "QUERY_INVALID",
34
+ QUERY_LIMIT_EXCEEDED = "QUERY_LIMIT_EXCEEDED",
35
+ WORKFLOW_NOT_FOUND = "WORKFLOW_NOT_FOUND",
36
+ AGENT_NOT_FOUND = "AGENT_NOT_FOUND",
37
+ CAPABILITY_NOT_FOUND = "CAPABILITY_NOT_FOUND",
38
+ EXECUTION_FAILED = "EXECUTION_FAILED",
39
+ SERVICE_UNAVAILABLE = "SERVICE_UNAVAILABLE"
40
+ }
41
+ export declare class FeltDBServiceError extends Error {
42
+ readonly code: FeltDBErrorCode | string;
43
+ readonly requestId?: string | undefined;
44
+ readonly status?: number | undefined;
45
+ constructor(message: string, code: FeltDBErrorCode | string, requestId?: string | undefined, status?: number | undefined);
27
46
  }
28
47
  /**
29
48
  * Error response structure that all FeltDB APIs must return
@@ -1 +1 @@
1
- {"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../src/error-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;GAEG;AACH,oBAAY,eAAe;IACzB,6BAA6B;IAC7B,EAAE,OAAO;IAET,wEAAwE;IACxE,QAAQ,aAAa;IAErB,2DAA2D;IAC3D,mBAAmB,wBAAwB;IAE3C,gEAAgE;IAChE,QAAQ,aAAa;IAErB,6DAA6D;IAC7D,cAAc,mBAAmB;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC;IAE/B,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAEhB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IAEnB,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IAEpB,gEAAgE;IAChE,aAAa,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;CAC1F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,OAAO,CAIxE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,qBAAqB,GAAG,gBAAgB,GAAG,YAAY,CAQxH"}
1
+ {"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../src/error-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;GAEG;AACH,oBAAY,eAAe;IACzB,6BAA6B;IAC7B,EAAE,OAAO;IAET,wEAAwE;IACxE,QAAQ,aAAa;IAErB,2DAA2D;IAC3D,mBAAmB,wBAAwB;IAE3C,gEAAgE;IAChE,QAAQ,aAAa;IAErB,6DAA6D;IAC7D,cAAc,mBAAmB;IACjC,uBAAuB,4BAA4B;IACnD,qBAAqB,0BAA0B;IAC/C,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,gBAAgB,qBAAqB;IACrC,oBAAoB,yBAAyB;IAC7C,aAAa,kBAAkB;IAC/B,oBAAoB,yBAAyB;IAC7C,kBAAkB,uBAAuB;IACzC,eAAe,oBAAoB;IACnC,oBAAoB,yBAAyB;IAC7C,gBAAgB,qBAAqB;IACrC,mBAAmB,wBAAwB;CAC5C;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAGzC,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM;gBAHxB,OAAO,EAAE,MAAM,EACN,IAAI,EAAE,eAAe,GAAG,MAAM,EAC9B,SAAS,CAAC,EAAE,MAAM,YAAA,EAClB,MAAM,CAAC,EAAE,MAAM,YAAA;CAE3B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC;IAE/B,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAEhB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IAEnB,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IAEpB,gEAAgE;IAChE,aAAa,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;CAC1F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,OAAO,CAIxE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,qBAAqB,GAAG,gBAAgB,GAAG,YAAY,CAQxH"}
@@ -25,7 +25,32 @@ export var FeltDBErrorCode;
25
25
  FeltDBErrorCode["TOO_BUSY"] = "TOO_BUSY";
26
26
  /** 500: Unrecoverable server error; audit trail available */
27
27
  FeltDBErrorCode["INTERNAL_ERROR"] = "INTERNAL_ERROR";
28
+ FeltDBErrorCode["AUTHENTICATION_REQUIRED"] = "AUTHENTICATION_REQUIRED";
29
+ FeltDBErrorCode["AUTHENTICATION_FAILED"] = "AUTHENTICATION_FAILED";
30
+ FeltDBErrorCode["FORBIDDEN"] = "FORBIDDEN";
31
+ FeltDBErrorCode["NOT_FOUND"] = "NOT_FOUND";
32
+ FeltDBErrorCode["VALIDATION_ERROR"] = "VALIDATION_ERROR";
33
+ FeltDBErrorCode["IDEMPOTENCY_CONFLICT"] = "IDEMPOTENCY_CONFLICT";
34
+ FeltDBErrorCode["QUERY_INVALID"] = "QUERY_INVALID";
35
+ FeltDBErrorCode["QUERY_LIMIT_EXCEEDED"] = "QUERY_LIMIT_EXCEEDED";
36
+ FeltDBErrorCode["WORKFLOW_NOT_FOUND"] = "WORKFLOW_NOT_FOUND";
37
+ FeltDBErrorCode["AGENT_NOT_FOUND"] = "AGENT_NOT_FOUND";
38
+ FeltDBErrorCode["CAPABILITY_NOT_FOUND"] = "CAPABILITY_NOT_FOUND";
39
+ FeltDBErrorCode["EXECUTION_FAILED"] = "EXECUTION_FAILED";
40
+ FeltDBErrorCode["SERVICE_UNAVAILABLE"] = "SERVICE_UNAVAILABLE";
28
41
  })(FeltDBErrorCode || (FeltDBErrorCode = {}));
42
+ export class FeltDBServiceError extends Error {
43
+ code;
44
+ requestId;
45
+ status;
46
+ constructor(message, code, requestId, status) {
47
+ super(message);
48
+ this.code = code;
49
+ this.requestId = requestId;
50
+ this.status = status;
51
+ this.name = 'FeltDBServiceError';
52
+ }
53
+ }
29
54
  /**
30
55
  * Determines if a FeltDB error is retryable
31
56
  */
@@ -38,6 +38,7 @@ export interface FlowSpec {
38
38
  triggers: FlowTrigger[];
39
39
  policies: FlowBlock[];
40
40
  schedules: FlowBlock[];
41
+ modules?: import('./module.js').FlowModuleDeclaration[];
41
42
  }
42
43
  export interface FlowDiagnostic {
43
44
  severity: 'error' | 'warning';
@@ -1 +1 @@
1
- {"version":3,"file":"flowspec.d.ts","sourceRoot":"","sources":["../src/flowspec.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE;AAC5E,MAAM,WAAW,SAAS;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AAC7E,MAAM,WAAW,cAAc;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,EAAE,CAAC;IAAC,OAAO,EAAE,SAAS,EAAE,CAAA;CAAE;AAC3F,MAAM,WAAW,SAAS;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE;AACjE,MAAM,WAAW,QAAS,SAAQ,SAAS;CAAG;AAC9C,MAAM,WAAW,YAAY;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAA;CAAE;AACrF,MAAM,WAAW,WAAW;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE;AACpE,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,CAAC,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,YAAY,EAAE,SAAS,EAAE,CAAC;IAC1B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,SAAS,EAAE,SAAS,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAAG,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;AACjG,MAAM,WAAW,YAAY;IAAG,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE;AACvF,MAAM,WAAW,sBAAsB;IAAG,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,GAAG,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAEpK,eAAO,MAAM,oBAAoB,yLAA0L,CAAC;AAC5N,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAED,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,sHAAsH;AACtH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,mBAAmB,CAQ/G;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,QAAQ,CAG1E;AA0FD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAA4C;AAEnG,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,EAAE,CAcjE;AAGD,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAUrD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAG,YAAY,CAQ5E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAG,sBAAsB,EAAE,CAsBjG;AAED,wBAAgB,aAAa,CAAC,GAAG,SAAU,GAAG,QAAQ,CAAyI"}
1
+ {"version":3,"file":"flowspec.d.ts","sourceRoot":"","sources":["../src/flowspec.ts"],"names":[],"mappings":"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"}
package/dist/flowspec.js CHANGED
@@ -3,7 +3,7 @@ export function isValidFlowFieldType(type) {
3
3
  const value = type.trim();
4
4
  if (FLOW_PRIMITIVE_TYPES.includes(value))
5
5
  return true;
6
- if (/^ref [A-Za-z_][A-Za-z0-9_-]*$/.test(value))
6
+ if (/^ref [A-Za-z_][A-Za-z0-9_-]*(?:\.[A-Za-z_][A-Za-z0-9_-]*)?$/.test(value))
7
7
  return true;
8
8
  if (/^enum\([^)]+\)$/.test(value))
9
9
  return value.slice(5, -1).split(',').every(item => item.trim().length > 0);
@@ -12,19 +12,25 @@ export function isValidFlowFieldType(type) {
12
12
  const container = /^(array|map)<(.+)>$/.exec(value);
13
13
  return Boolean(container && isValidFlowFieldType(container[2]));
14
14
  }
15
+ import { resolveFeltDBModules } from './module.js';
15
16
  /** FlowSpec is a portable source format; the returned Rust manifest is authoritative only after server validation. */
16
17
  export function flowSpecToManifest(spec, tenantId, applicationId) {
17
- const capabilities = spec.capabilities.map(value => ({ name: value.name }));
18
+ const modules = resolveFeltDBModules(spec.modules);
19
+ const capabilities = [...spec.capabilities.map(value => ({
20
+ name: value.name,
21
+ visibility: (value.statements.find(statement => statement.startsWith('visibility '))?.slice('visibility '.length) || 'public'),
22
+ })), ...modules.flatMap(module => module.capabilities.map(name => ({ name, provider: module.id, visibility: 'internal' })))];
23
+ const policySubject = (statements, operation) => statements.map(value => new RegExp(`^${operation}\\s*:\\s*(.+)$`).exec(value)?.[1]).find(Boolean);
18
24
  const manifestField = (field) => {
19
25
  const reference = field.type.startsWith('ref ') ? field.type.slice(4) : undefined;
20
26
  const enumValues = field.type.startsWith('enum(') && field.type.endsWith(')') ? field.type.slice(5, -1).split(',').map(value => value.trim()) : undefined;
21
27
  return { name: field.name, type: reference ? 'reference' : enumValues ? 'enum' : field.type, required: !field.optional, ...(reference ? { reference } : {}), ...(enumValues ? { enum_values: enumValues } : {}) };
22
28
  };
23
- return { application_id: applicationId, tenant_id: tenantId, schema: 1, metadata: { name: spec.app, labels: {} }, collections: spec.collections.map(value => ({ name: value.name, fields: value.fields.map(manifestField) })), indexes: spec.collections.flatMap(collection => collection.indexes.map(index => ({ name: index.name, collection: collection.name, fields: [index.expression], unique: index.kind === 'unique' }))), references: [], queries: [], actions: [], workflows: spec.workflows.map(value => ({ name: value.name, steps: value.steps.map(step => ({ name: step.name })) })), triggers: spec.triggers.map((value, index) => ({ name: `trigger-${index + 1}`, event: value.event, workflow: spec.workflows[0]?.name || '' })), schedules: spec.schedules.map(value => ({ name: value.name, expression: value.statements[0] || '', workflow: spec.workflows[0]?.name || '' })), agents: spec.agents.map(value => ({ name: value.name, capabilities: capabilities.map(capability => capability.name).filter(name => value.statements.some(statement => statement.includes(name))) })), capabilities, connections: [], policies: spec.policies.map(value => ({ name: value.name, resource: value.statements[0] || 'application', capabilities: [] })), ui: { routes: [], bindings: [], forms: [], dashboards: [] }, environments: ['development', 'preview', 'staging', 'production'].map(name => ({ name, configuration: {} })), artifacts: [], deployment: { environments: ['development', 'preview', 'staging', 'production'] }, runtime: { contract: 1, minimum_engine: '0.2.0', maximum_engine_exclusive: '2.0.0' } };
29
+ return { application_id: applicationId, tenant_id: tenantId, schema: 1, metadata: { name: spec.app, labels: {} }, collections: spec.collections.map(value => ({ name: value.name, fields: value.fields.map(manifestField) })), indexes: spec.collections.flatMap(collection => collection.indexes.map(index => ({ name: index.name, collection: collection.name, fields: [index.expression], unique: index.kind === 'unique' }))), references: [], queries: [], actions: [], workflows: spec.workflows.map(value => ({ name: value.name, steps: value.steps.map(step => ({ name: step.name, capability: step.statements.find(statement => statement.startsWith('capability '))?.slice('capability '.length) })) })), triggers: spec.triggers.map((value, index) => ({ name: `trigger-${index + 1}`, event: value.event, workflow: spec.workflows[0]?.name || '' })), schedules: spec.schedules.map(value => ({ name: value.name, expression: value.statements[0] || '', workflow: spec.workflows[0]?.name || '' })), agents: spec.agents.map(value => ({ name: value.name, capabilities: capabilities.map(capability => capability.name).filter(name => value.statements.some(statement => statement.includes(name))) })), capabilities, modules: resolveFeltDBModules(spec.modules), connections: [], policies: spec.policies.map(value => ({ name: value.name, resource: value.name, read: policySubject(value.statements, 'read'), write: policySubject(value.statements, 'write'), capabilities: [] })), ui: { routes: [], bindings: [], forms: [], dashboards: [] }, environments: ['development', 'preview', 'staging', 'production'].map(name => ({ name, configuration: {} })), artifacts: [], deployment: { environments: ['development', 'preview', 'staging', 'production'] }, runtime: { contract: 1, minimum_engine: '0.2.0', maximum_engine_exclusive: '2.0.0' } };
24
30
  }
25
31
  export function manifestToFlowSpec(manifest) {
26
32
  const fieldType = (field) => field.reference ? `ref ${field.reference}` : field.enum_values?.length ? `enum(${field.enum_values.join(',')})` : field.type;
27
- return { version: 1, app: manifest.metadata.name, collections: manifest.collections.map(value => ({ name: value.name, fields: value.fields.map(field => ({ name: field.name, type: fieldType(field), optional: !field.required })), indexes: manifest.indexes.filter(index => index.collection === value.name).map(index => ({ name: index.name, kind: index.unique ? 'unique' : 'index', expression: index.fields.join(', ') })) })), capabilities: manifest.capabilities.map(value => ({ name: value.name, statements: value.provider ? [`provider ${value.provider}`] : [] })), agents: manifest.agents.map(value => ({ name: value.name, statements: value.capabilities.map(capability => `capability ${capability}`) })), workflows: manifest.workflows.map(value => ({ name: value.name, parameters: '', steps: value.steps.map(step => ({ name: step.name, statements: step.capability ? [`capability ${step.capability}`] : [] })) })), triggers: manifest.triggers.map(value => ({ event: value.event, statements: [`run ${value.workflow}`] })), policies: manifest.policies.map(value => ({ name: value.name, statements: [value.resource, ...value.capabilities] })), schedules: manifest.schedules.map(value => ({ name: value.name, statements: [value.expression, `run ${value.workflow}`] })) };
33
+ return { version: 1, app: manifest.metadata.name, collections: manifest.collections.map(value => ({ name: value.name, fields: value.fields.map(field => ({ name: field.name, type: fieldType(field), optional: !field.required })), indexes: manifest.indexes.filter(index => index.collection === value.name).map(index => ({ name: index.name, kind: index.unique ? 'unique' : 'index', expression: index.fields.join(', ') })) })), capabilities: manifest.capabilities.map(value => ({ name: value.name, statements: [...(value.provider ? [`provider ${value.provider}`] : []), `visibility ${value.visibility || 'public'}`] })), agents: manifest.agents.map(value => ({ name: value.name, statements: value.capabilities.map(capability => `capability ${capability}`) })), workflows: manifest.workflows.map(value => ({ name: value.name, parameters: '', steps: value.steps.map(step => ({ name: step.name, statements: step.capability ? [`capability ${step.capability}`] : [] })) })), triggers: manifest.triggers.map(value => ({ event: value.event, statements: [`run ${value.workflow}`] })), policies: manifest.policies.map(value => ({ name: value.name, statements: [...(value.read ? [`read: ${value.read}`] : []), ...(value.write ? [`write: ${value.write}`] : []), ...value.capabilities] })), schedules: manifest.schedules.map(value => ({ name: value.name, statements: [value.expression, `run ${value.workflow}`] })), modules: (manifest.modules ?? []).map(value => ({ name: value.id, provider: value.provider, version: value.version })) };
28
34
  }
29
35
  function lex(source) {
30
36
  const tokens = [];
@@ -96,7 +102,7 @@ class Parser {
96
102
  while (this.peek() && !this.peek('\n') && !this.peek('}'))
97
103
  values.push(this.take().value);
98
104
  this.newlines();
99
- return values.join(' ').replace(/\s+([,?)])/g, '$1').replace(/([(])\s+/g, '$1').trim();
105
+ return values.join(' ').replace(/\s+([,?)])/g, '$1').replace(/\s+\(/g, '(').replace(/([(])\s+/g, '$1').trim();
100
106
  }
101
107
  statements() {
102
108
  this.take('{');
@@ -115,15 +121,36 @@ class Parser {
115
121
  }
116
122
  parse() {
117
123
  this.newlines();
124
+ let version = 1;
125
+ if (this.peek('flow_version')) {
126
+ this.take('flow_version');
127
+ const token = this.take();
128
+ if (!/^\d+$/.test(token.value))
129
+ throw new Error(`Invalid flow_version ${token.value} at line ${token.line}`);
130
+ const parsedVersion = Number(token.value);
131
+ if (parsedVersion !== 1)
132
+ throw new Error(`Unsupported flow_version ${parsedVersion}; this SDK supports flow_version 1`);
133
+ version = 1;
134
+ this.newlines();
135
+ }
118
136
  this.take('app');
119
137
  const app = this.identifier();
120
138
  this.take('{');
121
139
  this.newlines();
122
- const spec = { version: 1, app, collections: [], capabilities: [], agents: [], workflows: [], triggers: [], policies: [], schedules: [] };
140
+ const spec = { version, app, collections: [], capabilities: [], agents: [], workflows: [], triggers: [], policies: [], schedules: [], modules: [] };
123
141
  while (!this.peek('}')) {
124
142
  const kind = this.take().value;
125
143
  if (kind === 'collection')
126
144
  spec.collections.push(this.collection());
145
+ else if (kind === 'module') {
146
+ const name = this.identifier();
147
+ const statements = this.statements();
148
+ const provider = statements.find(value => value.startsWith('provider '))?.slice(9);
149
+ const version = statements.find(value => value.startsWith('version '))?.slice(8);
150
+ if (!provider)
151
+ throw new Error(`Module ${name} requires provider`);
152
+ spec.modules.push({ name, provider: provider.replace(/^"|"$/g, ''), version: version?.replace(/^"|"$/g, '') });
153
+ }
127
154
  else if (kind === 'workflow')
128
155
  spec.workflows.push(this.workflow());
129
156
  else if (kind === 'trigger')
@@ -222,14 +249,32 @@ export function validateFlowSpec(spec) {
222
249
  duplicate('capability', spec.capabilities.map(value => value.name));
223
250
  duplicate('agent', spec.agents.map(value => value.name));
224
251
  duplicate('workflow', spec.workflows.map(value => value.name));
252
+ duplicate('module', (spec.modules ?? []).map(value => value.name));
253
+ let resolvedModules = [];
254
+ try {
255
+ resolvedModules = resolveFeltDBModules(spec.modules);
256
+ }
257
+ catch (error) {
258
+ diagnostics.push({ severity: 'error', path: 'modules', message: error instanceof Error ? error.message : String(error) });
259
+ }
260
+ for (const capability of spec.capabilities) {
261
+ const visibility = capability.statements.find(statement => statement.startsWith('visibility '))?.slice('visibility '.length);
262
+ if (visibility && !['public', 'agent', 'workflow', 'internal'].includes(visibility))
263
+ diagnostics.push({ severity: 'error', path: `capability ${capability.name}`, message: `Unsupported capability visibility ${visibility}` });
264
+ }
225
265
  const collections = new Set(spec.collections.map(value => value.name));
226
266
  for (const collection of spec.collections) {
227
267
  duplicate(`field in ${collection.name}`, collection.fields.map(value => value.name));
228
268
  for (const field of collection.fields) {
229
269
  if (!isValidFlowFieldType(field.type))
230
270
  diagnostics.push({ severity: 'error', path: `${collection.name}.${field.name}`, message: `Unsupported field type ${field.type}` });
231
- if (field.type.startsWith('ref ') && !collections.has(field.type.slice(4)))
232
- diagnostics.push({ severity: 'error', path: `${collection.name}.${field.name}`, message: `Unknown referenced collection ${field.type.slice(4)}` });
271
+ if (field.type.startsWith('ref ')) {
272
+ const target = field.type.slice(4);
273
+ const [moduleId, model] = target.split('.');
274
+ const moduleReference = model && resolvedModules.some(module => module.id === moduleId && module.models.some(value => value.name === model));
275
+ if (!collections.has(target) && !moduleReference)
276
+ diagnostics.push({ severity: 'error', path: `${collection.name}.${field.name}`, message: `Unknown referenced collection or module model ${target}` });
277
+ }
233
278
  }
234
279
  }
235
280
  for (const workflow of spec.workflows) {
@@ -237,6 +282,14 @@ export function validateFlowSpec(spec) {
237
282
  if (!workflow.steps.length)
238
283
  diagnostics.push({ severity: 'error', message: `Workflow ${workflow.name} has no steps` });
239
284
  }
285
+ for (const trigger of spec.triggers) {
286
+ const moduleId = trigger.event.split('.')[0];
287
+ const module = resolvedModules.find(value => value.id === moduleId);
288
+ if (moduleId && trigger.event.split('.').length >= 3 && !module)
289
+ diagnostics.push({ severity: 'error', path: `trigger ${trigger.event}`, message: `Module event ${trigger.event} requires module ${moduleId}` });
290
+ else if (module && !module.events.includes(trigger.event))
291
+ diagnostics.push({ severity: 'error', path: `trigger ${trigger.event}`, message: `Unknown ${moduleId} module event ${trigger.event}` });
292
+ }
240
293
  return diagnostics;
241
294
  }
242
295
  function block(kind, value, indent = ' ') { return `${indent}${kind} ${value.name} {\n${value.statements.map(line => `${indent} ${line}`).join('\n')}\n${indent}}`; }
@@ -256,13 +309,15 @@ export function formatFlowSpec(spec) {
256
309
  declarations.push(block('policy', value));
257
310
  for (const value of spec.schedules)
258
311
  declarations.push(block('schedule', value));
259
- return `app ${spec.app} {\n${declarations.join('\n\n')}\n}\n`;
312
+ for (const value of spec.modules ?? [])
313
+ declarations.push(` module ${value.name} {\n provider ${value.provider}\n${value.version ? ` version ${value.version}\n` : ''} }`);
314
+ return `flow_version ${spec.version}\n\napp ${spec.app} {\n${declarations.join('\n\n')}\n}\n`;
260
315
  }
261
316
  export function diffFlowSpec(before, after) {
262
317
  const flatten = (spec) => new Map([
263
318
  ...spec.collections.map(value => [`collection ${value.name}`, JSON.stringify(value)]), ...spec.capabilities.map(value => [`capability ${value.name}`, JSON.stringify(value)]),
264
319
  ...spec.agents.map(value => [`agent ${value.name}`, JSON.stringify(value)]), ...spec.workflows.map(value => [`workflow ${value.name}`, JSON.stringify(value)]),
265
- ...spec.triggers.map(value => [`trigger ${value.event}`, JSON.stringify(value)]), ...spec.policies.map(value => [`policy ${value.name}`, JSON.stringify(value)]), ...spec.schedules.map(value => [`schedule ${value.name}`, JSON.stringify(value)]),
320
+ ...spec.triggers.map(value => [`trigger ${value.event}`, JSON.stringify(value)]), ...spec.policies.map(value => [`policy ${value.name}`, JSON.stringify(value)]), ...spec.schedules.map(value => [`schedule ${value.name}`, JSON.stringify(value)]), ...(spec.modules ?? []).map(value => [`module ${value.name}`, JSON.stringify(value)]),
266
321
  ]);
267
322
  const left = flatten(before), right = flatten(after);
268
323
  return { added: [...right.keys()].filter(key => !left.has(key)), removed: [...left.keys()].filter(key => !right.has(key)), changed: [...right.keys()].filter(key => left.has(key) && left.get(key) !== right.get(key)) };
@@ -302,4 +357,4 @@ export function planFlowSpecMigration(before, after) {
302
357
  operations.push({ kind: 'remove', target, safety: 'destructive', detail: 'Application primitive is no longer declared' });
303
358
  return operations;
304
359
  }
305
- export function emptyFlowSpec(app = 'MyApp') { return { version: 1, app, collections: [], capabilities: [], agents: [], workflows: [], triggers: [], policies: [], schedules: [] }; }
360
+ export function emptyFlowSpec(app = 'MyApp') { return { version: 1, app, collections: [], capabilities: [], agents: [], workflows: [], triggers: [], policies: [], schedules: [], modules: [] }; }