@synapsor/runner 1.6.3 → 1.6.4

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 (97) hide show
  1. package/AGENTS.md +2 -2
  2. package/CHANGELOG.md +72 -8
  3. package/CONTRIBUTING.md +10 -3
  4. package/README.md +61 -93
  5. package/SECURITY.md +7 -3
  6. package/THREAT_MODEL.md +37 -0
  7. package/dist/authoring.mjs +98 -13
  8. package/dist/cli.d.ts +12 -1
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/local-ui.d.ts +60 -0
  11. package/dist/local-ui.d.ts.map +1 -1
  12. package/dist/runner.mjs +7321 -2000
  13. package/dist/runtime.mjs +528 -51
  14. package/docs/README.md +14 -0
  15. package/docs/agent-guided-setup.md +7 -7
  16. package/docs/aggregate-reads.md +14 -5
  17. package/docs/app-owned-executors.md +5 -6
  18. package/docs/auto-boundary-and-scoped-explore.md +58 -6
  19. package/docs/capability-authoring.md +2 -2
  20. package/docs/client-recipes.md +1 -1
  21. package/docs/cloud-mode.md +7 -7
  22. package/docs/conformance.md +6 -3
  23. package/docs/current-scope.md +13 -2
  24. package/docs/cursor-plugin.md +3 -3
  25. package/docs/database-enforced-scope.md +6 -0
  26. package/docs/dsl-reference.md +12 -1
  27. package/docs/fresh-developer-usability.md +6 -6
  28. package/docs/getting-started-own-database.md +41 -41
  29. package/docs/guided-onboarding.md +98 -30
  30. package/docs/limitations.md +34 -14
  31. package/docs/local-mode.md +20 -20
  32. package/docs/mcp-audit.md +14 -14
  33. package/docs/mcp-client-setup.md +11 -14
  34. package/docs/mcp-clients.md +1 -1
  35. package/docs/migrating-to-synapsor-spec.md +5 -1
  36. package/docs/openai-agents-sdk.md +2 -2
  37. package/docs/proposal-evidence-freshness.md +7 -7
  38. package/docs/recipes.md +6 -6
  39. package/docs/release-notes.md +86 -10
  40. package/docs/release-policy.md +20 -7
  41. package/docs/reversible-change-sets.md +1 -1
  42. package/docs/reviewed-database-views.md +132 -0
  43. package/docs/reviewed-relationships.md +245 -0
  44. package/docs/rfcs/006-reviewed-reversible-change-sets.md +1 -1
  45. package/docs/runner-bundles.md +7 -7
  46. package/docs/schema-api-candidates.md +1 -1
  47. package/docs/security-boundary.md +30 -0
  48. package/docs/troubleshooting-first-run.md +52 -12
  49. package/docs/use-your-own-database.md +6 -4
  50. package/docs/workbench-ask.md +279 -0
  51. package/docs/writeback-executors.md +7 -7
  52. package/examples/auto-boundary-churn/README.md +1 -1
  53. package/examples/community-solar-clean-room/README.md +7 -0
  54. package/examples/community-solar-clean-room/docker-compose.yml +16 -0
  55. package/examples/community-solar-clean-room/package.json +15 -0
  56. package/examples/community-solar-clean-room/prisma/schema.prisma +171 -0
  57. package/examples/community-solar-clean-room/seed/postgres.sql +571 -0
  58. package/examples/fitflow-guided-onboarding/README.md +2 -2
  59. package/examples/openai-agents-http/Makefile +1 -1
  60. package/examples/openai-agents-http/README.md +1 -1
  61. package/examples/openai-agents-stdio/Makefile +1 -1
  62. package/examples/openai-agents-stdio/README.md +2 -2
  63. package/examples/openai-agents-stdio/agent.py +1 -4
  64. package/examples/reference-support-billing-app/README.md +16 -16
  65. package/examples/retail-clean-room/README.md +7 -0
  66. package/examples/retail-clean-room/docker-compose.yml +16 -0
  67. package/examples/retail-clean-room/package.json +9 -0
  68. package/examples/retail-clean-room/prisma/schema.prisma +239 -0
  69. package/examples/retail-clean-room/seed/postgres.sql +781 -0
  70. package/examples/retail-clean-room/view-recipe/average-retained-revenue.synapsor.sql +21 -0
  71. package/examples/retail-clean-room/view-recipe/synapsor.runner.json +25 -0
  72. package/examples/support-plan-credit/mcp-client-examples/claude-code.sh +1 -4
  73. package/examples/support-plan-credit/mcp-client-examples/claude-desktop.json +1 -4
  74. package/examples/support-plan-credit/mcp-client-examples/codex.config.toml +1 -4
  75. package/examples/support-plan-credit/mcp-client-examples/cursor-global.mcp.json +1 -4
  76. package/examples/support-plan-credit/mcp-client-examples/cursor-project.mcp.json +1 -4
  77. package/examples/support-plan-credit/mcp-client-examples/generic-stdio.json +1 -4
  78. package/examples/support-plan-credit/mcp-client-examples/generic-stdio.mjs +1 -1
  79. package/examples/support-plan-credit/mcp-client-examples/google-adk.py +1 -1
  80. package/examples/support-plan-credit/mcp-client-examples/langchain.mjs +1 -1
  81. package/examples/support-plan-credit/mcp-client-examples/llamaindex.py +1 -1
  82. package/examples/support-plan-credit/mcp-client-examples/openai-agents-stdio.ts +1 -1
  83. package/examples/support-plan-credit/mcp-client-examples/vscode.mcp.json +1 -4
  84. package/fixtures/compatibility/published-1.6.3/manifest.json +76 -0
  85. package/fixtures/compatibility/published-1.6.3/sources/packages/dsl/examples/aggregate-read.synapsor.sql +21 -0
  86. package/fixtures/compatibility/published-1.6.3/sources/packages/dsl/examples/billing-late-fee.synapsor.sql +56 -0
  87. package/fixtures/compatibility/published-1.6.3/sources/packages/dsl/examples/bounded-set-multi-term.synapsor.sql +30 -0
  88. package/fixtures/compatibility/published-1.6.3/sources/packages/dsl/examples/principal-row-scope.synapsor.sql +23 -0
  89. package/fixtures/compatibility/published-1.6.3/sources/packages/spec/fixtures/conformance/aggregate-read/contract.json +119 -0
  90. package/fixtures/compatibility/published-1.6.3/sources/packages/spec/fixtures/conformance/approval-quorum/contract.json +44 -0
  91. package/fixtures/compatibility/published-1.6.3/sources/packages/spec/fixtures/conformance/bounded-set-threats/contract.json +115 -0
  92. package/fixtures/compatibility/published-1.6.3/sources/packages/spec/fixtures/conformance/principal-row-scope/contract.json +78 -0
  93. package/fixtures/compatibility/published-1.6.3/sources/packages/spec/fixtures/conformance/proposal-capability/contract.json +101 -0
  94. package/fixtures/compatibility/published-1.6.3/sources/packages/spec/fixtures/conformance/reversible-change-sets/contract.json +98 -0
  95. package/fixtures/compatibility/published-1.6.3/sources/packages/spec/fixtures/valid/basic-read.contract.json +60 -0
  96. package/llms.txt +10 -5
  97. package/package.json +8 -2
