@feltdb/core 0.8.0 → 0.8.1

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 (74) hide show
  1. package/dist/application-development.d.ts +7 -2
  2. package/dist/application-development.d.ts.map +1 -1
  3. package/dist/application-development.js +7 -13
  4. package/dist/application-manifest.d.ts +1 -0
  5. package/dist/application-manifest.d.ts.map +1 -1
  6. package/dist/application-manifest.js +1 -1
  7. package/dist/application-understanding.d.ts +76 -0
  8. package/dist/application-understanding.d.ts.map +1 -0
  9. package/dist/application-understanding.js +282 -0
  10. package/dist/cli/ai-model-config.js +3 -3
  11. package/dist/cli/commands.js +131 -38
  12. package/dist/cli/proposal-client.js +5 -1
  13. package/dist/cli/publish-engine.js +1 -1
  14. package/dist/cli/repository-evidence.js +55 -0
  15. package/dist/cli/source-sync.js +190 -75
  16. package/dist/convergence.d.ts +55 -0
  17. package/dist/convergence.d.ts.map +1 -0
  18. package/dist/convergence.js +63 -0
  19. package/dist/create/managed-account.js +1 -0
  20. package/dist/create/package-versions.js +1 -1
  21. package/dist/create/server-source/crates/feltdb/src/application.rs +4 -0
  22. package/dist/create/server-source/crates/feltdb-server/src/connections.rs +14 -0
  23. package/dist/create/server-source/crates/feltdb-server/src/main.rs +174 -24
  24. package/dist/create/server-source/crates/feltdb-server/src/tenancy.rs +8 -1
  25. package/dist/create/template/default-project/src/context/AuthContext.tsx +9 -1
  26. package/dist/create/template/default-project/src/pages/SignUp.tsx +1 -1
  27. package/dist/flowspec.d.ts.map +1 -1
  28. package/dist/flowspec.js +6 -1
  29. package/dist/http-client.d.ts +32 -1
  30. package/dist/http-client.d.ts.map +1 -1
  31. package/dist/http-client.js +14 -2
  32. package/dist/http-db.d.ts +3 -0
  33. package/dist/http-db.d.ts.map +1 -1
  34. package/dist/http-db.js +28 -3
  35. package/dist/index-core.d.ts +3 -0
  36. package/dist/index-core.d.ts.map +1 -1
  37. package/dist/index-core.js +3 -0
  38. package/dist/intent.d.ts +98 -0
  39. package/dist/intent.d.ts.map +1 -0
  40. package/dist/intent.js +343 -0
  41. package/dist/module-intent.d.ts +19 -5
  42. package/dist/module-intent.d.ts.map +1 -1
  43. package/dist/module-intent.js +211 -62
  44. package/dist/module.d.ts +41 -12
  45. package/dist/module.d.ts.map +1 -1
  46. package/dist/module.js +543 -38
  47. package/dist/proposal.d.ts +13 -1
  48. package/dist/proposal.d.ts.map +1 -1
  49. package/dist/proposal.js +21 -4
  50. package/dist/studio/components/AskFeltDB.d.ts.map +1 -1
  51. package/dist/studio/components/ProposalBrowser.d.ts +1 -1
  52. package/dist/studio/components/ProposalBrowser.d.ts.map +1 -1
  53. package/dist/studio/components/index.js +1 -1
  54. package/dist/studio/{components-CNSNrmA9.js → components-Duq2xQWt.js} +251 -193
  55. package/dist/studio/index.js +1 -1
  56. package/dist/studio/studio.css +1 -1
  57. package/dist/studio/utils/proposal-api.d.ts +4 -1
  58. package/dist/studio/utils/proposal-api.d.ts.map +1 -1
  59. package/dist/studio/utils/proposal-api.js +3 -0
  60. package/dist/studio-app/assets/{feltdb_wasm-CSB6KVgw.js → feltdb_wasm-bIqcRzAr.js} +1 -1
  61. package/dist/studio-app/assets/feltdb_wasm_bg-BE79okwX.wasm +0 -0
  62. package/dist/studio-app/assets/{index-yazaWMUN.css → index-Cd_NPw14.css} +1 -1
  63. package/dist/studio-app/assets/index-XGYdlElN.js +29 -0
  64. package/dist/studio-app/index.html +2 -2
  65. package/dist/wasm/feltdb_wasm_bg.wasm +0 -0
  66. package/dist/workspace/local-development-authority.d.ts +2 -0
  67. package/dist/workspace/local-development-authority.d.ts.map +1 -1
  68. package/dist/workspace/local-development-authority.js +65 -2
  69. package/package.json +1 -1
  70. package/dist/studio-app/assets/dist-CCOk39Uc.js +0 -1
  71. package/dist/studio-app/assets/feltdb_wasm_bg-Dd1fnO9U.wasm +0 -0
  72. package/dist/studio-app/assets/index-Bncji3aN.js +0 -43
  73. package/dist/studio-app/assets/lib-B2_7fcn7.js +0 -69
  74. package/dist/studio-app/assets/worker-CARZ5g7K.js +0 -69