@@ -63,6 +63,7 @@ var PROTECTED_READ_KEYS = /* @__PURE__ */ new Set([
63
63
  "generation_lock_fingerprint",
64
64
  "predicates",
65
65
  "relationship",
66
+ "relationships",
66
67
  "row_order_by",
67
68
  "aggregate",
68
69
  "limits"
@@ -81,6 +82,19 @@ var PROTECTED_RELATIONSHIP_KEYS = /* @__PURE__ */ new Set([
81
82
  "cardinality",
82
83
  "max_fan_out"
83
84
  ]);
85
+ var PROTECTED_RELATIONSHIP_PATH_KEYS = /* @__PURE__ */ new Set(["name", "links"]);
86
+ var PROTECTED_RELATIONSHIP_LINK_KEYS = /* @__PURE__ */ new Set([
87
+ "schema",
88
+ "table",
89
+ "primary_key",
90
+ "tenant_key",
91
+ "principal_scope_key",
92
+ "local_key",
93
+ "target_key",
94
+ "cardinality",
95
+ "max_fan_out",
96
+ "unmatched_rows"
97
+ ]);
84
98
  var PROTECTED_ROW_ORDER_KEYS = /* @__PURE__ */ new Set(["field", "direction"]);
85
99
  var PROTECTED_AGGREGATE_KEYS = /* @__PURE__ */ new Set([
86
100
  "counted_entity",
@@ -545,7 +559,18 @@ function validateProtectedRead(capability, path, errors) {
545
559
  const keptOut = new Set(Array.isArray(capability.kept_out_fields) ? capability.kept_out_fields.filter((field) => typeof field === "string") : []);
546
560
  const subject = isRecord(capability.subject) ? capability.subject : {};
547
561
  const trustedScopeFields = new Set([subject.tenant_key, subject.principal_scope_key].filter((field) => isSafeIdentifier(field)));
548
- const relationshipName = validateProtectedRelationship(protectedRead.relationship, keptOut, trustedScopeFields, `${path}.protected_read.relationship`, errors);
562
+ const relationshipNames = /* @__PURE__ */ new Set();
563
+ const legacyRelationshipName = validateProtectedRelationship(protectedRead.relationship, keptOut, trustedScopeFields, `${path}.protected_read.relationship`, errors);
564
+ if (legacyRelationshipName)
565
+ relationshipNames.add(legacyRelationshipName);
566
+ if (protectedRead.relationship !== void 0 && protectedRead.relationships !== void 0) {
567
+ errors.push({
568
+ path: `${path}.protected_read`,
569
+ code: "PROTECTED_RELATIONSHIP_FORMS_CONFLICT",
570
+ message: "protected_read must use either legacy relationship or reviewed relationships, not both."
571
+ });
572
+ }
573
+ validateProtectedRelationshipPaths(protectedRead.relationships, keptOut, trustedScopeFields, `${path}.protected_read.relationships`, relationshipNames, errors);
549
574
  if (!isRecord(capability.evidence) || capability.evidence.required !== true || capability.evidence.query_audit !== true) {
550
575
  errors.push({
551
576
  path: `${path}.evidence`,
@@ -564,7 +589,7 @@ function validateProtectedRead(capability, path, errors) {
564
589
  return;
565
590
  }
566
591
  checkUnknownKeys(predicate, PROTECTED_PREDICATE_KEYS, predicatePath, errors);
567
- validateProtectedFieldReference(predicate.field, predicate.relationship, relationshipName, keptOut, trustedScopeFields, predicatePath, errors);
592
+ validateProtectedFieldReference(predicate.field, predicate.relationship, relationshipNames, keptOut, trustedScopeFields, predicatePath, errors);
568
593
  if (!["eq", "neq", "lt", "lte", "gt", "gte", "in"].includes(String(predicate.operator))) {
569
594
  errors.push({ path: `${predicatePath}.operator`, code: "INVALID_PROTECTED_PREDICATE_OPERATOR", message: "protected predicate operator must be eq, neq, lt, lte, gt, gte, or in." });
570
595
  }
@@ -624,7 +649,7 @@ function validateProtectedRead(capability, path, errors) {
624
649
  validateProtectedAggregate(protectedRead.aggregate, {
625
650
  args,
626
651
  referencedArgs,
627
- relationshipName,
652
+ relationshipNames,
628
653
  keptOut,
629
654
  trustedScopeFields,
630
655
  maxGroups: isRecord(protectedRead.limits) ? protectedRead.limits.max_groups : void 0,
@@ -667,6 +692,65 @@ function validateProtectedRelationship(value, keptOut, trustedScopeFields, path,
667
692
  }
668
693
  return isSafeIdentifier(value.name) ? value.name : void 0;
669
694
  }
695
+ function validateProtectedRelationshipPaths(value, keptOut, trustedScopeFields, path, relationshipNames, errors) {
696
+ if (value === void 0)
697
+ return;
698
+ if (!Array.isArray(value) || value.length < 1 || value.length > 3) {
699
+ errors.push({
700
+ path,
701
+ code: "INVALID_PROTECTED_RELATIONSHIP_PATHS",
702
+ message: "protected relationships must contain 1 through 3 reviewed paths."
703
+ });
704
+ return;
705
+ }
706
+ value.forEach((candidate, pathIndex) => {
707
+ const candidatePath = `${path}[${pathIndex}]`;
708
+ if (!isRecord(candidate)) {
709
+ errors.push({ path: candidatePath, code: "PROTECTED_RELATIONSHIP_PATH_NOT_OBJECT", message: "protected relationship path must be an object." });
710
+ return;
711
+ }
712
+ checkUnknownKeys(candidate, PROTECTED_RELATIONSHIP_PATH_KEYS, candidatePath, errors);
713
+ if (!isSafeIdentifier(candidate.name)) {
714
+ errors.push({ path: `${candidatePath}.name`, code: "INVALID_PROTECTED_RELATIONSHIP_IDENTIFIER", message: "relationship path name must be a fixed safe identifier." });
715
+ } else if (relationshipNames.has(candidate.name)) {
716
+ errors.push({ path: `${candidatePath}.name`, code: "DUPLICATE_PROTECTED_RELATIONSHIP", message: "protected relationship names must be unique." });
717
+ } else {
718
+ relationshipNames.add(candidate.name);
719
+ }
720
+ if (!Array.isArray(candidate.links) || candidate.links.length < 1 || candidate.links.length > 2) {
721
+ errors.push({ path: `${candidatePath}.links`, code: "INVALID_PROTECTED_RELATIONSHIP_LINKS", message: "a protected relationship path requires one or two reviewed many-to-one links." });
722
+ return;
723
+ }
724
+ candidate.links.forEach((link, linkIndex) => {
725
+ const linkPath = `${candidatePath}.links[${linkIndex}]`;
726
+ if (!isRecord(link)) {
727
+ errors.push({ path: linkPath, code: "PROTECTED_RELATIONSHIP_LINK_NOT_OBJECT", message: "protected relationship link must be an object." });
728
+ return;
729
+ }
730
+ checkUnknownKeys(link, PROTECTED_RELATIONSHIP_LINK_KEYS, linkPath, errors);
731
+ for (const key of ["schema", "table", "primary_key", "tenant_key", "local_key", "target_key"]) {
732
+ if (!isSafeIdentifier(link[key]))
733
+ errors.push({ path: `${linkPath}.${key}`, code: "INVALID_PROTECTED_RELATIONSHIP_IDENTIFIER", message: `${key} must be a fixed safe identifier.` });
734
+ }
735
+ if (link.principal_scope_key !== void 0 && !isSafeIdentifier(link.principal_scope_key)) {
736
+ errors.push({ path: `${linkPath}.principal_scope_key`, code: "INVALID_PROTECTED_RELATIONSHIP_IDENTIFIER", message: "principal_scope_key must be a fixed safe identifier." });
737
+ }
738
+ if (link.cardinality !== "many_to_one" || link.max_fan_out !== 1) {
739
+ errors.push({ path: linkPath, code: "PROTECTED_RELATIONSHIP_CARDINALITY_FORBIDDEN", message: "every protected relationship link must be reviewed many-to-one with max_fan_out 1." });
740
+ }
741
+ if (link.unmatched_rows !== "exclude" && link.unmatched_rows !== "keep_null") {
742
+ errors.push({ path: `${linkPath}.unmatched_rows`, code: "PROTECTED_RELATIONSHIP_NULL_SEMANTICS_REQUIRED", message: "every protected relationship link must freeze exclude or keep_null unmatched-row semantics." });
743
+ }
744
+ if (linkIndex === 0 && isSafeIdentifier(link.local_key) && (keptOut.has(link.local_key) || trustedScopeFields.has(link.local_key))) {
745
+ errors.push({
746
+ path: `${linkPath}.local_key`,
747
+ code: "PROTECTED_RELATIONSHIP_LOCAL_KEY_FORBIDDEN",
748
+ message: "the reviewed relationship cannot join through a kept-out or trusted-scope subject field."
749
+ });
750
+ }
751
+ });
752
+ });
753
+ }
670
754
  function validateProtectedAggregate(value, input) {
671
755
  const { path, errors } = input;
672
756
  if (!isRecord(value)) {
@@ -690,14 +774,14 @@ function validateProtectedAggregate(value, input) {
690
774
  validateUniqueIdentifier(measure.name, measureNames, `${measurePath}.name`, "DUPLICATE_PROTECTED_MEASURE_NAME", errors);
691
775
  if (!["count", "count_distinct", "sum", "avg"].includes(String(measure.function)))
692
776
  errors.push({ path: `${measurePath}.function`, code: "INVALID_PROTECTED_MEASURE_FUNCTION", message: "measure function must be count, count_distinct, sum, or avg." });
693
- validateProtectedRelationshipReference(measure.relationship, input.relationshipName, `${measurePath}.relationship`, errors);
777
+ validateProtectedRelationshipReference(measure.relationship, input.relationshipNames, `${measurePath}.relationship`, errors);
694
778
  if (measure.function === "count") {
695
779
  if (measure.field !== void 0)
696
780
  errors.push({ path: `${measurePath}.field`, code: "PROTECTED_COUNT_FIELD_FORBIDDEN", message: "count measures count scoped subject rows and must not declare a field." });
697
781
  if (measure.relationship !== void 0)
698
782
  errors.push({ path: `${measurePath}.relationship`, code: "PROTECTED_COUNT_RELATIONSHIP_FORBIDDEN", message: "count measures count the scoped subject entity, not a joined relation." });
699
783
  } else {
700
- validateProtectedFieldReference(measure.field, measure.relationship, input.relationshipName, input.keptOut, input.trustedScopeFields, measurePath, errors);
784
+ validateProtectedFieldReference(measure.field, measure.relationship, input.relationshipNames, input.keptOut, input.trustedScopeFields, measurePath, errors);
701
785
  }
702
786
  });
703
787
  }
@@ -714,7 +798,7 @@ function validateProtectedAggregate(value, input) {
714
798
  }
715
799
  checkUnknownKeys(dimension, PROTECTED_DIMENSION_KEYS, dimensionPath, errors);
716
800
  validateUniqueIdentifier(dimension.name, dimensionNames, `${dimensionPath}.name`, "DUPLICATE_PROTECTED_DIMENSION_NAME", errors);
717
- validateProtectedFieldReference(dimension.field, dimension.relationship, input.relationshipName, input.keptOut, input.trustedScopeFields, dimensionPath, errors);
801
+ validateProtectedFieldReference(dimension.field, dimension.relationship, input.relationshipNames, input.keptOut, input.trustedScopeFields, dimensionPath, errors);
718
802
  });
719
803
  }
720
804
  }
@@ -728,7 +812,7 @@ function validateProtectedAggregate(value, input) {
728
812
  errors.push({ path: `${bucketPath}.name`, code: "INVALID_PROTECTED_TIME_BUCKET_NAME", message: "time bucket name must be a safe identifier." });
729
813
  if (value.time_bucket.bucket !== "day" && value.time_bucket.bucket !== "week" && value.time_bucket.bucket !== "month")
730
814
  errors.push({ path: `${bucketPath}.bucket`, code: "INVALID_PROTECTED_TIME_BUCKET", message: "time bucket must be day, week, or month." });
731
- validateProtectedFieldReference(value.time_bucket.field, value.time_bucket.relationship, input.relationshipName, input.keptOut, input.trustedScopeFields, bucketPath, errors);
815
+ validateProtectedFieldReference(value.time_bucket.field, value.time_bucket.relationship, input.relationshipNames, input.keptOut, input.trustedScopeFields, bucketPath, errors);
732
816
  }
733
817
  }
734
818
  if (value.comparison !== void 0) {
@@ -737,7 +821,7 @@ function validateProtectedAggregate(value, input) {
737
821
  errors.push({ path: comparisonPath, code: "PROTECTED_COMPARISON_NOT_OBJECT", message: "comparison must be an object." });
738
822
  } else {
739
823
  checkUnknownKeys(value.comparison, PROTECTED_COMPARISON_KEYS, comparisonPath, errors);
740
- validateProtectedFieldReference(value.comparison.field, value.comparison.relationship, input.relationshipName, input.keptOut, input.trustedScopeFields, comparisonPath, errors);
824
+ validateProtectedFieldReference(value.comparison.field, value.comparison.relationship, input.relationshipNames, input.keptOut, input.trustedScopeFields, comparisonPath, errors);
741
825
  if (!Array.isArray(value.comparison.ranges) || value.comparison.ranges.length < 1 || value.comparison.ranges.length > 2) {
742
826
  errors.push({ path: `${comparisonPath}.ranges`, code: "INVALID_PROTECTED_COMPARISON_RANGES", message: "comparison requires one or two bounded time ranges." });
743
827
  } else {
@@ -828,19 +912,20 @@ function validateProtectedValue(value, args, referencedArgs, path, errors) {
828
912
  }
829
913
  }
830
914
  }
831
- function validateProtectedFieldReference(field, relationship, relationshipName, keptOut, trustedScopeFields, path, errors) {
915
+ function validateProtectedFieldReference(field, relationship, relationshipNames, keptOut, trustedScopeFields, path, errors) {
832
916
  if (!isSafeIdentifier(field)) {
833
917
  errors.push({ path: `${path}.field`, code: "INVALID_PROTECTED_FIELD", message: "protected field must be a fixed safe identifier." });
834
918
  } else if (relationship === void 0 && (keptOut.has(field) || trustedScopeFields.has(field))) {
835
919
  errors.push({ path: `${path}.field`, code: "PROTECTED_FIELD_FORBIDDEN", message: "kept-out and trusted-scope fields cannot be selected, filtered, grouped, sorted, joined, aggregated, or counted distinctly." });
836
920
  }
837
- validateProtectedRelationshipReference(relationship, relationshipName, `${path}.relationship`, errors);
921
+ validateProtectedRelationshipReference(relationship, relationshipNames, `${path}.relationship`, errors);
838
922
  }
839
- function validateProtectedRelationshipReference(value, relationshipName, path, errors) {
923
+ function validateProtectedRelationshipReference(value, relationshipNames, path, errors) {
840
924
  if (value === void 0)
841
925
  return;
842
- if (!isSafeIdentifier(value) || value !== relationshipName)
843
- errors.push({ path, code: "UNKNOWN_PROTECTED_RELATIONSHIP", message: "relationship must reference the capability's one reviewed many-to-one relationship." });
926
+ if (!isSafeIdentifier(value) || !relationshipNames.has(value)) {
927
+ errors.push({ path, code: "UNKNOWN_PROTECTED_RELATIONSHIP", message: "relationship must reference one of the capability's reviewed many-to-one paths." });
928
+ }
844
929
  }
845
930
  function validateUniqueIdentifier(value, seen, path, code, errors) {
846
931
  if (!isSafeIdentifier(value)) {
package/dist/cli.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  import { type DbRowReader, type RuntimeCapabilityConfig, type RuntimeConfig, type RuntimeSupervisedWorkerCapabilityPolicy } from "@synapsor-runner/mcp-server";
3
3
  import { ProposalStore, type PolicyApprovalLimit, type StoredProposal, type StoredWritebackIntent } from "@synapsor-runner/proposal-store";
4
4
  import { type ExecutionReceiptV2, type ExecutionReceiptV3, type ExecutionReceiptV4, type WritebackJob } from "@synapsor-runner/protocol";
5
- import { type SchemaInspection } from "@synapsor-runner/schema-inspector";
5
+ import { inspectDatabase, type SchemaInspection } from "@synapsor-runner/schema-inspector";
6
6
  import { type ReconciliationObservation } from "@synapsor-runner/worker-core";
7
7
  import { type WorkbenchDeploymentProfile } from "./local-ui.js";
8
8
  export declare function main(argv: string[]): Promise<number>;
@@ -18,6 +18,8 @@ export declare function resolveSqlWriteDatabaseUrl(job: WritebackJob, configPath
18
18
  export declare function verifyLocalWritebackAuthority(job: WritebackJob, configPath: string, storePath?: string, options?: {
19
19
  cloudApproved?: boolean;
20
20
  }): Promise<void>;
21
+ export declare function boundaryReviewCommand(args: string[]): Promise<number>;
22
+ export declare function boundaryActivateCommand(args: string[], schemaInspector?: typeof inspectDatabase): Promise<number>;
21
23
  export declare function reconciliationSupportedOutcome(observation: ReconciliationObservation): "applied" | "conflict" | "failed";
22
24
  export declare function reconciliationReceipt(intent: StoredWritebackIntent, observation: ReconciliationObservation, outcome: "applied" | "conflict" | "failed", runnerId: string, reason: string): ExecutionReceiptV2 | ExecutionReceiptV3 | ExecutionReceiptV4;
23
25
  export declare function assertSupervisedPolicyApprovalCurrent(store: ProposalStore, config: RuntimeConfig, capability: RuntimeCapabilityConfig, proposal: StoredProposal): {
@@ -35,6 +37,15 @@ export type SupervisedWriterPostureAssessment = {
35
37
  export declare function assessSupervisedWriterPosture(config: RuntimeConfig, policy: RuntimeSupervisedWorkerCapabilityPolicy, inspection: SchemaInspection): SupervisedWriterPostureAssessment;
36
38
  export declare function updateSupervisedProposalExpiryAttention(store: ProposalStore, config: RuntimeConfig, now?: string): void;
37
39
  export declare function workbenchDeploymentProfileArg(args: string[]): WorkbenchDeploymentProfile | undefined;
40
+ export declare function databaseInputFromArgs(args: string[], options?: {
41
+ implyDatabaseUrl?: boolean;
42
+ }): {
43
+ explicit: boolean;
44
+ inlineUrl: boolean;
45
+ inspectionDatabaseUrlEnv: string;
46
+ configDatabaseUrlEnv: string;
47
+ env?: NodeJS.ProcessEnv;
48
+ };
38
49
  export declare function runCliProcess(argv: string[]): Promise<number>;
39
50
  export {};
40
51
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAaA,OAAO,EAAkgB,KAAK,WAAW,EAAuD,KAAK,uBAAuB,EAAE,KAAK,aAAa,EAAE,KAAK,uCAAuC,EAAoF,MAAM,6BAA6B,CAAC;AAItyB,OAAO,EAEL,aAAa,EAab,KAAK,mBAAmB,EAcxB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAO3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAiL,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAqG,KAAK,YAAY,EAAwB,MAAM,2BAA2B,CAAC;AAEjb,OAAO,EAGL,eAAe,EAMf,KAAK,gBAAgB,EAEtB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAcL,KAAK,yBAAyB,EAG/B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAOL,KAAK,0BAA0B,EAQhC,MAAM,eAAe,CAAC;AAwavB,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6E1D;AAwID,KAAK,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE9E,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CACvC,GACL,OAAO,CAAC,MAAM,CAAC,CA+YjB;AAokKD,wBAAsB,0BAA0B,CAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAc/H;AAojBD,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,OAAO,CAAC,IAAI,CAAC,CA0Hf;AA0gBD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAgE3E;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EAAE,EACd,eAAe,GAAE,OAAO,eAAiC,GACxD,OAAO,CAAC,MAAM,CAAC,CA0RjB;AA0iDD,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,yBAAyB,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAKxH;AA2BD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,EAC7B,WAAW,EAAE,yBAAyB,EACtC,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,EAC1C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB,CAgH9D;AAutHD,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,uBAAuB,EACnC,QAAQ,EAAE,cAAc,GACvB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,mBAAmB,EAAE,CAAA;CAAE,GAAG,SAAS,CAgD/D;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,UAAU,MAAM,EAAE,CAAC;IAChC,oBAAoB,EAAE,UAAU,MAAM,EAAE,GAAG,IAAI,CAAC;IAChD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,uCAAuC,EAC/C,UAAU,EAAE,gBAAgB,GAC3B,iCAAiC,CA2HnC;AA8sBD,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,aAAa,EACrB,GAAG,SAA2B,GAC7B,IAAI,CAqFN;AAkzBD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,0BAA0B,GAAG,SAAS,CAOpG;AA63FD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3C;IACD,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,wBAAwB,EAAE,MAAM,CAAC;IACjC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,CA8BA;AA81ED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BnE"}
@@ -2,7 +2,43 @@ import { type Server } from "node:http";
2
2
  import { type ProposalFreshnessEvaluation } from "@synapsor-runner/mcp-server";
3
3
  import { ProposalStore, type StoredProposal, type WorkerControlAction } from "@synapsor-runner/proposal-store";
4
4
  import { inspectDatabase } from "@synapsor-runner/schema-inspector";
5
+ import { type ExplorationBoundaryDraft } from "./auto-boundary.js";
6
+ import { createScopedExploreRuntime } from "./scoped-explore.js";
7
+ import { type AskProviderDependencies, type AskToolGateway } from "./model-ask.js";
5
8
  type JsonRecord = Record<string, unknown>;
9
+ declare const BOUNDARY_REVIEW_PROGRESS_VERSION = "synapsor.boundary-review-progress.v2";
10
+ export type BoundaryReviewProgress = {
11
+ schema_version: typeof BOUNDARY_REVIEW_PROGRESS_VERSION;
12
+ revision: number;
13
+ draft_digest: `sha256:${string}`;
14
+ candidate: ExplorationBoundaryDraft;
15
+ candidate_digest: `sha256:${string}`;
16
+ confirmed_decisions: string[];
17
+ confirmations: BoundaryReviewConfirmation[];
18
+ invalidated_decisions: BoundaryReviewInvalidation[];
19
+ updated_at: string;
20
+ };
21
+ export type BoundaryReviewDecision = {
22
+ id: string;
23
+ kind: string;
24
+ decision: string;
25
+ input_digest: `sha256:${string}`;
26
+ resource_id?: string;
27
+ };
28
+ type BoundaryReviewConfirmation = BoundaryReviewDecision & {
29
+ status: "confirmed";
30
+ actor: string;
31
+ reason: string;
32
+ confirmed_at: string;
33
+ };
34
+ type BoundaryReviewInvalidation = {
35
+ id: string;
36
+ decision: string;
37
+ previous_input_digest: `sha256:${string}`;
38
+ current_input_digest?: `sha256:${string}`;
39
+ reason: "reviewed_input_changed" | "decision_removed";
40
+ invalidated_at: string;
41
+ };
6
42
  export type LocalUiOptions = {
7
43
  configPath?: string;
8
44
  storePath?: string;
@@ -27,6 +63,10 @@ export type LocalUiOptions = {
27
63
  workerDecision?: WorkbenchWorkerDecision;
28
64
  workerReconciliationInspect?: WorkbenchReconciliationInspect;
29
65
  workerReconciliationResolve?: WorkbenchReconciliationResolve;
66
+ askGatewayFactory?: WorkbenchAskGatewayFactory;
67
+ askProviderDependencies?: AskProviderDependencies;
68
+ instantOnboarding?: boolean;
69
+ scopedExploreRuntimeFactory?: typeof createScopedExploreRuntime;
30
70
  };
31
71
  export type WorkbenchDeploymentProfile = "development" | "staging" | "production" | "unknown";
32
72
  export type WorkbenchLedgerScope = {
@@ -88,6 +128,12 @@ export type WorkbenchReconciliationResolve = (input: {
88
128
  }) => Promise<{
89
129
  code: number;
90
130
  }>;
131
+ export type WorkbenchAskGatewayFactory = (input: {
132
+ configPath: string;
133
+ storePath: string;
134
+ projectRoot: string;
135
+ env: NodeJS.ProcessEnv;
136
+ }) => Promise<AskToolGateway>;
91
137
  export type SafeActionPreview = (input: {
92
138
  projectRoot: string;
93
139
  configPath: string;
@@ -124,5 +170,19 @@ export type LocalUiServer = {
124
170
  close: () => Promise<void>;
125
171
  };
126
172
  export declare function startLocalUiServer(options?: LocalUiOptions): Promise<LocalUiServer>;
173
+ export declare function recommendedWorkbenchCandidate(draft: ExplorationBoundaryDraft, maximumResources?: number): ExplorationBoundaryDraft;
174
+ export declare function instantWorkbenchCandidate(draft: ExplorationBoundaryDraft): ExplorationBoundaryDraft;
175
+ export declare function readBoundaryReviewProgress(projectRoot: string, draft: ExplorationBoundaryDraft): Promise<BoundaryReviewProgress | undefined>;
176
+ export declare function createBoundaryReviewProgress(input: {
177
+ draft: ExplorationBoundaryDraft;
178
+ candidate: ExplorationBoundaryDraft;
179
+ confirmedDecisions: string[];
180
+ previous?: BoundaryReviewProgress;
181
+ actor?: string;
182
+ revision: number;
183
+ now?: string;
184
+ }): BoundaryReviewProgress;
185
+ export declare function saveBoundaryReviewProgress(projectRoot: string, progress: BoundaryReviewProgress): Promise<void>;
186
+ export declare function boundaryReviewDecisions(candidate: ExplorationBoundaryDraft): BoundaryReviewDecision[];
127
187
  export {};
128
188
  //# sourceMappingURL=local-ui.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-ui.d.ts","sourceRoot":"","sources":["../src/local-ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-ui.d.ts","sourceRoot":"","sources":["../src/local-ui.ts"],"names":[],"mappings":"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"}