@@ -25,6 +25,10 @@ export interface FeltDBFlowProposal {
25
25
  changes: string[];
26
26
  warnings: string[];
27
27
  implementation?: import('./module-intent.js').ModuleImplementationPlan;
28
+ understanding?: import('./application-understanding.js').ApplicationUnderstanding;
29
+ source_plan?: {
30
+ files: import('./proposal.js').ProposalSourceOperation[];
31
+ };
28
32
  }
29
33
  export interface AuthorizationChange {
30
34
  policy: string;
@@ -55,16 +59,17 @@ export declare function loadContractSnapshot(db: {
55
59
  export declare function flowSourceHash(source: string): Promise<string>;
56
60
  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.";
57
61
  /** One provider-neutral prompt used by local WebLLM and bring-your-own models. */
58
- export declare function createFlowProposalMessages(snapshot: FeltDBContractSnapshot, currentFlow: string, intent: string): ({
62
+ export declare function createFlowProposalMessages(snapshot: FeltDBContractSnapshot, currentFlow: string, intent: string): Promise<({
59
63
  role: "system";
60
64
  content: string;
61
65
  } | {
62
66
  role: "user";
63
67
  content: string;
64
- })[];
68
+ })[]>;
65
69
  /** Parse and validate untrusted model output through the canonical FeltDB pipeline. */
66
70
  export declare function validateGeneratedFlowProposal(input: {
67
71
  raw: string;
72
+ intent: string;
68
73
  snapshot: FeltDBContractSnapshot;
69
74
  currentFlow: string;
70
75
  allowDestructiveProposal?: boolean;
@@ -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,6 +1,7 @@
1
1
  import { canonicalApplicationBytes, compileApplicationContract } from './canonical-application.js';
2
2
  import { FLOW_PRIMITIVE_TYPES, diffFlowSpec, parseFlowSpec, planFlowSpecMigration, validateFlowSpec, } from './flowspec.js';
3
3
  import { planModuleImplementation, resolveModuleIntent } from './module-intent.js';
4
+ import { collectApplicationUnderstanding } from './application-understanding.js';
4
5
  async function sha256(value) {
5
6
  const digest = await crypto.subtle.digest('SHA-256', value.slice().buffer);
6
7
  return `sha256:${Array.from(new Uint8Array(digest), byte => byte.toString(16).padStart(2, '0')).join('')}`;
@@ -56,8 +57,10 @@ export const FELTDB_FLOW_DSL_GUIDE = `FeltDB FlowSpec v1 reference:
56
57
  - Use only supported_primitives from the supplied snapshot. Do not invent UI, deployment, record data, secrets, or executable implementation syntax.
57
58
  - Make the smallest semantic change that satisfies the request and retain all unrelated declarations.`;
58
59
  /** One provider-neutral prompt used by local WebLLM and bring-your-own models. */
59
- export function createFlowProposalMessages(snapshot, currentFlow, intent) {
60
- const moduleIntent = resolveModulePlanningContext(intent, snapshot, currentFlow);
60
+ export async function createFlowProposalMessages(snapshot, currentFlow, intent) {
61
+ const resolvedIntent = resolveModuleIntent(intent);
62
+ const understanding = await collectApplicationUnderstanding({ intent, snapshot, currentFlow, moduleIntent: resolvedIntent });
63
+ const moduleIntent = resolvedIntent ? JSON.stringify(planModuleImplementation(resolvedIntent, snapshot, currentFlow, understanding)) : undefined;
61
64
  return [
62
65
  { role: 'system', content: [
63
66
  'You propose minimal changes to a FeltDB application.',
@@ -69,22 +72,12 @@ export function createFlowProposalMessages(snapshot, currentFlow, intent) {
69
72
  FELTDB_FLOW_DSL_GUIDE,
70
73
  `Current contract snapshot: ${contractSnapshotText(snapshot)}`,
71
74
  `Current feltdb.flow:\n${currentFlow}`,
75
+ `Authoritative application understanding (evidence references, inferences, confidence, and unknowns; never promote an inference to an authoritative fact):\n${JSON.stringify(understanding)}`,
72
76
  moduleIntent ? `Authoritative resolved module implementation context (fit these semantics to the application; do not invent or redefine module semantics):\n${moduleIntent}` : '',
73
77
  ].join('\n\n') },
74
78
  { role: 'user', content: intent },
75
79
  ];
76
80
  }
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
- }
88
81
  /** Parse and validate untrusted model output through the canonical FeltDB pipeline. */
89
82
  export async function validateGeneratedFlowProposal(input) {
90
83
  const cleaned = input.raw.trim().replace(/^```(?:json)?\s*/i, '').replace(/\s*```$/, '');
@@ -102,6 +95,7 @@ export async function validateGeneratedFlowProposal(input) {
102
95
  summary: String(value.summary ?? ''),
103
96
  changes: Array.isArray(value.changes) ? value.changes.map(String) : [],
104
97
  warnings: Array.isArray(value.warnings) ? value.warnings.map(String) : [],
98
+ understanding: await collectApplicationUnderstanding({ intent: input.intent, snapshot: input.snapshot, currentFlow: input.currentFlow, moduleIntent: resolveModuleIntent(input.intent) }),
105
99
  };
106
100
  const review = await validateFlowProposal({ proposal, currentFlow: input.currentFlow, snapshot: input.snapshot });
107
101
  if (!input.allowDestructiveProposal && (review.diff.removed.length || review.migration.some(item => item.safety === 'destructive'))) {
@@ -125,6 +125,7 @@ export interface ApplicationManifest {
125
125
  name: string;
126
126
  uri: string;
127
127
  media_type: string;
128
+ content?: string;
128
129
  }[];
129
130
  deployment: {
130
131
  environments: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"application-manifest.d.ts","sourceRoot":"","sources":["../src/application-manifest.ts"],"names":[],"mappings":"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"}
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,OAAO,CAAC,EAAE,OAAO,aAAa,EAAE,sBAAsB,EAAE,CAAC;IACzD,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,CAAC;QAAC,OAAO,CAAC,EAAC,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7E,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"}
@@ -11,7 +11,7 @@ export class ApplicationManifestClient {
11
11
  catch {
12
12
  result = { error: text };
13
13
  } if (!response.ok)
14
- throw Object.assign(new Error(response.status === 401 || response.status === 403 ? 'Authentication failed. Check the configured managed credentials.' : result.error || 'Manifest request failed'), { status: response.status, result }); return result; }
14
+ throw Object.assign(new Error(response.status === 401 || response.status === 403 ? 'Authentication failed. Check the configured managed credentials.' : result.message || result.error || 'Manifest request failed'), { status: response.status, result }); return result; }
15
15
  createDraft(applicationId, baseRevisionId) { return this.request(`/api/applications/${encodeURIComponent(applicationId)}/drafts`, { method: 'POST', body: JSON.stringify({ base_revision_id: baseRevisionId }) }); }
16
16
  getDraft(applicationId, draftId) { return this.request(`/api/applications/${encodeURIComponent(applicationId)}/drafts/${encodeURIComponent(draftId)}`); }
17
17
  updateDraft(applicationId, draft, manifest) { return this.request(`/api/applications/${encodeURIComponent(applicationId)}/drafts/${encodeURIComponent(draft.draft_id)}`, { method: 'PUT', headers: { 'If-Version': String(draft.version) }, body: JSON.stringify({ manifest }) }); }
@@ -0,0 +1,76 @@
1
+ import type { FeltDBContractSnapshot } from "./application-development.js";
2
+ import type { ModuleIntent } from "./module-intent.js";
3
+ export type EvidenceAuthority = "authoritative" | "observed" | "inferred";
4
+ export type EvidenceSource = "feltdb.flow" | "canonical_contract" | "schema" | "policy" | "workflow" | "agent" | "capability" | "module" | "application_metadata" | "repository" | "git" | "proposal" | "proposal_history";
5
+ export interface ApplicationEvidence {
6
+ id: string;
7
+ source: EvidenceSource;
8
+ claim: string;
9
+ value: unknown;
10
+ source_ref: string;
11
+ authority: Exclude<EvidenceAuthority, "inferred">;
12
+ }
13
+ export interface ApplicationInference {
14
+ id: string;
15
+ claim: string;
16
+ value: unknown;
17
+ confidence: number;
18
+ authority: EvidenceAuthority;
19
+ evidence: string[];
20
+ counter_evidence: string[];
21
+ reason: string;
22
+ created_at: string;
23
+ }
24
+ export interface ApplicationUnknown {
25
+ claim: string;
26
+ reason: string;
27
+ resolution: "clarification_required" | "evidence_required";
28
+ }
29
+ export interface ApplicationAssumption {
30
+ claim: string;
31
+ value: unknown;
32
+ based_on: string;
33
+ confidence: number;
34
+ }
35
+ export interface ApplicationUnderstanding {
36
+ version: 1;
37
+ application: FeltDBContractSnapshot["application"];
38
+ intent: string;
39
+ evidence: ApplicationEvidence[];
40
+ inferences: ApplicationInference[];
41
+ unknowns: ApplicationUnknown[];
42
+ assumptions: ApplicationAssumption[];
43
+ evidence_hash: string;
44
+ understanding_hash: string;
45
+ created_at: string;
46
+ completeness: {
47
+ score: number;
48
+ findings: Array<{
49
+ claim: string;
50
+ status: "complete" | "partial" | "missing" | "contradictory";
51
+ evidence: string[];
52
+ }>;
53
+ };
54
+ }
55
+ export interface ObservedEvidenceInput {
56
+ source: "repository" | "git" | "application_metadata" | "proposal" | "proposal_history";
57
+ claim: string;
58
+ value?: unknown;
59
+ source_ref: string;
60
+ }
61
+ /** Deterministic, bounded understanding stage. It accepts structured observations, never raw repository contents. */
62
+ export declare function collectApplicationUnderstanding(input: {
63
+ intent: string;
64
+ snapshot: FeltDBContractSnapshot;
65
+ currentFlow: string;
66
+ moduleIntent?: ModuleIntent;
67
+ observations?: ObservedEvidenceInput[];
68
+ now?: string;
69
+ }): Promise<ApplicationUnderstanding>;
70
+ export declare function understandingInference(understanding: ApplicationUnderstanding, claim: string): ApplicationInference | undefined;
71
+ export declare function understandingOwner(understanding: ApplicationUnderstanding, module?: {
72
+ placement: {
73
+ owner_claim: string;
74
+ };
75
+ }): string | undefined;
76
+ //# sourceMappingURL=application-understanding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-understanding.d.ts","sourceRoot":"","sources":["../src/application-understanding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,282 @@
1
+ import { canonicalApplicationBytes } from "./canonical-application.js";
2
+ import { parseFlowSpec } from "./flowspec.js";
3
+ import { resolveFeltDBModule } from "./module.js";
4
+ const secretValue = /(?:sk_(?:live|test)_|whsec_|fdb_(?:live|control)_|-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----)/i;
5
+ const AUTOMATIC_PLANNING_CONFIDENCE = 0.8;
6
+ function safe(value) {
7
+ if (typeof value === "string")
8
+ return secretValue.test(value) ? "[REDACTED]" : value.slice(0, 500);
9
+ if (Array.isArray(value))
10
+ return value.slice(0, 50).map(safe);
11
+ if (value && typeof value === "object")
12
+ return Object.fromEntries(Object.entries(value)
13
+ .slice(0, 50)
14
+ .map(([key, child]) => [
15
+ key,
16
+ /password|token|credential|private.?key|secret.?value/i.test(key)
17
+ ? "[REDACTED]"
18
+ : safe(child),
19
+ ]));
20
+ return value;
21
+ }
22
+ async function hash(value) {
23
+ const bytes = canonicalApplicationBytes(value);
24
+ const digest = await crypto.subtle.digest("SHA-256", bytes.slice().buffer);
25
+ return `sha256:${Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join("")}`;
26
+ }
27
+ async function evidence(source, claim, value, source_ref, authority) {
28
+ const normalized = {
29
+ source,
30
+ claim: claim.slice(0, 200),
31
+ value: safe(value),
32
+ source_ref: source_ref.slice(0, 500),
33
+ authority,
34
+ };
35
+ return { id: `ev_${(await hash(normalized)).slice(7, 23)}`, ...normalized };
36
+ }
37
+ /** Deterministic, bounded understanding stage. It accepts structured observations, never raw repository contents. */
38
+ export async function collectApplicationUnderstanding(input) {
39
+ const spec = parseFlowSpec(input.currentFlow);
40
+ const collected = [];
41
+ collected.push(await evidence("canonical_contract", "application.contract", {
42
+ version: input.snapshot.contract_version,
43
+ hash: input.snapshot.contract_hash,
44
+ }, "contract", "authoritative"));
45
+ collected.push(await evidence("feltdb.flow", "application.flow", { app: spec.app, version: spec.version }, "feltdb.flow", "authoritative"));
46
+ for (const collection of spec.collections) {
47
+ collected.push(await evidence("schema", `schema.collection.${collection.name}`, {
48
+ fields: collection.fields.map((field) => ({
49
+ name: field.name,
50
+ type: field.type,
51
+ optional: field.optional,
52
+ })),
53
+ }, `schema.collections.${collection.name}`, "authoritative"));
54
+ for (const field of collection.fields.filter((field) => field.type.startsWith("ref ")))
55
+ collected.push(await evidence("schema", `schema.relationship.${collection.name}.${field.name}`, `${collection.name}.${field.name} -> ${field.type.slice(4)}`, `schema.collections.${collection.name}.fields.${field.name}`, "authoritative"));
56
+ }
57
+ for (const policy of spec.policies)
58
+ collected.push(await evidence("policy", `policy.${policy.name}`, policy.statements, `policies.${policy.name}`, "authoritative"));
59
+ for (const workflow of spec.workflows)
60
+ collected.push(await evidence("workflow", `workflow.${workflow.name}`, workflow.steps.map((step) => ({
61
+ name: step.name,
62
+ statements: step.statements,
63
+ })), `workflows.${workflow.name}`, "authoritative"));
64
+ for (const agent of spec.agents)
65
+ collected.push(await evidence("agent", `agent.${agent.name}`, agent.statements, `agents.${agent.name}`, "authoritative"));
66
+ for (const capability of spec.capabilities)
67
+ collected.push(await evidence("capability", `capability.${capability.name}`, capability.statements, `capabilities.${capability.name}`, "authoritative"));
68
+ const resolvedModule = input.moduleIntent
69
+ ? resolveFeltDBModule({
70
+ name: input.moduleIntent.module,
71
+ provider: input.moduleIntent.provider,
72
+ version: input.moduleIntent.version,
73
+ })
74
+ : undefined;
75
+ if (resolvedModule) {
76
+ const module = resolvedModule;
77
+ collected.push(await evidence("module", `module.${module.id}`, {
78
+ id: module.id,
79
+ provider: module.provider,
80
+ version: module.version,
81
+ models: module.models,
82
+ capabilities: module.capabilities,
83
+ reconciliation: module.reconciliation,
84
+ authorization: module.authorization,
85
+ configuration: module.configuration.map((value) => value.name),
86
+ secrets: module.secrets.map((value) => value.name),
87
+ }, `module:${module.id}@${module.version}`, "authoritative"));
88
+ }
89
+ for (const observation of (input.observations ?? []).slice(0, 50))
90
+ collected.push(await evidence(observation.source, observation.claim, observation.value ?? true, observation.source_ref, "observed"));
91
+ if (collected.length > 256)
92
+ throw new Error("EVIDENCE_LIMIT_EXCEEDED");
93
+ const createdAt = input.now ?? new Date().toISOString();
94
+ const relationships = collected.filter((value) => value.claim.startsWith("schema.relationship."));
95
+ const explicitOwner = resolvedModule
96
+ ? spec.collections
97
+ .find((value) => value.name === resolvedModule.placement.primary_application_model)
98
+ ?.fields.find((value) => value.name === resolvedModule.placement.owner_field &&
99
+ value.type.startsWith("ref "))
100
+ : undefined;
101
+ const candidates = [
102
+ ...new Set(resolvedModule?.patterns.flatMap((value) => value.owner_candidates) ?? []),
103
+ ].filter((candidate) => spec.collections.some((value) => value.name === candidate));
104
+ const ownershipSupport = (candidate) => collected.filter((item) => String(item.value).endsWith(`-> ${candidate}`) ||
105
+ (item.source === "repository" &&
106
+ item.claim.includes(candidate.toLowerCase()) &&
107
+ item.claim.endsWith("_boundary")));
108
+ const inferences = [];
109
+ const unknowns = [];
110
+ const assumptions = [];
111
+ if (resolvedModule) {
112
+ const ownerClaim = resolvedModule.placement.owner_claim;
113
+ if (explicitOwner) {
114
+ const owner = explicitOwner.type.slice(4);
115
+ const relationshipClaim = `schema.relationship.${resolvedModule.placement.primary_application_model}.${resolvedModule.placement.owner_field}`;
116
+ const support = relationships.filter((value) => value.claim === relationshipClaim);
117
+ inferences.push({
118
+ id: `inf_${resolvedModule.id}_owner`,
119
+ claim: ownerClaim,
120
+ value: owner,
121
+ confidence: 1,
122
+ authority: "authoritative",
123
+ evidence: support.map((value) => value.id),
124
+ counter_evidence: [],
125
+ reason: `${resolvedModule.placement.primary_application_model}.${resolvedModule.placement.owner_field} is explicitly declared by the application contract.`,
126
+ created_at: createdAt,
127
+ });
128
+ }
129
+ else {
130
+ const ranked = candidates
131
+ .map((candidate) => ({
132
+ candidate,
133
+ support: ownershipSupport(candidate),
134
+ }))
135
+ .sort((left, right) => right.support.length - left.support.length ||
136
+ left.candidate.localeCompare(right.candidate));
137
+ if (ranked[0]?.support.length &&
138
+ ranked[0].support.length > (ranked[1]?.support.length ?? 0)) {
139
+ const authoritativeCount = ranked[0].support.filter((value) => value.authority === "authoritative").length;
140
+ const confidence = Math.round(Math.min(0.97, authoritativeCount ? 0.84 + authoritativeCount * 0.06 : 0.72) * 100) / 100;
141
+ inferences.push({
142
+ id: `inf_${resolvedModule.id}_owner`,
143
+ claim: ownerClaim,
144
+ value: ranked[0].candidate,
145
+ confidence,
146
+ authority: "inferred",
147
+ evidence: ranked[0].support.map((value) => value.id),
148
+ counter_evidence: ranked
149
+ .slice(1)
150
+ .flatMap((value) => value.support.map((item) => item.id)),
151
+ reason: `${ranked[0].candidate} is the strongest existing application ownership boundary.`,
152
+ created_at: createdAt,
153
+ });
154
+ if (confidence >= AUTOMATIC_PLANNING_CONFIDENCE)
155
+ assumptions.push({
156
+ claim: `${resolvedModule.placement.primary_application_model}.${resolvedModule.placement.owner_field}`,
157
+ value: ranked[0].candidate,
158
+ based_on: `inf_${resolvedModule.id}_owner`,
159
+ confidence,
160
+ });
161
+ else
162
+ unknowns.push({
163
+ claim: ownerClaim,
164
+ reason: `The strongest ownership inference has confidence ${confidence}, below the ${AUTOMATIC_PLANNING_CONFIDENCE} planning threshold.`,
165
+ resolution: "clarification_required",
166
+ });
167
+ }
168
+ else {
169
+ unknowns.push({
170
+ claim: ownerClaim,
171
+ reason: `The contract does not establish a unique ${resolvedModule.id} ownership boundary.`,
172
+ resolution: "clarification_required",
173
+ });
174
+ }
175
+ }
176
+ if (!spec.modules?.some((value) => value.name === resolvedModule.id))
177
+ unknowns.push({
178
+ claim: `${resolvedModule.id}.existing_implementation`,
179
+ reason: `${resolvedModule.name} is not installed in the canonical application contract.`,
180
+ resolution: "evidence_required",
181
+ });
182
+ }
183
+ for (const inference of inferences)
184
+ if (inference.confidence > 0 && !inference.evidence.length)
185
+ throw new Error(`CONFIDENCE_WITHOUT_EVIDENCE: ${inference.claim}`);
186
+ const evidenceHash = await hash(collected);
187
+ const completenessFindings = [
188
+ {
189
+ claim: "ownership",
190
+ status: (inferences.length
191
+ ? "complete"
192
+ : unknowns.some((value) => value.resolution === "clarification_required")
193
+ ? "contradictory"
194
+ : "missing"),
195
+ evidence: inferences.flatMap((value) => value.evidence),
196
+ },
197
+ {
198
+ claim: "integration_boundary",
199
+ status: (resolvedModule ? "complete" : "missing"),
200
+ evidence: collected
201
+ .filter((value) => value.source === "module")
202
+ .map((value) => value.id),
203
+ },
204
+ {
205
+ claim: "authorization",
206
+ status: (spec.policies.length ||
207
+ collected.some((value) => value.claim === "repository.authentication")
208
+ ? "complete"
209
+ : "partial"),
210
+ evidence: collected
211
+ .filter((value) => value.source === "policy" ||
212
+ value.claim === "repository.authentication")
213
+ .map((value) => value.id),
214
+ },
215
+ {
216
+ claim: "state_placement",
217
+ status: (candidates.length ? "complete" : "missing"),
218
+ evidence: collected
219
+ .filter((value) => value.source === "schema")
220
+ .map((value) => value.id),
221
+ },
222
+ {
223
+ claim: "workflow_mapping",
224
+ status: (resolvedModule?.reconciliation.length
225
+ ? "complete"
226
+ : "missing"),
227
+ evidence: collected
228
+ .filter((value) => value.source === "module")
229
+ .map((value) => value.id),
230
+ },
231
+ {
232
+ claim: "ui_placement",
233
+ status: (collected.some((value) => value.source === "repository")
234
+ ? "partial"
235
+ : "missing"),
236
+ evidence: collected
237
+ .filter((value) => value.source === "repository")
238
+ .map((value) => value.id),
239
+ },
240
+ ];
241
+ const weights = { complete: 1, partial: 0.5, missing: 0, contradictory: 0 };
242
+ const completeness = {
243
+ score: Math.round((completenessFindings.reduce((sum, value) => sum + weights[value.status], 0) /
244
+ completenessFindings.length) *
245
+ 100),
246
+ findings: completenessFindings,
247
+ };
248
+ const semantic = {
249
+ version: 1,
250
+ application: input.snapshot.application,
251
+ intent: input.intent,
252
+ evidence_hash: evidenceHash,
253
+ inferences,
254
+ unknowns,
255
+ assumptions,
256
+ completeness,
257
+ };
258
+ const fingerprint = {
259
+ ...semantic,
260
+ inferences: inferences.map(({ created_at: _createdAt, ...inference }) => inference),
261
+ };
262
+ return {
263
+ ...semantic,
264
+ evidence: collected,
265
+ understanding_hash: await hash(fingerprint),
266
+ created_at: createdAt,
267
+ };
268
+ }
269
+ export function understandingInference(understanding, claim) {
270
+ return understanding.inferences.find((value) => value.claim === claim);
271
+ }
272
+ export function understandingOwner(understanding, module) {
273
+ const claim = module?.placement.owner_claim ?? "billing.owner";
274
+ const inference = understandingInference(understanding, claim);
275
+ if (!inference ||
276
+ understanding.unknowns.some((value) => value.claim === claim))
277
+ return undefined;
278
+ if (inference.authority !== "authoritative" &&
279
+ inference.confidence < AUTOMATIC_PLANNING_CONFIDENCE)
280
+ return undefined;
281
+ return String(inference.value);
282
+ }
@@ -69,7 +69,7 @@ export async function generateConfiguredFlowProposal(input, cwd = process.cwd())
69
69
  throw new Error('Local WebLLM generation runs in the browser');
70
70
  const apiKey = config.credentialId ? loadCredential(config.credentialId) : process.env.FELTDB_AI_API_KEY;
71
71
  const baseUrl = config.baseUrl || 'https://api.openai.com/v1';
72
- const messages = createFlowProposalMessages(input.snapshot, input.currentFlow, input.intent);
72
+ const messages = await createFlowProposalMessages(input.snapshot, input.currentFlow, input.intent);
73
73
  const complete = async (requestMessages) => {
74
74
  const response = await fetch(`${baseUrl}/chat/completions`, {
75
75
  method: 'POST',
@@ -86,12 +86,12 @@ export async function generateConfiguredFlowProposal(input, cwd = process.cwd())
86
86
  };
87
87
  const raw = await complete(messages);
88
88
  try {
89
- return await validateGeneratedFlowProposal({ raw, snapshot: input.snapshot, currentFlow: input.currentFlow });
89
+ return await validateGeneratedFlowProposal({ raw, intent: input.intent, snapshot: input.snapshot, currentFlow: input.currentFlow });
90
90
  }
91
91
  catch (error) {
92
92
  const reason = error instanceof Error ? error.message : String(error);
93
93
  const repaired = await complete([...messages, { role: 'assistant', content: raw }, { role: 'user',
94
94
  content: `FeltDB rejected that proposal: ${reason}. Return one corrected complete JSON proposal. Do not broaden or add unrelated changes.` }]);
95
- return validateGeneratedFlowProposal({ raw: repaired, snapshot: input.snapshot, currentFlow: input.currentFlow });
95
+ return validateGeneratedFlowProposal({ raw: repaired, intent: input.intent, snapshot: input.snapshot, currentFlow: input.currentFlow });
96
96
  }
97
97
  }