workspai 0.57.0 → 0.58.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 (118) hide show
  1. package/README.md +2 -0
  2. package/contracts/agent-customization-pack.v1.json +10 -0
  3. package/contracts/cli-runtime-command-inventory.v1.snapshot.json +77 -0
  4. package/contracts/extension-cli-compatibility.v1.json +5 -0
  5. package/contracts/published-contract-catalog.v1.json +25 -0
  6. package/contracts/runtime-command-surface.v1.json +45 -0
  7. package/contracts/workspace-intelligence/goal-agent-handoff.v1.json +96 -0
  8. package/contracts/workspace-intelligence/goal-index.v1.json +45 -0
  9. package/contracts/workspace-intelligence/goal-lifecycle-result.v1.json +96 -0
  10. package/contracts/workspace-intelligence/goal-pack.v1.json +250 -0
  11. package/contracts/workspace-intelligence/goal-plan-result.v1.json +46 -0
  12. package/contracts/workspace-intelligence/workspace-repair-proposal.v1.json +1 -0
  13. package/contracts/workspace-intelligence-architecture.v1.json +20 -0
  14. package/dist/analyze-MAU36FTX.js +1 -0
  15. package/dist/{artifact-remediation-plan-BPLON5VX.js → artifact-remediation-plan-JRX4XZ7C.js} +1 -1
  16. package/dist/autopilot-release-TA2L7SCB.js +1 -0
  17. package/dist/capabilities-command-HE2FICLG.js +1 -0
  18. package/dist/chunk-42Q5E2YV.js +1 -0
  19. package/dist/{workspace-knowledge-graph-snapshot-XSQADCNR.js → chunk-4NN5QWOB.js} +1 -1
  20. package/dist/{chunk-GDKFN3CM.js → chunk-4YICCES6.js} +1 -1
  21. package/dist/{chunk-VL3APTVB.js → chunk-6TNSCVR4.js} +1 -1
  22. package/dist/{chunk-PKIRVQLG.js → chunk-7IRGSM25.js} +1 -1
  23. package/dist/{chunk-NHTLE3WN.js → chunk-7KXRA5ST.js} +1 -1
  24. package/dist/{chunk-Z57G62KE.js → chunk-A3JCETSF.js} +1 -1
  25. package/dist/{chunk-GXTCU4WF.js → chunk-AUCHMXUZ.js} +1 -1
  26. package/dist/{chunk-L36ZASME.js → chunk-C4NYG57I.js} +1 -1
  27. package/dist/{chunk-P475BOJW.js → chunk-CFBAGPB4.js} +1 -1
  28. package/dist/{chunk-GTJY55QK.js → chunk-CHMCKYJJ.js} +1 -1
  29. package/dist/{chunk-SNO3WG4V.js → chunk-EEMRRCGR.js} +1 -1
  30. package/dist/{chunk-75HOCFNH.js → chunk-FXIE2WVG.js} +1 -1
  31. package/dist/{chunk-YJTEMJFV.js → chunk-FY6OHOXR.js} +1 -1
  32. package/dist/{chunk-W5ZFXKSL.js → chunk-G4VMNWSU.js} +1 -1
  33. package/dist/{chunk-ADL3CK44.js → chunk-GRGUPSNP.js} +1 -1
  34. package/dist/{chunk-6OFGLNFS.js → chunk-GVS5OFUB.js} +1 -1
  35. package/dist/{chunk-E53BGUOW.js → chunk-H545P6LN.js} +1 -1
  36. package/dist/chunk-HH54C3XJ.js +1 -0
  37. package/dist/{chunk-XMTLKDPP.js → chunk-HI7ONEFI.js} +1 -1
  38. package/dist/chunk-HYY5PQCV.js +1 -0
  39. package/dist/{chunk-QK5QOXOE.js → chunk-I5PDN2P2.js} +1 -1
  40. package/dist/{chunk-V5EYVQ63.js → chunk-II4ROT6X.js} +1 -1
  41. package/dist/{chunk-GBMCHFOV.js → chunk-LGJAAPNR.js} +1 -1
  42. package/dist/{chunk-UQEQ6CXU.js → chunk-M2BK3XTP.js} +1 -1
  43. package/dist/{chunk-N2BIIUDH.js → chunk-MFJ6ZP7S.js} +1 -1
  44. package/dist/{chunk-64JUYYRC.js → chunk-N3DFX4BY.js} +1 -1
  45. package/dist/chunk-NQ5H4R2I.js +83 -0
  46. package/dist/chunk-PCXBPQO6.js +1 -0
  47. package/dist/chunk-QXW3SLEX.js +1 -0
  48. package/dist/{chunk-IXOLHPTN.js → chunk-RJDGC6AQ.js} +1 -1
  49. package/dist/{chunk-ZPA6ECBJ.js → chunk-RMDVRNU7.js} +1 -1
  50. package/dist/{chunk-TTFQWH55.js → chunk-SM55RK3C.js} +1 -1
  51. package/dist/{chunk-LYVDRRDO.js → chunk-T63WRURN.js} +1 -1
  52. package/dist/{chunk-VUR7H2FU.js → chunk-TMOKXYAQ.js} +1 -1
  53. package/dist/{chunk-DF4NWPB7.js → chunk-TTLVG5AR.js} +1 -1
  54. package/dist/{chunk-QHY6F4SS.js → chunk-VAWV3UKV.js} +1 -1
  55. package/dist/chunk-VIFTO53Y.js +1 -0
  56. package/dist/{chunk-IZLEMTES.js → chunk-WSDVFLHT.js} +1 -1
  57. package/dist/{chunk-IUYZ3NHS.js → chunk-XC26FNRL.js} +3 -3
  58. package/dist/chunk-YMY6EFX4.js +1 -0
  59. package/dist/{chunk-YM77FQB3.js → chunk-YYCPRYP7.js} +1 -1
  60. package/dist/{chunk-RPHM7LQW.js → chunk-ZDYGO3T7.js} +17 -17
  61. package/dist/{create-O2KLTN5H.js → create-QIN56Y4M.js} +1 -1
  62. package/dist/{doctor-AL5YWO5X.js → doctor-RP4Q2CKJ.js} +1 -1
  63. package/dist/goal-command-contract-CHE7U6YY.js +1 -0
  64. package/dist/goal-lifecycle-YTBU3ICP.js +1 -0
  65. package/dist/goal-pack-MYYH7K43.js +1 -0
  66. package/dist/index.d.ts +17 -2
  67. package/dist/index.js +125 -125
  68. package/dist/{pipeline-4ST4BQWY.js → pipeline-77NUVYQD.js} +1 -1
  69. package/dist/{project-intelligence-lens-JHYECYOK.js → project-intelligence-lens-AM2B2PXU.js} +1 -1
  70. package/dist/project-test-coverage-MUSS7Z7V.js +1 -0
  71. package/dist/{verified-goal-KFNRGOKT.js → verified-goal-ZSIZYNVO.js} +1 -1
  72. package/dist/{workspace-O4E5CCGK.js → workspace-LFESVKE7.js} +1 -1
  73. package/dist/{workspace-agent-sync-N5DPGU2E.js → workspace-agent-sync-JMRX6J2Y.js} +1 -1
  74. package/dist/{workspace-archive-BA3ONVXX.js → workspace-archive-MFHCFCDO.js} +1 -1
  75. package/dist/{workspace-context-ETZNEHOJ.js → workspace-context-TBKRMVMT.js} +1 -1
  76. package/dist/{workspace-contract-OSI7NBXS.js → workspace-contract-KKVC2DUQ.js} +1 -1
  77. package/dist/workspace-explain-RGGZL5IW.js +1 -0
  78. package/dist/workspace-explain-contract-4ZZ6CJ44.js +1 -0
  79. package/dist/{workspace-feedback-PCZKXG5R.js → workspace-feedback-O6J3RQML.js} +1 -1
  80. package/dist/{workspace-foundation-QQHX66KE.js → workspace-foundation-JQWT7YGC.js} +1 -1
  81. package/dist/{workspace-graph-stream-UZJQ75XZ.js → workspace-graph-stream-V5WOXP4B.js} +1 -1
  82. package/dist/{workspace-history-CHJOABME.js → workspace-history-TOCRMJUJ.js} +1 -1
  83. package/dist/{workspace-intelligence-A7O7MN6T.js → workspace-intelligence-SDBIRKMK.js} +1 -1
  84. package/dist/{workspace-intelligence-evaluation-YMY3C5AW.js → workspace-intelligence-evaluation-E4UMWDAZ.js} +1 -1
  85. package/dist/{workspace-intelligence-runner-4EF66L66.js → workspace-intelligence-runner-DIMNL6CJ.js} +1 -1
  86. package/dist/{workspace-intelligence-runtime-registry-NCVHKCMP.js → workspace-intelligence-runtime-registry-YGWB2RRS.js} +1 -1
  87. package/dist/{workspace-knowledge-graph-BVN4NTJ6.js → workspace-knowledge-graph-MUW6UAGI.js} +1 -1
  88. package/dist/workspace-knowledge-graph-snapshot-7IU2QAXI.js +1 -0
  89. package/dist/{workspace-mcp-serve-TKX4J3SX.js → workspace-mcp-serve-2SWLIH4I.js} +1 -1
  90. package/dist/{workspace-model-7ESEP366.js → workspace-model-VPFCKTYQ.js} +1 -1
  91. package/dist/{workspace-onboarding-SY255V7L.js → workspace-onboarding-GHI6UTQJ.js} +1 -1
  92. package/dist/{workspace-readme-IVJXSIBS.js → workspace-readme-RASXBZRQ.js} +1 -1
  93. package/dist/{workspace-registry-summary-7ISKYEPM.js → workspace-registry-summary-7QT7YMIU.js} +1 -1
  94. package/dist/workspace-repair-engine-AZTJIFCY.js +3 -0
  95. package/dist/workspace-run-VMZY6LIF.js +1 -0
  96. package/dist/{workspace-verify-CNXZPWS5.js → workspace-verify-RYCQZYYB.js} +1 -1
  97. package/dist/{workspace-watch-HGFL2EU3.js → workspace-watch-U3YGN3GG.js} +1 -1
  98. package/docs/README.md +2 -0
  99. package/docs/ci-workflows.md +1 -1
  100. package/docs/commands-reference.md +12 -0
  101. package/docs/contracts/ARTIFACT_CATALOG.md +11 -0
  102. package/docs/contracts/COMMAND_OWNERSHIP_MATRIX.md +1 -0
  103. package/docs/goal-packs.md +174 -0
  104. package/docs/real-world-qualification.md +22 -3
  105. package/package.json +1 -1
  106. package/dist/analyze-HJ774J3E.js +0 -1
  107. package/dist/autopilot-release-WIFFFQKW.js +0 -1
  108. package/dist/capabilities-command-44JVOE5S.js +0 -1
  109. package/dist/chunk-3U4VLIGW.js +0 -1
  110. package/dist/chunk-5EPPPMAS.js +0 -1
  111. package/dist/chunk-D4RST2HE.js +0 -1
  112. package/dist/chunk-DT4X7I5M.js +0 -81
  113. package/dist/chunk-VZPWIILU.js +0 -1
  114. package/dist/project-test-coverage-FRMVYTFB.js +0 -1
  115. package/dist/workspace-explain-EM7IUV6L.js +0 -1
  116. package/dist/workspace-explain-contract-KVQO57RC.js +0 -1
  117. package/dist/workspace-repair-engine-GMA2YTCF.js +0 -3
  118. package/dist/workspace-run-ZZXVNFUS.js +0 -1
@@ -0,0 +1,250 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://workspai.dev/schemas/workspace-intelligence/goal-pack.v1.json",
4
+ "title": "Workspai Goal Pack",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "id", "fingerprint", "generatedAt", "state", "intent", "workspace", "scope", "sourceBinding", "baseline", "preflight", "successCriteria", "policy", "orchestration", "artifacts", "commands"],
7
+ "properties": {
8
+ "schemaVersion": { "const": "workspai.goal-pack.v1" },
9
+ "id": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{7,95}$" },
10
+ "fingerprint": { "$ref": "#/$defs/hash" },
11
+ "generatedAt": { "type": "string", "format": "date-time" },
12
+ "state": { "enum": ["ready-to-plan", "needs-confirmation", "needs-evidence", "blocked"] },
13
+ "intent": {
14
+ "type": "object",
15
+ "required": ["original", "normalized", "statement", "category", "confidence", "ambiguities"],
16
+ "properties": {
17
+ "original": { "type": "string", "minLength": 1, "maxLength": 2000 },
18
+ "normalized": { "type": "string", "minLength": 1, "maxLength": 2000 },
19
+ "statement": { "type": "string", "minLength": 1, "maxLength": 2000 },
20
+ "category": { "enum": ["release-readiness", "dependency-security", "test-coverage", "defect-repair", "feature-change", "refactor", "performance", "documentation", "system-understanding"] },
21
+ "confidence": { "enum": ["high", "medium", "low"] },
22
+ "ambiguities": { "type": "array", "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
23
+ "requestedTarget": {
24
+ "type": "object",
25
+ "required": ["metric", "operator", "value"],
26
+ "properties": {
27
+ "metric": { "const": "test-coverage-percent" },
28
+ "operator": { "const": "at-least" },
29
+ "value": { "type": "number", "minimum": 0, "maximum": 100 }
30
+ },
31
+ "additionalProperties": false
32
+ }
33
+ },
34
+ "additionalProperties": false
35
+ },
36
+ "workspace": {
37
+ "type": "object",
38
+ "required": ["name"],
39
+ "properties": { "name": { "type": "string", "minLength": 1 } },
40
+ "additionalProperties": false
41
+ },
42
+ "scope": { "$ref": "#/$defs/scope" },
43
+ "sourceBinding": {
44
+ "type": "object",
45
+ "required": ["model", "graph"],
46
+ "properties": {
47
+ "model": { "$ref": "#/$defs/modelBinding" },
48
+ "graph": { "$ref": "#/$defs/graphBinding" }
49
+ },
50
+ "additionalProperties": false
51
+ },
52
+ "baseline": {
53
+ "type": "object",
54
+ "required": ["projectCount", "runtimes", "frameworks", "graph"],
55
+ "properties": {
56
+ "projectCount": { "type": "integer", "minimum": 0 },
57
+ "runtimes": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
58
+ "frameworks": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
59
+ "graph": {
60
+ "type": "object",
61
+ "required": ["entities", "relationships", "proofs", "unresolved", "proofCoveragePercent"],
62
+ "properties": {
63
+ "entities": { "type": "integer", "minimum": 0 },
64
+ "relationships": { "type": "integer", "minimum": 0 },
65
+ "proofs": { "type": "integer", "minimum": 0 },
66
+ "unresolved": { "type": "integer", "minimum": 0 },
67
+ "proofCoveragePercent": { "type": "number", "minimum": 0, "maximum": 100 }
68
+ },
69
+ "additionalProperties": false
70
+ }
71
+ },
72
+ "additionalProperties": false
73
+ },
74
+ "preflight": {
75
+ "type": "object",
76
+ "required": ["workspaceIntelligence", "measurement", "retrieval"],
77
+ "properties": {
78
+ "workspaceIntelligence": {
79
+ "type": "object",
80
+ "required": ["status", "artifact", "blockedStages"],
81
+ "properties": {
82
+ "status": { "enum": ["passed", "blocked", "unknown"] },
83
+ "artifact": { "const": ".workspai/reports/workspace-intelligence-run-last-run.json" },
84
+ "blockedStages": { "type": "array", "items": { "type": "string", "minLength": 1 }, "uniqueItems": true }
85
+ },
86
+ "additionalProperties": false
87
+ },
88
+ "measurement": {
89
+ "type": "object",
90
+ "required": ["status", "runtime", "runner", "existingEvidence", "prerequisites"],
91
+ "properties": {
92
+ "status": { "enum": ["available", "requires-setup", "unsupported", "not-applicable"] },
93
+ "runtime": { "type": ["string", "null"] },
94
+ "runner": { "type": ["string", "null"] },
95
+ "existingEvidence": { "type": "array", "items": { "type": "object", "required": ["project", "path", "sha256"], "properties": { "project": { "type": "string", "minLength": 1 }, "path": { "type": "string", "minLength": 1 }, "sha256": { "$ref": "#/$defs/hash" } }, "additionalProperties": false } },
96
+ "prerequisites": { "type": "array", "items": { "type": "string", "minLength": 1 }, "uniqueItems": true }
97
+ },
98
+ "additionalProperties": false
99
+ },
100
+ "retrieval": { "$ref": "#/$defs/retrieval" }
101
+ },
102
+ "additionalProperties": false
103
+ },
104
+ "successCriteria": {
105
+ "type": "array",
106
+ "minItems": 1,
107
+ "items": {
108
+ "type": "object",
109
+ "required": ["id", "kind", "expected", "producerCommand", "machineVerifiable"],
110
+ "properties": {
111
+ "id": { "type": "string", "minLength": 1 },
112
+ "kind": { "enum": ["workspace-verify", "release-readiness", "dependency-security", "test-coverage"] },
113
+ "expected": { "type": "string", "minLength": 1 },
114
+ "producerCommand": { "type": "string", "minLength": 1 },
115
+ "machineVerifiable": { "type": "boolean" }
116
+ },
117
+ "additionalProperties": false
118
+ }
119
+ },
120
+ "policy": {
121
+ "type": "object",
122
+ "required": ["mutationMode", "approval", "verificationOwner", "rollbackOwner", "maxAttempts", "allowBreakingChanges", "allowForce", "networkAccess", "scopeExpansion"],
123
+ "properties": {
124
+ "mutationMode": { "const": "proposal-only" },
125
+ "approval": { "const": "required-before-mutation" },
126
+ "verificationOwner": { "const": "workspai-cli" },
127
+ "rollbackOwner": { "const": "workspai-cli" },
128
+ "maxAttempts": { "type": "integer", "minimum": 1, "maximum": 25 },
129
+ "allowBreakingChanges": { "const": false },
130
+ "allowForce": { "const": false },
131
+ "networkAccess": { "const": "not-granted" },
132
+ "scopeExpansion": { "const": "requires-decision" }
133
+ },
134
+ "additionalProperties": false
135
+ },
136
+ "orchestration": {
137
+ "type": "array",
138
+ "minItems": 6,
139
+ "maxItems": 6,
140
+ "items": {
141
+ "type": "object",
142
+ "required": ["id", "owner", "status", "summary"],
143
+ "properties": {
144
+ "id": { "enum": ["understand", "impact", "propose", "approve", "execute", "verify"] },
145
+ "owner": { "enum": ["workspai-cli", "agent", "human"] },
146
+ "status": { "enum": ["complete", "pending", "blocked"] },
147
+ "summary": { "type": "string", "minLength": 1 }
148
+ },
149
+ "additionalProperties": false
150
+ }
151
+ },
152
+ "decision": {
153
+ "type": "object",
154
+ "required": ["required", "reason", "question"],
155
+ "properties": {
156
+ "required": { "const": true },
157
+ "reason": { "type": "string", "minLength": 1 },
158
+ "question": { "type": "string", "minLength": 1 }
159
+ },
160
+ "additionalProperties": false
161
+ },
162
+ "artifacts": {
163
+ "type": "object",
164
+ "required": ["goalPack", "agentHandoff", "latestReport"],
165
+ "properties": {
166
+ "goalPack": { "type": "string", "pattern": "^\\.workspai/goals/[^/]+/goal-pack\\.json$" },
167
+ "agentHandoff": { "type": "string", "pattern": "^\\.workspai/goals/[^/]+/agent-handoff\\.json$" },
168
+ "latestReport": { "const": ".workspai/reports/goal-pack-last-run.json" }
169
+ },
170
+ "additionalProperties": false
171
+ },
172
+ "commands": {
173
+ "type": "object",
174
+ "required": ["refreshEvidence", "inspectGraph", "proposeRepair"],
175
+ "properties": {
176
+ "refreshEvidence": { "const": "workspai workspace intelligence run --for-agent generic --strict --json" },
177
+ "inspectGraph": { "type": "string", "pattern": "^workspai workspace graph search " },
178
+ "planVerifiedGoal": { "type": "string", "pattern": "^workspai workspace goal plan " },
179
+ "proposeRepair": { "const": "workspai workspace repair propose --file <proposal.json> --json" }
180
+ },
181
+ "additionalProperties": false
182
+ }
183
+ },
184
+ "$defs": {
185
+ "hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
186
+ "scope": {
187
+ "type": "object",
188
+ "required": ["kind", "projects", "selectionSource"],
189
+ "properties": {
190
+ "kind": { "enum": ["workspace", "project"] },
191
+ "projects": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
192
+ "selectionSource": { "enum": ["workspace", "invocation-project", "explicit"] }
193
+ },
194
+ "additionalProperties": false
195
+ },
196
+ "modelBinding": {
197
+ "type": "object",
198
+ "required": ["artifact", "schemaVersion", "hashAlgorithm", "hashSemantics", "hash", "generatedAt"],
199
+ "properties": {
200
+ "artifact": { "const": ".workspai/reports/workspace-model.json" },
201
+ "schemaVersion": { "const": "workspace-model.v1" },
202
+ "hashAlgorithm": { "const": "sha256" },
203
+ "hashSemantics": { "const": "workspace-model-structural-v1" },
204
+ "hash": { "$ref": "#/$defs/hash" },
205
+ "generatedAt": { "type": "string", "format": "date-time" }
206
+ },
207
+ "additionalProperties": false
208
+ },
209
+ "graphBinding": {
210
+ "type": "object",
211
+ "required": ["artifact", "schemaVersion", "hashAlgorithm", "hashSemantics", "hash", "generatedAt", "modelHash"],
212
+ "properties": {
213
+ "artifact": { "const": ".workspai/reports/workspace-knowledge-graph.json" },
214
+ "schemaVersion": { "const": "workspace-knowledge-graph.v1" },
215
+ "hashAlgorithm": { "const": "sha256" },
216
+ "hashSemantics": { "const": "canonical-json-v1" },
217
+ "hash": { "$ref": "#/$defs/hash" },
218
+ "generatedAt": { "type": "string", "format": "date-time" },
219
+ "modelHash": { "$ref": "#/$defs/hash" }
220
+ },
221
+ "additionalProperties": false
222
+ },
223
+ "retrieval": {
224
+ "type": "object",
225
+ "required": ["status", "strategy", "queries", "anchors"],
226
+ "properties": {
227
+ "status": { "enum": ["grounded", "partial", "empty"] },
228
+ "strategy": { "const": "deterministic-category-v1" },
229
+ "queries": { "type": "array", "minItems": 1, "maxItems": 3, "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
230
+ "anchors": {
231
+ "type": "array",
232
+ "maxItems": 20,
233
+ "items": {
234
+ "type": "object",
235
+ "required": ["entityId", "kind", "label", "proofIds"],
236
+ "properties": {
237
+ "entityId": { "type": "string", "minLength": 1 },
238
+ "kind": { "type": "string", "minLength": 1 },
239
+ "label": { "type": "string", "minLength": 1 },
240
+ "proofIds": { "type": "array", "items": { "type": "string", "minLength": 1 }, "uniqueItems": true }
241
+ },
242
+ "additionalProperties": false
243
+ }
244
+ }
245
+ },
246
+ "additionalProperties": false
247
+ }
248
+ },
249
+ "additionalProperties": false
250
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://workspai.dev/schemas/workspace-intelligence/goal-plan-result.v1.json",
4
+ "title": "Workspai Goal Plan Result",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "result", "resolution", "goalPack", "agentHandoff", "writtenArtifacts", "dryRun", "resumed"],
7
+ "properties": {
8
+ "schemaVersion": { "const": "workspai.goal-plan-result.v1" },
9
+ "result": { "enum": ["planned", "needs-confirmation", "needs-evidence", "blocked"] },
10
+ "resolution": {
11
+ "type": "object",
12
+ "required": ["source", "invocationScope"],
13
+ "properties": {
14
+ "source": { "enum": ["explicit", "parent", "local-link", "registry"] },
15
+ "invocationScope": { "enum": ["workspace", "project"] }
16
+ },
17
+ "additionalProperties": false
18
+ },
19
+ "goalPack": {
20
+ "type": "object",
21
+ "required": ["schemaVersion", "id", "fingerprint"],
22
+ "properties": {
23
+ "schemaVersion": { "const": "workspai.goal-pack.v1" },
24
+ "id": { "type": "string" },
25
+ "fingerprint": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
26
+ }
27
+ },
28
+ "agentHandoff": {
29
+ "type": "object",
30
+ "required": ["schemaVersion", "goalId", "goalFingerprint"],
31
+ "properties": {
32
+ "schemaVersion": { "const": "workspai.goal-agent-handoff.v1" },
33
+ "goalId": { "type": "string" },
34
+ "goalFingerprint": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
35
+ }
36
+ },
37
+ "writtenArtifacts": {
38
+ "type": "array",
39
+ "items": { "type": "string", "pattern": "^\\.workspai/" },
40
+ "uniqueItems": true
41
+ },
42
+ "dryRun": { "type": "boolean" },
43
+ "resumed": { "type": "boolean" }
44
+ },
45
+ "additionalProperties": false
46
+ }
@@ -9,6 +9,7 @@
9
9
  "properties": {
10
10
  "schemaVersion": { "const": "workspai.workspace-repair-proposal.v1" },
11
11
  "cardId": { "type": "string", "minLength": 1, "maxLength": 160 },
12
+ "goalId": { "type": "string", "pattern": "^goal-[A-Za-z0-9._-]{3,90}$" },
12
13
  "blockerSignature": { "type": "string", "minLength": 1, "maxLength": 256 },
13
14
  "targetActionIds": {
14
15
  "type": "array",
@@ -522,6 +522,26 @@
522
522
  "publication": "one locked rollback-capable artifact transaction",
523
523
  "mutationRule": "knowledge graph enrichment never mutates the authorizing model during a run",
524
524
  "staleConsumerRule": "reject a graph whose source binding does not match the current model"
525
+ },
526
+ "goalPlanning": {
527
+ "command": "goal",
528
+ "role": "pre-transaction-planning",
529
+ "canonicalArtifact": ".workspai/goals/<goal-id>/goal-pack.json",
530
+ "latestArtifact": ".workspai/reports/goal-pack-last-run.json",
531
+ "consumerProjection": ".workspai/goals/<goal-id>/agent-handoff.json",
532
+ "discoveryIndex": ".workspai/goals/index.json",
533
+ "mutationMode": "proposal-only",
534
+ "sourceAuthority": "workspace-model-and-derived-knowledge-graph",
535
+ "rules": [
536
+ "Goal planning binds plain-language intent to exact model and graph hashes before agent reasoning.",
537
+ "The portable Goal index is the only active-goal discovery authority for agents and IDE consumers.",
538
+ "Hash bindings declare canonicalization semantics; a Goal identity fingerprint is never mislabeled as an artifact digest.",
539
+ "Capability and retrieval preflight expose missing evidence instead of claiming readiness.",
540
+ "A Goal Pack and its agent handoff are planning/projection artifacts, never mutation or verification authority.",
541
+ "Agents propose bounded source changes; human approval and CLI Repair Engine own mutation admission.",
542
+ "Only fresh CLI evidence can verify completion, and scope expansion requires an explicit decision.",
543
+ "Portable Goal artifacts exclude absolute machine paths, secrets, raw model responses, and unrestricted command output."
544
+ ]
525
545
  }
526
546
  },
527
547
  "consumers": [
@@ -0,0 +1 @@
1
+ export{b as printAnalyzeReport,a as runAnalyze}from'./chunk-YYCPRYP7.js';
@@ -1 +1 @@
1
- export{a as buildArtifactRemediationPlan,b as writeArtifactRemediationPlan}from'./chunk-YJTEMJFV.js';
1
+ export{a as buildArtifactRemediationPlan,b as writeArtifactRemediationPlan}from'./chunk-FY6OHOXR.js';
@@ -0,0 +1 @@
1
+ export{b as AUTOPILOT_RELEASE_ALIAS_FILENAME,a as AUTOPILOT_RELEASE_LAST_RUN_FILENAME,c as runAutopilotRelease}from'./chunk-TTLVG5AR.js';
@@ -0,0 +1 @@
1
+ export{b as runDoctorCapabilities}from'./chunk-RJDGC6AQ.js';
@@ -0,0 +1 @@
1
+ import {h}from'./chunk-HH54C3XJ.js';var _=h.artifactRemediationPlan.schemaVersion;export{_ as a};
@@ -1 +1 @@
1
- import {c,d as d$1}from'./chunk-GDKFN3CM.js';import {d}from'./chunk-ADL3CK44.js';import {e,f as f$1}from'./chunk-5EPPPMAS.js';import A from'fs-extra';function t(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function W(e){let s=t(e);return !!(s&&s.schemaVersion===f$1.model&&t(s.workspace)&&Array.isArray(s.projects)&&(t(s.projectTopology)||t(s.graph)))}function G(e){let s=t(e);return !!(s&&s.schemaVersion===f$1.knowledgeGraph&&t(s.source)&&t(s.workspace)&&Array.isArray(s.entities)&&Array.isArray(s.relations)&&Array.isArray(s.proofs)&&Array.isArray(s.providers)&&t(s.quality))}async function f(e){try{return await A.readJson(e)}catch{return null}}async function I(e$1){let[s,n]=await Promise.all([d(e$1,e.model),d(e$1,e.knowledgeGraph)]);if(!s)return {status:"miss",reason:"missing-model"};if(!n)return {status:"miss",reason:"missing-graph"};let[i,o]=await Promise.all([f(s),f(n)]);if(!W(i))return {status:"miss",reason:"invalid-model"};if(!G(o))return {status:"miss",reason:"invalid-graph"};if(o.proofs.some(r=>r.freshness==="stale"))return {status:"miss",reason:"stale-proof"};try{c(o,i);}catch{return {status:"miss",reason:"source-mismatch"}}let a=o.source.inputs;if(!a)return {status:"miss",reason:"missing-input-fingerprint"};let d$2=a.scopes.filter(r=>r.kind==="workspace"),p=a.scopes.filter(r=>r.kind==="project"),k=i.projects.map(r=>r.name).sort(),w=p.map(r=>r.id).sort(),y=new Set(p.map(r=>r.fileLimit));if(a.schemaVersion!=="workspace-knowledge-graph-inputs.v1"||a.strategy!=="hybrid-git-content-v2"||a.hashAlgorithm!=="sha256"||d$2.length!==1||y.size>1||JSON.stringify(k)!==JSON.stringify(w))return {status:"miss",reason:"invalid-input-fingerprint"};let c$1;try{c$1=await d$1({workspacePath:e$1,projects:i.projects.map(r=>({id:r.name,path:r.path,...r.absolutePath?{absolutePath:r.absolutePath}:{}})),projectFileLimit:p[0]?.fileLimit??2e4,workspaceFileLimit:d$2[0].fileLimit});}catch{return {status:"miss",reason:"input-scan-failed"}}return !c$1||c$1.hash!==a.hash?{status:"miss",reason:"live-input-mismatch"}:{status:"hit",model:i,graph:o,modelPath:s,graphPath:n}}export{I as readWorkspaceKnowledgeGraphSnapshot};
1
+ import {c,d as d$1}from'./chunk-4YICCES6.js';import {d}from'./chunk-GRGUPSNP.js';import {e,f as f$1}from'./chunk-HH54C3XJ.js';import A from'fs-extra';function t(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function W(e){let s=t(e);return !!(s&&s.schemaVersion===f$1.model&&t(s.workspace)&&Array.isArray(s.projects)&&(t(s.projectTopology)||t(s.graph)))}function G(e){let s=t(e);return !!(s&&s.schemaVersion===f$1.knowledgeGraph&&t(s.source)&&t(s.workspace)&&Array.isArray(s.entities)&&Array.isArray(s.relations)&&Array.isArray(s.proofs)&&Array.isArray(s.providers)&&t(s.quality))}async function f(e){try{return await A.readJson(e)}catch{return null}}async function I(e$1){let[s,n]=await Promise.all([d(e$1,e.model),d(e$1,e.knowledgeGraph)]);if(!s)return {status:"miss",reason:"missing-model"};if(!n)return {status:"miss",reason:"missing-graph"};let[i,o]=await Promise.all([f(s),f(n)]);if(!W(i))return {status:"miss",reason:"invalid-model"};if(!G(o))return {status:"miss",reason:"invalid-graph"};if(o.proofs.some(r=>r.freshness==="stale"))return {status:"miss",reason:"stale-proof"};try{c(o,i);}catch{return {status:"miss",reason:"source-mismatch"}}let a=o.source.inputs;if(!a)return {status:"miss",reason:"missing-input-fingerprint"};let d$2=a.scopes.filter(r=>r.kind==="workspace"),p=a.scopes.filter(r=>r.kind==="project"),k=i.projects.map(r=>r.name).sort(),w=p.map(r=>r.id).sort(),y=new Set(p.map(r=>r.fileLimit));if(a.schemaVersion!=="workspace-knowledge-graph-inputs.v1"||a.strategy!=="hybrid-git-content-v2"||a.hashAlgorithm!=="sha256"||d$2.length!==1||y.size>1||JSON.stringify(k)!==JSON.stringify(w))return {status:"miss",reason:"invalid-input-fingerprint"};let c$1;try{c$1=await d$1({workspacePath:e$1,projects:i.projects.map(r=>({id:r.name,path:r.path,...r.absolutePath?{absolutePath:r.absolutePath}:{}})),projectFileLimit:p[0]?.fileLimit??2e4,workspaceFileLimit:d$2[0].fileLimit});}catch{return {status:"miss",reason:"input-scan-failed"}}return !c$1||c$1.hash!==a.hash?{status:"miss",reason:"live-input-mismatch"}:{status:"hit",model:i,graph:o,modelPath:s,graphPath:n}}export{I as a};
@@ -1,4 +1,4 @@
1
- import {a as a$1}from'./chunk-2647BYBC.js';import {l}from'./chunk-GXTCU4WF.js';import {d,c}from'./chunk-EWZZUQBR.js';import {a}from'./chunk-GR6442P7.js';import {f,e,i}from'./chunk-5EPPPMAS.js';import p from'path';import {createHash}from'crypto';import {createReadStream}from'fs';import {execFile}from'child_process';import {promisify}from'util';import S from'fs-extra';import {parseAllDocuments}from'yaml';var pe=f.knowledgeGraph;var Yt=e.knowledgeGraph;function Xt(e$1,t){if(e$1.source.kind!=="workspace-model")throw new Error(`Workspace knowledge graph is not bound to the canonical workspace model (source: ${e$1.source.kind}).`);if(e$1.source.artifact!==e.model)throw new Error(`Workspace knowledge graph source artifact is ${e$1.source.artifact}; expected ${e.model}.`);if(e$1.source.hashAlgorithm!=="sha256")throw new Error(`Workspace knowledge graph source hash algorithm is ${e$1.source.hashAlgorithm}; expected sha256.`);let o=d(t);if(e$1.source.hash!==o)throw new Error("Workspace knowledge graph is stale: its source hash does not match the canonical workspace model.");if(e$1.workspace.name!==t.workspace.name||(e$1.workspace.profile??void 0)!==(t.workspace.profile??void 0))throw new Error("Workspace knowledge graph identity does not match the canonical workspace model.");let i=l(t);if(!i)throw new Error("Canonical workspace model has no project topology for the workspace knowledge graph.");let r=c=>({...c,generatedAt:"<ignored>"});if(c(r(e$1.projectTopology))!==c(r(i)))throw new Error("Workspace knowledge graph project topology does not match the canonical workspace model.")}var De=new Set([".git",".hg",".svn",".workspai",".rapidkit",".venv","venv","vendor","node_modules","dist","build","target","coverage",".next",".turbo",".cache",".vscode-test","graphify-out",".pytest_cache",".mypy_cache",".ruff_cache",".tox",".gradle","fixture","fixtures","__fixtures__","testdata"]),Me=new Set(["test","tests","spec","specs","e2e","integration","integration-tests","integration_tests","__tests__","fixture","fixtures","__fixtures__","testdata"]),ze=new Set(["examples","samples","worked"]);function se(e,t){let o=p.relative(e,t).split(p.sep).map(r=>r.toLowerCase()),i=p.basename(t).toLowerCase();return o.some(r=>Me.has(r))||/(?:\.test|\.spec|_test)\.[a-z0-9]+$/i.test(i)||/^test_.+\.[a-z0-9]+$/i.test(i)||/(?:tests?|specs?)\.(?:cs|fs|vb|java|kt|kts)$/i.test(i)}function ie(e,t){return p.relative(e,t).split(p.sep).map(o=>o.toLowerCase()).some(o=>ze.has(o))}function M(e,t){return se(e,t)||ie(e,t)}function oe(e,t){return p.relative(e,t).split(p.sep).some(o=>o.toLowerCase()==="generated")}var fe=new Set(["package.json","pyproject.toml","requirements.txt","Pipfile","go.mod","Cargo.toml","pom.xml","build.gradle","build.gradle.kts","composer.json","Gemfile","mix.exs","pubspec.yaml","Package.swift","CMakeLists.txt","deno.json","deno.jsonc","project.clj","deps.edn","build.sbt","BUILD","BUILD.bazel","WORKSPACE.bazel"]),Be=new Set(["get","put","post","delete","options","head","patch","trace"]),T=new Set([".c",".cc",".cpp",".cs",".dart",".ex",".exs",".go",".h",".hpp",".java",".js",".jsx",".kt",".kts",".mjs",".php",".py",".r",".rb",".rs",".scala",".svelte",".swift",".ts",".tsx",".vue",".clj",".cljs",".fs",".fsx",".lua",".vb"]);function F(e,t){let o=p.extname(e).toLowerCase();return o===".h"&&t==="cpp"?"cpp":{".c":"c",".cc":"cpp",".cpp":"cpp",".cs":"csharp",".dart":"dart",".ex":"elixir",".exs":"elixir",".go":"go",".h":"c",".hpp":"cpp",".java":"java",".js":"javascript",".jsx":"javascript",".kt":"kotlin",".kts":"kotlin",".mjs":"javascript",".php":"php",".py":"python",".r":"r",".rb":"ruby",".rs":"rust",".scala":"scala",".svelte":"svelte",".swift":"swift",".ts":"typescript",".tsx":"typescript",".vue":"vue",".clj":"clojure",".cljs":"clojure",".fs":"fsharp",".fsx":"fsharp",".lua":"lua",".vb":"visual-basic"}[o]??o.slice(1)}function Ge(e,t){if(e.length<=t)return [...e];let o=new Map;for(let c of e){let s=F(c),a=o.get(s)??[];a.push(c),o.set(s,a);}let i=new Set,r=Math.max(1,Math.min(25,Math.floor(t/Math.max(o.size,1))));for(let c of [...o.values()])for(let s of c.slice(0,r))i.add(s);for(let c of e){if(i.size>=t)break;i.add(c);}return [...i].sort((c,s)=>c.localeCompare(s))}function Q(e,t,o){let i=[],r=e.split(/\r?\n/);for(let c=0;c<r.length&&i.length<o;c+=1)for(let s of t){let n=r[c].match(s.pattern)?.[1]?.trim();if(n){i.push({name:n,line:c+1,detail:s.detail});break}}return i}var xe=[{pattern:/^\s*(?:export\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)/,detail:"function"},{pattern:/^\s*(?:export\s+)?(?:abstract\s+)?(?:class|interface|enum|type)\s+([A-Za-z_$][\w$]*)/,detail:"type"},{pattern:/^\s*(?:export\s+)?(?:declare\s+)?(?:const|let|var)\s+([A-Za-z_$][\w$]*)/,detail:"value"},{pattern:/^\s*(?:async\s+)?def\s+([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*class\s+([A-Za-z_]\w*)/,detail:"type"},{pattern:/^\s*func\s+(?:\([^)]*\)\s*)?([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*type\s+([A-Za-z_]\w*)\s+/,detail:"type"},{pattern:/^\s*(?:public\s+|private\s+|protected\s+|internal\s+|abstract\s+|final\s+)*(?:class|interface|record|enum)\s+([A-Za-z_]\w*)/,detail:"type"},{pattern:/^\s*(?:public|protected|internal)\s+(?:(?:static|virtual|override|abstract|async|sealed|final|synchronized|native|unsafe|partial|extern|new)\s+)*(?:<[^>]+>\s*)?[A-Za-z_$][\w$<>,.?\[\]: ]*\s+([A-Za-z_$][\w$]*)\s*\(/,detail:"method"},{pattern:/^\s*(?:pub(?:\([^)]*\))?\s+)?(?:async\s+)?fn\s+([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*(?:pub(?:\([^)]*\))?\s+)?(?:struct|trait|enum|type)\s+([A-Za-z_]\w*)/,detail:"type"},{pattern:/^\s*(?:public\s+|private\s+|protected\s+)?function\s+([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*(?:class|module|struct|protocol|mixin)\s+([A-Za-z_]\w*)/,detail:"type"}],qe=[{pattern:/^\s*import(?:.+?from\s*)?["']([^"']+)["']/,detail:"import"},{pattern:/require\(["']([^"']+)["']\)/,detail:"require"},{pattern:/^\s*from\s+([A-Za-z0-9_.]+)\s+import\s+/,detail:"import"},{pattern:/^\s*import\s+([A-Za-z0-9_.]+)(?:\s|$)/,detail:"import"},{pattern:/^\s*(?:import|using|use)\s+([A-Za-z0-9_:.*\\/.-]+)/,detail:"import"},{pattern:/^\s*require(?:_relative)?\s+["']([^"']+)["']/,detail:"require"}];function Ze(e,t,o,i){let r=p.extname(e).toLowerCase()===".py",c;if(r){let d=t.match(/^\.+/)?.[0].length??0,l=d>0?p.dirname(e):p.resolve(i??"");for(let u=1;u<d;u+=1)l=p.dirname(l);let m=t.slice(d).replace(/\./g,p.sep);c=m?p.join(l,m):l;}else {if(!t.startsWith("."))return null;c=p.resolve(p.dirname(e),t);}let s=p.extname(c).toLowerCase(),a=T.has(s),n=new Set([c]);if(r&&(n.add(`${c}.py`),n.add(p.join(c,"__init__.py"))),a){let d=c.slice(0,-s.length);if([".js",".jsx",".mjs"].includes(s))for(let l of [".ts",".tsx",".js",".jsx",".mjs"])n.add(`${d}${l}`);}else for(let d of T)n.add(`${c}${d}`),n.add(p.join(c,`index${d}`));return [...n].find(d=>o.has(p.resolve(d)))??null}function He(e,t){let o=t.trimStart(),i=p.extname(e).toLowerCase();return [".py",".rb",".sh",".bash",".zsh"].includes(i)?o.startsWith("#"):[".sql",".lua",".hs"].includes(i)?o.startsWith("--"):o.startsWith("//")||o.startsWith("/*")||o.startsWith("*")}function Ve(e,t){if(p.extname(e).toLowerCase()!==".py")return t;let o=null;return t.split(/\r?\n/).map(i=>{let r=0,c="";for(;r<i.length;){if(o){let l=i.indexOf(o,r);if(l<0)return c;r=l+3,o=null;continue}let s=i.indexOf("'''",r),a=i.indexOf('"""',r),n=i.indexOf("#",r),d=s<0?a:a<0?s:Math.min(s,a);if(n>=0&&(d<0||n<d)){c+=i.slice(r,n);break}if(d<0){c+=i.slice(r);break}c+=i.slice(r,d),o=i.startsWith("'''",d)?"'''":'"""',r=d+3;}return c}).join(`
1
+ import {a as a$1}from'./chunk-2647BYBC.js';import {l}from'./chunk-AUCHMXUZ.js';import {d,c}from'./chunk-EWZZUQBR.js';import {a}from'./chunk-GR6442P7.js';import {f,e,i}from'./chunk-HH54C3XJ.js';import p from'path';import {createHash}from'crypto';import {createReadStream}from'fs';import {execFile}from'child_process';import {promisify}from'util';import S from'fs-extra';import {parseAllDocuments}from'yaml';var pe=f.knowledgeGraph;var Yt=e.knowledgeGraph;function Xt(e$1,t){if(e$1.source.kind!=="workspace-model")throw new Error(`Workspace knowledge graph is not bound to the canonical workspace model (source: ${e$1.source.kind}).`);if(e$1.source.artifact!==e.model)throw new Error(`Workspace knowledge graph source artifact is ${e$1.source.artifact}; expected ${e.model}.`);if(e$1.source.hashAlgorithm!=="sha256")throw new Error(`Workspace knowledge graph source hash algorithm is ${e$1.source.hashAlgorithm}; expected sha256.`);let o=d(t);if(e$1.source.hash!==o)throw new Error("Workspace knowledge graph is stale: its source hash does not match the canonical workspace model.");if(e$1.workspace.name!==t.workspace.name||(e$1.workspace.profile??void 0)!==(t.workspace.profile??void 0))throw new Error("Workspace knowledge graph identity does not match the canonical workspace model.");let i=l(t);if(!i)throw new Error("Canonical workspace model has no project topology for the workspace knowledge graph.");let r=c=>({...c,generatedAt:"<ignored>"});if(c(r(e$1.projectTopology))!==c(r(i)))throw new Error("Workspace knowledge graph project topology does not match the canonical workspace model.")}var De=new Set([".git",".hg",".svn",".workspai",".rapidkit",".venv","venv","vendor","node_modules","dist","build","target","coverage",".next",".turbo",".cache",".vscode-test","graphify-out",".pytest_cache",".mypy_cache",".ruff_cache",".tox",".gradle","fixture","fixtures","__fixtures__","testdata"]),Me=new Set(["test","tests","spec","specs","e2e","integration","integration-tests","integration_tests","__tests__","fixture","fixtures","__fixtures__","testdata"]),ze=new Set(["examples","samples","worked"]);function se(e,t){let o=p.relative(e,t).split(p.sep).map(r=>r.toLowerCase()),i=p.basename(t).toLowerCase();return o.some(r=>Me.has(r))||/(?:\.test|\.spec|_test)\.[a-z0-9]+$/i.test(i)||/^test_.+\.[a-z0-9]+$/i.test(i)||/(?:tests?|specs?)\.(?:cs|fs|vb|java|kt|kts)$/i.test(i)}function ie(e,t){return p.relative(e,t).split(p.sep).map(o=>o.toLowerCase()).some(o=>ze.has(o))}function M(e,t){return se(e,t)||ie(e,t)}function oe(e,t){return p.relative(e,t).split(p.sep).some(o=>o.toLowerCase()==="generated")}var fe=new Set(["package.json","pyproject.toml","requirements.txt","Pipfile","go.mod","Cargo.toml","pom.xml","build.gradle","build.gradle.kts","composer.json","Gemfile","mix.exs","pubspec.yaml","Package.swift","CMakeLists.txt","deno.json","deno.jsonc","project.clj","deps.edn","build.sbt","BUILD","BUILD.bazel","WORKSPACE.bazel"]),Be=new Set(["get","put","post","delete","options","head","patch","trace"]),T=new Set([".c",".cc",".cpp",".cs",".dart",".ex",".exs",".go",".h",".hpp",".java",".js",".jsx",".kt",".kts",".mjs",".php",".py",".r",".rb",".rs",".scala",".svelte",".swift",".ts",".tsx",".vue",".clj",".cljs",".fs",".fsx",".lua",".vb"]);function F(e,t){let o=p.extname(e).toLowerCase();return o===".h"&&t==="cpp"?"cpp":{".c":"c",".cc":"cpp",".cpp":"cpp",".cs":"csharp",".dart":"dart",".ex":"elixir",".exs":"elixir",".go":"go",".h":"c",".hpp":"cpp",".java":"java",".js":"javascript",".jsx":"javascript",".kt":"kotlin",".kts":"kotlin",".mjs":"javascript",".php":"php",".py":"python",".r":"r",".rb":"ruby",".rs":"rust",".scala":"scala",".svelte":"svelte",".swift":"swift",".ts":"typescript",".tsx":"typescript",".vue":"vue",".clj":"clojure",".cljs":"clojure",".fs":"fsharp",".fsx":"fsharp",".lua":"lua",".vb":"visual-basic"}[o]??o.slice(1)}function Ge(e,t){if(e.length<=t)return [...e];let o=new Map;for(let c of e){let s=F(c),a=o.get(s)??[];a.push(c),o.set(s,a);}let i=new Set,r=Math.max(1,Math.min(25,Math.floor(t/Math.max(o.size,1))));for(let c of [...o.values()])for(let s of c.slice(0,r))i.add(s);for(let c of e){if(i.size>=t)break;i.add(c);}return [...i].sort((c,s)=>c.localeCompare(s))}function Q(e,t,o){let i=[],r=e.split(/\r?\n/);for(let c=0;c<r.length&&i.length<o;c+=1)for(let s of t){let n=r[c].match(s.pattern)?.[1]?.trim();if(n){i.push({name:n,line:c+1,detail:s.detail});break}}return i}var xe=[{pattern:/^\s*(?:export\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)/,detail:"function"},{pattern:/^\s*(?:export\s+)?(?:abstract\s+)?(?:class|interface|enum|type)\s+([A-Za-z_$][\w$]*)/,detail:"type"},{pattern:/^\s*(?:export\s+)?(?:declare\s+)?(?:const|let|var)\s+([A-Za-z_$][\w$]*)/,detail:"value"},{pattern:/^\s*(?:async\s+)?def\s+([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*class\s+([A-Za-z_]\w*)/,detail:"type"},{pattern:/^\s*func\s+(?:\([^)]*\)\s*)?([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*type\s+([A-Za-z_]\w*)\s+/,detail:"type"},{pattern:/^\s*(?:public\s+|private\s+|protected\s+|internal\s+|abstract\s+|final\s+)*(?:class|interface|record|enum)\s+([A-Za-z_]\w*)/,detail:"type"},{pattern:/^\s*(?:public|protected|internal)\s+(?:(?:static|virtual|override|abstract|async|sealed|final|synchronized|native|unsafe|partial|extern|new)\s+)*(?:<[^>]+>\s*)?[A-Za-z_$][\w$<>,.?\[\]: ]*\s+([A-Za-z_$][\w$]*)\s*\(/,detail:"method"},{pattern:/^\s*(?:pub(?:\([^)]*\))?\s+)?(?:async\s+)?fn\s+([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*(?:pub(?:\([^)]*\))?\s+)?(?:struct|trait|enum|type)\s+([A-Za-z_]\w*)/,detail:"type"},{pattern:/^\s*(?:public\s+|private\s+|protected\s+)?function\s+([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*(?:class|module|struct|protocol|mixin)\s+([A-Za-z_]\w*)/,detail:"type"}],qe=[{pattern:/^\s*import(?:.+?from\s*)?["']([^"']+)["']/,detail:"import"},{pattern:/require\(["']([^"']+)["']\)/,detail:"require"},{pattern:/^\s*from\s+([A-Za-z0-9_.]+)\s+import\s+/,detail:"import"},{pattern:/^\s*import\s+([A-Za-z0-9_.]+)(?:\s|$)/,detail:"import"},{pattern:/^\s*(?:import|using|use)\s+([A-Za-z0-9_:.*\\/.-]+)/,detail:"import"},{pattern:/^\s*require(?:_relative)?\s+["']([^"']+)["']/,detail:"require"}];function Ze(e,t,o,i){let r=p.extname(e).toLowerCase()===".py",c;if(r){let d=t.match(/^\.+/)?.[0].length??0,l=d>0?p.dirname(e):p.resolve(i??"");for(let u=1;u<d;u+=1)l=p.dirname(l);let m=t.slice(d).replace(/\./g,p.sep);c=m?p.join(l,m):l;}else {if(!t.startsWith("."))return null;c=p.resolve(p.dirname(e),t);}let s=p.extname(c).toLowerCase(),a=T.has(s),n=new Set([c]);if(r&&(n.add(`${c}.py`),n.add(p.join(c,"__init__.py"))),a){let d=c.slice(0,-s.length);if([".js",".jsx",".mjs"].includes(s))for(let l of [".ts",".tsx",".js",".jsx",".mjs"])n.add(`${d}${l}`);}else for(let d of T)n.add(`${c}${d}`),n.add(p.join(c,`index${d}`));return [...n].find(d=>o.has(p.resolve(d)))??null}function He(e,t){let o=t.trimStart(),i=p.extname(e).toLowerCase();return [".py",".rb",".sh",".bash",".zsh"].includes(i)?o.startsWith("#"):[".sql",".lua",".hs"].includes(i)?o.startsWith("--"):o.startsWith("//")||o.startsWith("/*")||o.startsWith("*")}function Ve(e,t){if(p.extname(e).toLowerCase()!==".py")return t;let o=null;return t.split(/\r?\n/).map(i=>{let r=0,c="";for(;r<i.length;){if(o){let l=i.indexOf(o,r);if(l<0)return c;r=l+3,o=null;continue}let s=i.indexOf("'''",r),a=i.indexOf('"""',r),n=i.indexOf("#",r),d=s<0?a:a<0?s:Math.min(s,a);if(n>=0&&(d<0||n<d)){c+=i.slice(r,n);break}if(d<0){c+=i.slice(r);break}c+=i.slice(r,d),o=i.startsWith("'''",d)?"'''":'"""',r=d+3;}return c}).join(`
2
2
  `)}function Je(e,t){if(![".js",".jsx",".mjs",".ts",".tsx"].includes(p.extname(e).toLowerCase()))return t;let o=false,i=false;return t.split(/\r?\n/).map(r=>{let c="",s=null,a=false;for(let n=0;n<r.length;n+=1){let d=r[n],l=r[n+1];if(o){c+=" ",d==="*"&&l==="/"&&(c+=" ",n+=1,o=false);continue}if(i){c+=" ",d==="`"&&!a&&(i=false),a=d==="\\"&&!a,d!=="\\"&&(a=false);continue}if(s){c+=d,d===s&&!a&&(s=null),a=d==="\\"&&!a,d!=="\\"&&(a=false);continue}if(d==="/"&&l==="/")return c.padEnd(r.length," ");if(d==="/"&&l==="*"){c+=" ",n+=1,o=true;continue}if(d==="`"){c+=" ",i=true,a=false;continue}(d==="'"||d==='"')&&(s=d),c+=d;}return c}).join(`
3
3
  `)}function Ue(e,t){return Je(e,Ve(e,t))}var Ye=[{pattern:/@(?:Get|Post|Put|Delete|Patch|Options|Head)\s*\(\s*["']([^"']*)["']/i,detail:"decorated route"},{pattern:/\b(?:app|router|server|api|route|fastify|fiber)\.(?:get|post|put|delete|patch|options|head)\s*\(\s*["']([^"']+)["']/i,detail:"router route"},{pattern:/@(?:GetMapping|PostMapping|PutMapping|DeleteMapping|PatchMapping|RequestMapping)\s*\([^"']*["']([^"']*)["']/,detail:"mapped route"},{pattern:/\[Http(?:Get|Post|Put|Delete|Patch)\s*\(\s*["']([^"']*)["']/i,detail:"HTTP route"},{pattern:/^\s*(?:get|post|put|delete|patch)\s+["']([^"']+)["']/i,detail:"HTTP route"}];function V(e){return createHash("sha256").update(e).digest("hex")}function E(e,t){return `wkg:${e}:${V(`${e}\0${t}`).slice(0,20)}`}function O(e){return e.replace(/\\/g,"/")}function x(e){let t=O(e).replace(/^\.\//,"");return !t||t.startsWith("/")||/^[A-Za-z]:\//.test(t)||t.split("/").includes("..")?"unknown":t}function j(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function b(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function K(e){if(Array.isArray(e))return e.filter(o=>typeof o=="string").map(o=>o.trim()).filter(Boolean).sort();let t=j(e);return t?Object.keys(t).map(o=>o.trim()).filter(Boolean).sort():[]}function Xe(e){if(Array.isArray(e))return e.map(o=>typeof o=="string"?o.split("=",1)[0]?.trim():"").filter(o=>!!o).sort();let t=j(e);return t?Object.keys(t).sort():[]}function Qe(e){return Object.fromEntries(Object.entries(e).filter(t=>t[1]!==void 0).sort(([t],[o])=>t.localeCompare(o)))}async function q(e,t){let o=[],i=[e],r=0;for(;r<i.length&&o.length<t;){let c=i[r++],s;try{s=await S.readdir(c,{withFileTypes:true});}catch{continue}s.sort((a,n)=>a.name.localeCompare(n.name));for(let a$1 of s){if(o.length>=t)break;if(a$1.isSymbolicLink())continue;let n=p.join(c,a$1.name);a$1.isDirectory()?!De.has(a$1.name)&&!a(a$1.name)&&i.push(n):a$1.isFile()&&o.push(n);}}return o.sort((c,s)=>c.localeCompare(s))}async function Se(e){return new Promise(t=>{let o=createHash("sha256"),i=createReadStream(e);i.on("data",r=>o.update(r)),i.on("error",r=>{t(`unreadable:${r.code??"unknown"}`);}),i.on("end",()=>t(o.digest("hex")));})}var et=promisify(execFile);async function D(e,t){let o=await et("git",t,{cwd:e,encoding:"buffer",maxBuffer:268435456,windowsHide:true});return Buffer.isBuffer(o.stdout)?o.stdout:Buffer.from(o.stdout)}async function tt(e){try{let t=(await D(e.root,["rev-parse","--show-prefix"])).toString("utf8").trim().replace(/\\/gu,"/"),o=t?`${t.replace(/^\/+|\/+$/gu,"")}/`:"";if(p.posix.isAbsolute(o)||o==="../"||o.startsWith("../")||o.includes("/../"))return null;let i=o.replace(/\/$/u,""),r=i?`HEAD:${i}`:"HEAD^{tree}",[c,s,a,n,d,l]=await Promise.all([D(e.root,["rev-parse",r]),D(e.root,["diff","--no-ext-diff","--no-textconv","--binary","HEAD","--","."]),D(e.root,["ls-files","--full-name","--others","--exclude-standard","-z","--","."]),D(e.root,["ls-files","--full-name","--others","--ignored","--exclude-standard","-z","--","."]),D(e.root,["ls-files","-v","--","."]),D(e.root,["ls-files","--full-name","-s","--","."])]);if(d.toString("utf8").split(/\r?\n/u).some(f=>/^[a-z] /u.test(f)))return null;let m=e.files.map(f=>{let y=O(p.relative(e.root,f));return `${o}${y}`});if(l.toString("utf8").split(/\r?\n/u).filter(f=>f.startsWith("160000 ")).map(f=>f.split(" ",2)[1]).filter(f=>!!f).map(f=>f.replace(/\\/gu,"/").replace(/\/$/u,"")).some(f=>m.some(y=>y.startsWith(`${f}/`))))return null;let v=new Set(m),g=Buffer.concat([a,n]).toString("utf8").split("\0").filter(Boolean).map(f=>f.replace(/\\/gu,"/")).filter(f=>v.has(f)),w=await Ae([...new Set(g)].sort((f,y)=>f.localeCompare(y)),16,async f=>{let y=o?f.slice(o.length):f;return {path:y,hash:await Se(p.resolve(e.root,...y.split("/").filter(Boolean)))}}),P=createHash("sha256");P.update(`git-worktree-v2\0${e.kind}\0${e.id}\0${e.fileLimit}\0`),P.update(c),P.update(createHash("sha256").update(s).digest());for(let f of w)P.update(`${f.path}\0${f.hash}\0`);return {kind:e.kind,id:e.id,strategy:"git-worktree-v2",hash:P.digest("hex"),fileCount:e.files.length,fileLimit:e.fileLimit,truncated:e.files.length>=e.fileLimit}}catch{return null}}async function Ae(e,t,o){let i=new Array(e.length),r=0,c=Array.from({length:Math.min(t,Math.max(e.length,1))},async()=>{for(;r<e.length;){let s=r++;i[s]=await o(e[s]);}});return await Promise.all(c),i}async function ue(e){let t=await tt(e);if(t)return t;let o=await Ae(e.files,16,async r=>({path:O(p.relative(e.root,r)),hash:await Se(r)}));o.sort((r,c)=>r.path.localeCompare(c.path));let i=createHash("sha256");i.update(`content-merkle-v1\0${e.kind}\0${e.id}\0${e.fileLimit}\0`);for(let r of o)i.update(`${r.path}\0${r.hash}\0`);return {kind:e.kind,id:e.id,strategy:"content-merkle-v1",hash:i.digest("hex"),fileCount:o.length,fileLimit:e.fileLimit,truncated:o.length>=e.fileLimit}}async function ot(e){let t=p.resolve(e.workspacePath),o=[...e.projects].sort((s,a)=>s.id.localeCompare(a.id)),i=e.inventories?.workspaceFiles??await q(t,e.workspaceFileLimit),r=await Promise.all([ue({kind:"workspace",id:"workspace",root:t,files:i,fileLimit:e.workspaceFileLimit}),...o.map(async s=>{let a=s.absolutePath?p.resolve(s.absolutePath):p.resolve(t,s.path),n=e.inventories?.projectFiles?.get(s.id)??await q(a,e.projectFileLimit);return ue({kind:"project",id:s.id,root:a,files:n,fileLimit:e.projectFileLimit})})]);r.sort((s,a)=>s.kind.localeCompare(a.kind)||s.id.localeCompare(a.id));let c=createHash("sha256");c.update("workspace-knowledge-graph-inputs.v1\0hybrid-git-content-v2\0");for(let s of r)c.update(`${s.kind}\0${s.id}\0${s.hash}\0${s.fileCount}\0${s.fileLimit}\0${s.truncated}\0`);return {schemaVersion:"workspace-knowledge-graph-inputs.v1",strategy:"hybrid-git-content-v2",hashAlgorithm:"sha256",hash:c.digest("hex"),scopes:r}}async function B(e){let t=await S.readFile(e,"utf8");if(e.toLowerCase().endsWith(".json")){let o=JSON.parse(t),i=j(o);return i?[i]:[]}return parseAllDocuments(t,{logLevel:"silent"}).map(o=>j(o.toJSON())).filter(o=>o!==null)}function J(e){return [...new Set([...e.workspaceFiles,...e.projects.flatMap(t=>e.filesByProject.get(t.id)??[])])].sort((t,o)=>t.localeCompare(o))}function me(e){return /^(?:openapi|swagger)(?:\.[^.]+)?\.(?:json|ya?ml)$/i.test(p.basename(e))}function ge(e){let t=p.basename(e).toLowerCase();return /\.(?:graphql|gql|proto)$/.test(t)||/^asyncapi(?:\.[^.]+)?\.(?:json|ya?ml)$/.test(t)}function he(e){let t=p.basename(e);return /^Dockerfile(?:\..+)?$/i.test(t)||/\.tf$/i.test(t)||t==="Chart.yaml"}function ye(e){return /(?:^|[\\/])(?:README|ARCHITECTURE|CONTRIBUTING|SECURITY)\.md$/i.test(e)}function rt(e,t){let o=O(p.relative(e,t));return /^\.github\/workflows\/.+\.ya?ml$/i.test(o)||/^(?:\.gitlab-ci\.ya?ml|azure-pipelines\.ya?ml|Jenkinsfile|bitbucket-pipelines\.ya?ml|\.woodpecker\.ya?ml)$/i.test(o)||/^\.circleci\/config\.ya?ml$/i.test(o)}function ve(e,t){let o=O(p.relative(e,t));return /(?:^|\/)(?:adr|adrs|decisions)(?:\/).+\.md$/i.test(o)||/(?:^|\/)ADR[-_0-9].+\.md$/i.test(o)}async function ke(e){let t=new Set;for(let o of [e.workspacePath,...e.projects.map(i=>i.root)])for(let i of ["compose.yml","compose.yaml","docker-compose.yml","docker-compose.yaml"]){let r=p.join(o,i);await S.pathExists(r)&&t.add(r);}return [...t].sort((o,i)=>o.localeCompare(i))}async function be(e){let o=[e.workspacePath,...e.projects.map(r=>r.root)].flatMap(r=>[p.join(r,"CODEOWNERS"),p.join(r,".github","CODEOWNERS"),p.join(r,"docs","CODEOWNERS")]),i=await Promise.all(o.map(async r=>await S.pathExists(r)?r:null));return [...new Set(i.filter(r=>!!r))].sort((r,c)=>r.localeCompare(c))}function we(e){let t=[{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(o=>({root:o.root,files:e.filesByProject.get(o.id)??[]}))];return [...new Set(t.flatMap(o=>o.files.filter(i=>rt(o.root,i))))].sort((o,i)=>o.localeCompare(i))}async function Pe(e){let t=[];for(let o of J(e))if(/\.ya?ml$/i.test(o))try{(await B(o)).some(r=>{let c=j(r.metadata);return !!(b(r.apiVersion)&&b(r.kind)&&b(c?.name))})&&t.push(o);}catch{}return t.sort((o,i)=>o.localeCompare(i))}function N(e,t){let o=p.resolve(t);return e.filter(i=>o===i.root||o.startsWith(`${i.root}${p.sep}`)).sort((i,r)=>r.root.length-i.root.length)[0]??null}var re=class{constructor(t,o,i){this.workspacePath=t;this.now=o;this.workspaceName=i;}workspacePath;now;workspaceName;entities=new Map;relations=new Map;proofs=new Map;providers=[];diagnostics=[];contentHashes=new Map;attributeConflicts=new Set;emptyLabelDiagnostics=new Set;artifactPath(t,o){if(o){let i=O(p.relative(o.root,t));return x(p.posix.join(o.artifactPrefix,i))}return x(p.relative(this.workspacePath,t))}async addProof(t){let o;if(t.absolutePath){if(!this.contentHashes.has(t.absolutePath))try{this.contentHashes.set(t.absolutePath,V(await S.readFile(t.absolutePath)));}catch{this.contentHashes.set(t.absolutePath,null);}o=this.contentHashes.get(t.absolutePath)??void 0;}let i=x(t.artifact),r=E("proof",[t.provider,i,t.pointer??"",t.line??"",t.detail??""].join("\0"));return this.proofs.has(r)||this.proofs.set(r,{id:r,provider:t.provider,artifact:i,...t.pointer?{pointer:t.pointer}:{},...t.line?{line:t.line}:{},...t.column?{column:t.column}:{},...o?{contentHash:o}:{},observedAt:this.now.toISOString(),derivation:t.derivation??"extracted",trust:t.trust??"observed",confidence:t.confidence??"high",freshness:"fresh",...t.detail?{detail:t.detail}:{}}),r}addEntity(t){let o=E(t.kind,t.key),i=Qe(t.attributes??{}),r=this.entities.get(o),c=t.label.trim(),s=c||r?.label||t.key.trim()||t.kind;!c&&!this.emptyLabelDiagnostics.has(o)&&(this.emptyLabelDiagnostics.add(o),this.diagnostics.push({code:"graph.knowledge.empty_label_normalized",severity:"warning",message:`An empty ${t.kind} label was normalized to ${s}.`,entityIds:[o],recommendation:"Inspect the provider proof and preserve a non-empty source identifier before publishing the entity."}));let a={...r?.attributes??{}};for(let[l,m]of Object.entries(i)){if(l in a&&JSON.stringify(a[l])!==JSON.stringify(m)){let u=`${o}\0${l}`;this.attributeConflicts.has(u)||(this.attributeConflicts.add(u),this.diagnostics.push({code:"graph.knowledge.attribute_conflict",severity:"warning",message:`Conflicting ${l} values were observed for ${t.kind} ${s}.`,entityIds:[o],recommendation:"Inspect the entity proof paths and make the authoritative source explicit."}));continue}a[l]=m;}let n=[...new Set([...r?.identity.aliases??[],...t.aliases??[]].map(l=>l.trim()).filter(Boolean))].sort(),d=[...new Set([...r?.proofIds??[],...t.proofIds??[]])].sort();return this.entities.set(o,{id:o,kind:t.kind,label:s,...t.projectId?{projectId:t.projectId}:{},identity:{key:t.key,scope:t.projectId?"project":"workspace",aliases:n,fingerprint:V(JSON.stringify({kind:t.kind,key:t.key,attributes:a}))},attributes:a,proofIds:d}),o}addRelation(t){let o=E("relation",`${t.from}\0${t.kind}\0${t.to}`),i=this.relations.get(o),r=[...new Set([...i?.proofIds??[],...t.proofIds])].sort(),c=new Set(r.map(n=>this.proofs.get(n)?.provider).filter(Boolean)).size,s=t.trust??i?.trust??"observed",a=c>=2&&s!=="ambiguous"?"corroborated":s;return this.relations.set(o,{id:o,from:t.from,to:t.to,kind:t.kind,derivation:t.derivation??i?.derivation??"extracted",trust:a,confidence:a==="corroborated"?"high":t.confidence??i?.confidence??"high",proofIds:r}),o}};function ee(e){let t=[],o=null;for(let i of e.split(/\r?\n/)){let r=i.match(/^\s*\[\[([^\]]+)\]\]\s*(?:#.*)?$/)?.[1]?.trim()??i.match(/^\s*\[([^\]]+)\]\s*(?:#.*)?$/)?.[1]?.trim();if(r){o&&t.push({name:o.name,body:o.lines.join(`
4
4
  `)}),o={name:r,lines:[]};continue}o?.lines.push(i);}return o&&t.push({name:o.name,body:o.lines.join(`
@@ -1 +1 @@
1
- import e from'path';import N from'fs-extra';import F from'chalk';async function K(n,o={}){let t=e.resolve(n),{WORKSPACE_CONTRACT_PATH:i,syncWorkspaceContract:c,verifyWorkspaceContract:m,writeWorkspaceContractVerifyEvidence:k}=await import('./workspace-contract-OSI7NBXS.js'),p=await c({workspacePath:t,strict:true}),{syncWorkspaceReadme:f,WORKSPACE_README_PATH:d}=await import('./workspace-readme-IVJXSIBS.js'),h=await f({workspacePath:t,workspaceName:p.contract.workspace.name,profile:p.contract.workspace.profile??"minimal",projectCount:p.contract.projects.length}),{buildWorkspaceModel:u,writeWorkspaceModel:g}=await import('./workspace-model-7ESEP366.js'),a=await u({workspacePath:t,includeEvidence:true}),P=await g(a,t),{buildWorkspaceImpact:W,buildWorkspaceModelSnapshot:C,diffWorkspaceModel:y,writeWorkspaceImpact:A,writeWorkspaceModelDiff:j,writeWorkspaceModelSnapshot:E}=await import('./workspace-intelligence-A7O7MN6T.js'),{WORKSPACE_INTELLIGENCE_ARTIFACTS:s}=await import('./workspace-intelligence-runtime-registry-NCVHKCMP.js'),R=e.join(t,s.snapshot),l=false;if(!await N.pathExists(R)){let r=await C({workspacePath:t,model:a});await E(r,t),l=true;}let S=await y({workspacePath:t,fromPath:s.snapshot,model:a}),b=await j(S,t),v=await W({workspacePath:t,fromPath:s.diff}),O=await A(v,t),T=await m({workspacePath:t,strict:true}),_=await k({workspacePath:t,result:T}),{syncWorkspaceAgentGrounding:M}=await import('./workspace-agent-sync-N5DPGU2E.js'),w=await M({workspacePath:t,model:a,write:true,refreshContext:true,strict:false,preset:"enterprise",targets:["all"],projectGrounding:o.projectGrounding??"managed"}),x=[i,(await import('./workspace-registry-summary-7ISKYEPM.js')).WORKSPACE_REGISTRY_SUMMARY_RELATIVE_PATH,e.relative(t,h).split(e.sep).join("/")||d,e.relative(t,P).split(e.sep).join("/"),s.knowledgeGraph,...l?[s.snapshot]:[],e.relative(t,b).split(e.sep).join("/"),e.relative(t,O).split(e.sep).join("/"),e.relative(t,_).split(e.sep).join("/"),...w.writtenFiles].filter((r,I,G)=>G.indexOf(r)===I);return o.silent||console.log(F.gray(`\u2713 Workspace Intelligence synced \xB7 ${a.summary.projectCount} project(s) \xB7 model + graph + agent grounding`)),{workspacePath:t,projectCount:a.summary.projectCount,baselineCreated:l,writtenFiles:x,warnings:w.projectLenses?.skipped.map(r=>`${r.name}: ${r.reason}`)??[]}}async function D(n,o={}){let t=e.resolve(n),i=o.workspaceName??e.basename(t),{registerWorkspaceStrict:c}=await import('./workspace-O4E5CCGK.js');return await c(t,i),K(t,{silent:o.silent})}export{K as a,D as b};
1
+ import e from'path';import N from'fs-extra';import F from'chalk';async function K(n,o={}){let t=e.resolve(n),{WORKSPACE_CONTRACT_PATH:i,syncWorkspaceContract:c,verifyWorkspaceContract:m,writeWorkspaceContractVerifyEvidence:k}=await import('./workspace-contract-KKVC2DUQ.js'),p=await c({workspacePath:t,strict:true}),{syncWorkspaceReadme:f,WORKSPACE_README_PATH:d}=await import('./workspace-readme-RASXBZRQ.js'),h=await f({workspacePath:t,workspaceName:p.contract.workspace.name,profile:p.contract.workspace.profile??"minimal",projectCount:p.contract.projects.length}),{buildWorkspaceModel:u,writeWorkspaceModel:g}=await import('./workspace-model-VPFCKTYQ.js'),a=await u({workspacePath:t,includeEvidence:true}),P=await g(a,t),{buildWorkspaceImpact:W,buildWorkspaceModelSnapshot:C,diffWorkspaceModel:y,writeWorkspaceImpact:A,writeWorkspaceModelDiff:j,writeWorkspaceModelSnapshot:E}=await import('./workspace-intelligence-SDBIRKMK.js'),{WORKSPACE_INTELLIGENCE_ARTIFACTS:s}=await import('./workspace-intelligence-runtime-registry-YGWB2RRS.js'),R=e.join(t,s.snapshot),l=false;if(!await N.pathExists(R)){let r=await C({workspacePath:t,model:a});await E(r,t),l=true;}let S=await y({workspacePath:t,fromPath:s.snapshot,model:a}),b=await j(S,t),v=await W({workspacePath:t,fromPath:s.diff}),O=await A(v,t),T=await m({workspacePath:t,strict:true}),_=await k({workspacePath:t,result:T}),{syncWorkspaceAgentGrounding:M}=await import('./workspace-agent-sync-JMRX6J2Y.js'),w=await M({workspacePath:t,model:a,write:true,refreshContext:true,strict:false,preset:"enterprise",targets:["all"],projectGrounding:o.projectGrounding??"managed"}),x=[i,(await import('./workspace-registry-summary-7QT7YMIU.js')).WORKSPACE_REGISTRY_SUMMARY_RELATIVE_PATH,e.relative(t,h).split(e.sep).join("/")||d,e.relative(t,P).split(e.sep).join("/"),s.knowledgeGraph,...l?[s.snapshot]:[],e.relative(t,b).split(e.sep).join("/"),e.relative(t,O).split(e.sep).join("/"),e.relative(t,_).split(e.sep).join("/"),...w.writtenFiles].filter((r,I,G)=>G.indexOf(r)===I);return o.silent||console.log(F.gray(`\u2713 Workspace Intelligence synced \xB7 ${a.summary.projectCount} project(s) \xB7 model + graph + agent grounding`)),{workspacePath:t,projectCount:a.summary.projectCount,baselineCreated:l,writtenFiles:x,warnings:w.projectLenses?.skipped.map(r=>`${r.name}: ${r.reason}`)??[]}}async function D(n,o={}){let t=e.resolve(n),i=o.workspaceName??e.basename(t),{registerWorkspaceStrict:c}=await import('./workspace-LFESVKE7.js');return await c(t,i),K(t,{silent:o.silent})}export{K as a,D as b};
@@ -1 +1 @@
1
- import {a as a$1}from'./chunk-FPJNWPKU.js';import {f,e as e$1,g as g$1,i}from'./chunk-5EPPPMAS.js';var v="workspai.studio-card-repair-capabilities.v1",k="npx workspai workspace verify --json",r=e$1,a=i;function e(f,n,c,o={}){return {cardId:f,scope:o.scope??"workspace",producerCommand:n,producerArtifact:c,verifyCommand:n,verifyArtifact:c,aggregateVerifyCommand:k,targetClosure:"exact-producer-and-causal-action-set",workspacePosture:"reported-separately",repairPolicy:o.repairPolicy??"refresh-producer",remediationArtifacts:o.remediationArtifacts??[]}}var b=[e("doctor","npx workspai doctor workspace --json",r.doctor,{repairPolicy:"diagnose-and-repair",remediationArtifacts:[a.doctorRemediationPlan,a.artifactRemediationPlan]}),e("projectDoctor","npx workspai doctor project --json",a.doctorProject,{scope:"project",repairPolicy:"diagnose-and-repair",remediationArtifacts:[a.doctorRemediationPlan,a.artifactRemediationPlan]}),e("pipeline","npx workspai pipeline --json --strict",a.pipelineLastRun,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("analyze","npx workspai analyze --json",r.analyze,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("readiness","npx workspai readiness --json",r.readiness,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("bootstrap","npx workspai bootstrap --ci --json",a.bootstrapCompliance,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("workspaceSync","npx workspai workspace sync --json",a.workspaceRegistry),e("foundation","npx workspai workspace foundation ensure --json",".workspai/workspace.json"),e("contract","npx workspai workspace contract verify --strict --json",r.contractVerify,{repairPolicy:"source-repair-then-produce"}),e("autopilot","npx workspai autopilot release --json",a.autopilotReleaseLastRun,{repairPolicy:"source-repair-then-produce"}),e("workspaceRun","npx workspai workspace run test --json",a.workspaceRunLast,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("setup","npx workspai setup --json",".workspai/toolchain.lock",{repairPolicy:"source-repair-then-produce"}),e("importReadiness","npx workspai doctor project --json",a.doctorProject,{scope:"project",repairPolicy:"diagnose-and-repair",remediationArtifacts:[a.artifactRemediationPlan]}),e("snapshot","npx workspai snapshot create --json",".workspai/reports/snapshot-last-run.json"),e("workspaceModel","npx workspai workspace model --json --write",r.model),e("intelligenceSnapshot","npx workspai workspace snapshot --json",r.snapshot),e("workspaceDiff",`npx workspai workspace diff --from ${r.snapshot} --json`,r.diff),e("workspaceImpact",`npx workspai workspace impact --from ${r.diff} --json`,r.impact),e("workspaceIntelligenceRun","npx workspai workspace intelligence run --for-agent generic --strict --json",r.intelligenceRun,{repairPolicy:"source-repair-then-produce"}),e("workspaceVerify",k,r.verify,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("workspaceExplain","npx workspai workspace explain release-blocked --json --write",r.explain),e("workspaceWhy","npx workspai workspace why release-blocked --json --write",a.workspaceWhy),e("workspaceTrace",`npx workspai workspace trace --from ${r.diff} --json --write`,a.workspaceTrace),e("workspaceWatch","npx workspai workspace watch --once --json",r.model),e("workspaceContextAgent","npx workspai workspace context --for-agent --json --write",r.agentContext),e("agentGrounding","npx workspai workspace agent-sync --write --refresh-context --json --preset enterprise --target vscode",r.agentCustomizationPack),e("share",`npx workspai workspace share --output ${a.workspaceShareBundle} --json`,a.workspaceShareBundle),e("archive","npx workspai workspace export --output team-workspace.workspai-archive.zip --json",".workspai/archive-manifest.json"),e("mirror","npx workspai mirror status --json",a.mirrorOps),e("cache","npx workspai cache status --json",".workspai/cache-config.yml"),e("policy","npx workspai workspace policy show --json",".workspai/policies.yml",{repairPolicy:"source-repair-then-produce"}),e("infra","npx workspai infra plan --json",a.infraPlan,{repairPolicy:"source-repair-then-produce"})];var g=f.repairTransaction,h=e$1.repairTransaction,E=g$1.repairTransaction;var m="workspai.workspace-repair-proposal.v1",I="contracts/workspace-intelligence/workspace-repair-proposal.v1.json";var R="workspai.workspace-repair-capabilities.v1",y="workspai.workspace-repair-consumer-protocol.v1",w=[{id:"node",ecosystem:"JavaScript / TypeScript",manifests:["package.json"],lockfiles:["package-lock.json","npm-shrinkwrap.json","pnpm-lock.yaml","yarn.lock","bun.lock","bun.lockb"],packageManagers:["npm","pnpm","yarn","bun"],support:"full",stages:{reconcile:"native",audit:"native",test:"declared",build:"declared"},requiredToolFamilies:["selected package manager"]},{id:"python",ecosystem:"Python",manifests:["pyproject.toml","requirements.txt"],lockfiles:["uv.lock","poetry.lock","requirements.txt"],packageManagers:["uv","poetry","pip"],support:"conditional",stages:{reconcile:"conditional",audit:"conditional",test:"conditional",build:"declared"},requiredToolFamilies:["isolated Python","selected environment manager","pip-audit or governed Doctor audit"],limitation:"A bounded isolated environment and an installed audit surface are required."},{id:"go",ecosystem:"Go",manifests:["go.mod"],lockfiles:["go.sum"],packageManagers:["go modules"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["go","govulncheck"],limitation:"govulncheck must be installed; the engine never fetches an unreviewed tool."},{id:"rust",ecosystem:"Rust",manifests:["Cargo.toml"],lockfiles:["Cargo.lock"],packageManagers:["cargo"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["cargo","cargo-audit"],limitation:"The cargo-audit subcommand must already be installed."},{id:"php-composer",ecosystem:"PHP",manifests:["composer.json"],lockfiles:["composer.lock"],packageManagers:["composer"],support:"full",stages:{reconcile:"native",audit:"native",test:"declared",build:"declared"},requiredToolFamilies:["composer"]},{id:"ruby-bundler",ecosystem:"Ruby",manifests:["Gemfile"],lockfiles:["Gemfile.lock"],packageManagers:["bundler"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"declared",build:"declared"},requiredToolFamilies:["bundle","bundle-audit"],limitation:"bundle-audit and the declared Rake tasks must already exist."},{id:"elixir-mix",ecosystem:"Elixir",manifests:["mix.exs"],lockfiles:["mix.lock"],packageManagers:["mix"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["mix","Hex audit task"],limitation:"The project must expose the Hex audit task used by its dependency policy."},{id:"deno",ecosystem:"Deno",manifests:["deno.json","deno.jsonc"],lockfiles:["deno.lock"],packageManagers:["deno"],support:"full",stages:{reconcile:"native",audit:"native",test:"declared",build:"declared"},requiredToolFamilies:["deno"]},{id:"dotnet",ecosystem:".NET",manifests:["*.sln","*.csproj","*.fsproj","*.vbproj"],lockfiles:["Directory.Packages.props","packages.lock.json"],packageManagers:["NuGet / dotnet"],support:"full",stages:{reconcile:"native",audit:"native",test:"native",build:"native"},requiredToolFamilies:["dotnet"]},{id:"jvm-maven",ecosystem:"JVM / Maven",manifests:["pom.xml"],lockfiles:[],packageManagers:["Maven Wrapper","Maven"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["mvnw or mvn","governed Doctor audit"],limitation:"A project-specific dependency audit command must be declared by Doctor evidence."},{id:"jvm-gradle",ecosystem:"JVM / Gradle",manifests:["build.gradle.kts","build.gradle"],lockfiles:["gradle.lockfile","gradle/libs.versions.toml"],packageManagers:["Gradle Wrapper","Gradle"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["gradlew or gradle","governed Doctor audit"],limitation:"A project-specific dependency audit command must be declared by Doctor evidence."},{id:"clojure",ecosystem:"Clojure",manifests:["deps.edn","project.clj"],lockfiles:[],packageManagers:["Clojure CLI","Leiningen"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"conditional",build:"conditional"},requiredToolFamilies:["clojure or lein","governed project audit"],limitation:"Tests and builds run only when the selected Clojure project surface declares a deterministic entrypoint."},{id:"scala-sbt",ecosystem:"Scala / sbt",manifests:["build.sbt"],lockfiles:[],packageManagers:["sbt"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["sbt","governed project audit"],limitation:"A project-specific dependency audit command must be declared by Doctor evidence."}];function M(){return {schemaVersion:R,owner:"Workspai CLI",workflow:["plan","preconditions","approval","target-precondition","checkpoint","execute","reconcile","audit","test","build","target-producer-verify","canonical-verify","close-or-rollback-or-decision"],invariants:{multiAdapterProjects:true,missingTools:"decision-required",unsupportedEcosystems:"decision-required",silentFallbackToModelExecution:false,mutationAuthority:"cli-only",targetClosure:"selected-causal-action-set",changeReceipt:"checkpoint-hash-delta",consumerTimeline:"durable-transaction-events",typedDecisionCauses:true,consumerHandshakeRequired:true,ephemeralProposalsAreEvidence:false,approvalBoundToPlanHash:true,canonicalVerificationRequired:true,rollbackConflictDetection:true},consumerProtocol:{protocolVersion:y,versionProbe:{args:["--version","--json"],schemaVersion:"rapidkit-version-v1"},capabilityProbe:{args:["workspace","repair","capabilities","--json"],schemaVersion:R},invocation:{command:"workspace repair",workspaceResolution:["process-cwd","--workspace"],actions:["capabilities","plan","propose","approve","decide","execute","resume","status","list","rollback","cancel"]},contracts:{operationResult:a$1,proposal:m,transaction:g},transientPaths:[".workspai/repair/inbox/*.json",".workspai/repair/engine.lock"]},adapters:w}}export{v as a,b,g as c,h as d,E as e,m as f,I as g,R as h,w as i,M as j};
1
+ import {a as a$1}from'./chunk-FPJNWPKU.js';import {f,e as e$1,g as g$1,i}from'./chunk-HH54C3XJ.js';var v="workspai.studio-card-repair-capabilities.v1",k="npx workspai workspace verify --json",r=e$1,a=i;function e(f,n,c,o={}){return {cardId:f,scope:o.scope??"workspace",producerCommand:n,producerArtifact:c,verifyCommand:n,verifyArtifact:c,aggregateVerifyCommand:k,targetClosure:"exact-producer-and-causal-action-set",workspacePosture:"reported-separately",repairPolicy:o.repairPolicy??"refresh-producer",remediationArtifacts:o.remediationArtifacts??[]}}var b=[e("doctor","npx workspai doctor workspace --json",r.doctor,{repairPolicy:"diagnose-and-repair",remediationArtifacts:[a.doctorRemediationPlan,a.artifactRemediationPlan]}),e("projectDoctor","npx workspai doctor project --json",a.doctorProject,{scope:"project",repairPolicy:"diagnose-and-repair",remediationArtifacts:[a.doctorRemediationPlan,a.artifactRemediationPlan]}),e("pipeline","npx workspai pipeline --json --strict",a.pipelineLastRun,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("analyze","npx workspai analyze --json",r.analyze,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("readiness","npx workspai readiness --json",r.readiness,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("bootstrap","npx workspai bootstrap --ci --json",a.bootstrapCompliance,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("workspaceSync","npx workspai workspace sync --json",a.workspaceRegistry),e("foundation","npx workspai workspace foundation ensure --json",".workspai/workspace.json"),e("contract","npx workspai workspace contract verify --strict --json",r.contractVerify,{repairPolicy:"source-repair-then-produce"}),e("autopilot","npx workspai autopilot release --json",a.autopilotReleaseLastRun,{repairPolicy:"source-repair-then-produce"}),e("workspaceRun","npx workspai workspace run test --json",a.workspaceRunLast,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("setup","npx workspai setup --json",".workspai/toolchain.lock",{repairPolicy:"source-repair-then-produce"}),e("importReadiness","npx workspai doctor project --json",a.doctorProject,{scope:"project",repairPolicy:"diagnose-and-repair",remediationArtifacts:[a.artifactRemediationPlan]}),e("snapshot","npx workspai snapshot create --json",".workspai/reports/snapshot-last-run.json"),e("workspaceModel","npx workspai workspace model --json --write",r.model),e("intelligenceSnapshot","npx workspai workspace snapshot --json",r.snapshot),e("workspaceDiff",`npx workspai workspace diff --from ${r.snapshot} --json`,r.diff),e("workspaceImpact",`npx workspai workspace impact --from ${r.diff} --json`,r.impact),e("workspaceIntelligenceRun","npx workspai workspace intelligence run --for-agent generic --strict --json",r.intelligenceRun,{repairPolicy:"source-repair-then-produce"}),e("workspaceVerify",k,r.verify,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("workspaceExplain","npx workspai workspace explain release-blocked --json --write",r.explain),e("workspaceWhy","npx workspai workspace why release-blocked --json --write",a.workspaceWhy),e("workspaceTrace",`npx workspai workspace trace --from ${r.diff} --json --write`,a.workspaceTrace),e("workspaceWatch","npx workspai workspace watch --once --json",r.model),e("workspaceContextAgent","npx workspai workspace context --for-agent --json --write",r.agentContext),e("agentGrounding","npx workspai workspace agent-sync --write --refresh-context --json --preset enterprise --target vscode",r.agentCustomizationPack),e("share",`npx workspai workspace share --output ${a.workspaceShareBundle} --json`,a.workspaceShareBundle),e("archive","npx workspai workspace export --output team-workspace.workspai-archive.zip --json",".workspai/archive-manifest.json"),e("mirror","npx workspai mirror status --json",a.mirrorOps),e("cache","npx workspai cache status --json",".workspai/cache-config.yml"),e("policy","npx workspai workspace policy show --json",".workspai/policies.yml",{repairPolicy:"source-repair-then-produce"}),e("infra","npx workspai infra plan --json",a.infraPlan,{repairPolicy:"source-repair-then-produce"})];var g=f.repairTransaction,h=e$1.repairTransaction,E=g$1.repairTransaction;var m="workspai.workspace-repair-proposal.v1",I="contracts/workspace-intelligence/workspace-repair-proposal.v1.json";var R="workspai.workspace-repair-capabilities.v1",y="workspai.workspace-repair-consumer-protocol.v1",w=[{id:"node",ecosystem:"JavaScript / TypeScript",manifests:["package.json"],lockfiles:["package-lock.json","npm-shrinkwrap.json","pnpm-lock.yaml","yarn.lock","bun.lock","bun.lockb"],packageManagers:["npm","pnpm","yarn","bun"],support:"full",stages:{reconcile:"native",audit:"native",test:"declared",build:"declared"},requiredToolFamilies:["selected package manager"]},{id:"python",ecosystem:"Python",manifests:["pyproject.toml","requirements.txt"],lockfiles:["uv.lock","poetry.lock","requirements.txt"],packageManagers:["uv","poetry","pip"],support:"conditional",stages:{reconcile:"conditional",audit:"conditional",test:"conditional",build:"declared"},requiredToolFamilies:["isolated Python","selected environment manager","pip-audit or governed Doctor audit"],limitation:"A bounded isolated environment and an installed audit surface are required."},{id:"go",ecosystem:"Go",manifests:["go.mod"],lockfiles:["go.sum"],packageManagers:["go modules"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["go","govulncheck"],limitation:"govulncheck must be installed; the engine never fetches an unreviewed tool."},{id:"rust",ecosystem:"Rust",manifests:["Cargo.toml"],lockfiles:["Cargo.lock"],packageManagers:["cargo"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["cargo","cargo-audit"],limitation:"The cargo-audit subcommand must already be installed."},{id:"php-composer",ecosystem:"PHP",manifests:["composer.json"],lockfiles:["composer.lock"],packageManagers:["composer"],support:"full",stages:{reconcile:"native",audit:"native",test:"declared",build:"declared"},requiredToolFamilies:["composer"]},{id:"ruby-bundler",ecosystem:"Ruby",manifests:["Gemfile"],lockfiles:["Gemfile.lock"],packageManagers:["bundler"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"declared",build:"declared"},requiredToolFamilies:["bundle","bundle-audit"],limitation:"bundle-audit and the declared Rake tasks must already exist."},{id:"elixir-mix",ecosystem:"Elixir",manifests:["mix.exs"],lockfiles:["mix.lock"],packageManagers:["mix"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["mix","Hex audit task"],limitation:"The project must expose the Hex audit task used by its dependency policy."},{id:"deno",ecosystem:"Deno",manifests:["deno.json","deno.jsonc"],lockfiles:["deno.lock"],packageManagers:["deno"],support:"full",stages:{reconcile:"native",audit:"native",test:"declared",build:"declared"},requiredToolFamilies:["deno"]},{id:"dotnet",ecosystem:".NET",manifests:["*.sln","*.csproj","*.fsproj","*.vbproj"],lockfiles:["Directory.Packages.props","packages.lock.json"],packageManagers:["NuGet / dotnet"],support:"full",stages:{reconcile:"native",audit:"native",test:"native",build:"native"},requiredToolFamilies:["dotnet"]},{id:"jvm-maven",ecosystem:"JVM / Maven",manifests:["pom.xml"],lockfiles:[],packageManagers:["Maven Wrapper","Maven"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["mvnw or mvn","governed Doctor audit"],limitation:"A project-specific dependency audit command must be declared by Doctor evidence."},{id:"jvm-gradle",ecosystem:"JVM / Gradle",manifests:["build.gradle.kts","build.gradle"],lockfiles:["gradle.lockfile","gradle/libs.versions.toml"],packageManagers:["Gradle Wrapper","Gradle"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["gradlew or gradle","governed Doctor audit"],limitation:"A project-specific dependency audit command must be declared by Doctor evidence."},{id:"clojure",ecosystem:"Clojure",manifests:["deps.edn","project.clj"],lockfiles:[],packageManagers:["Clojure CLI","Leiningen"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"conditional",build:"conditional"},requiredToolFamilies:["clojure or lein","governed project audit"],limitation:"Tests and builds run only when the selected Clojure project surface declares a deterministic entrypoint."},{id:"scala-sbt",ecosystem:"Scala / sbt",manifests:["build.sbt"],lockfiles:[],packageManagers:["sbt"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["sbt","governed project audit"],limitation:"A project-specific dependency audit command must be declared by Doctor evidence."}];function M(){return {schemaVersion:R,owner:"Workspai CLI",workflow:["plan","preconditions","approval","target-precondition","checkpoint","execute","reconcile","audit","test","build","target-producer-verify","canonical-verify","close-or-rollback-or-decision"],invariants:{multiAdapterProjects:true,missingTools:"decision-required",unsupportedEcosystems:"decision-required",silentFallbackToModelExecution:false,mutationAuthority:"cli-only",targetClosure:"selected-causal-action-set",changeReceipt:"checkpoint-hash-delta",consumerTimeline:"durable-transaction-events",typedDecisionCauses:true,consumerHandshakeRequired:true,ephemeralProposalsAreEvidence:false,approvalBoundToPlanHash:true,canonicalVerificationRequired:true,rollbackConflictDetection:true},consumerProtocol:{protocolVersion:y,versionProbe:{args:["--version","--json"],schemaVersion:"rapidkit-version-v1"},capabilityProbe:{args:["workspace","repair","capabilities","--json"],schemaVersion:R},invocation:{command:"workspace repair",workspaceResolution:["process-cwd","--workspace"],actions:["capabilities","plan","propose","approve","decide","execute","resume","status","list","rollback","cancel"]},contracts:{operationResult:a$1,proposal:m,transaction:g},transientPaths:[".workspai/repair/inbox/*.json",".workspai/repair/engine.lock"]},adapters:w}}export{v as a,b,g as c,h as d,E as e,m as f,I as g,R as h,w as i,M as j};
@@ -1 +1 @@
1
- import {f}from'./chunk-5EPPPMAS.js';var i=f.explain,u=["project","release-blocked","blocker","trace"];function s(t){let e=t.trim();if(!e)return null;if(e==="release-blocked")return {kind:"release-blocked"};if(e.startsWith("project:")){let r=e.slice(8).trim();return r?{kind:"project",project:r}:null}if(e.startsWith("blocker:")){let r=e.slice(8).trim();return r?{kind:"blocker",blockerId:r}:null}if(e.startsWith("trace:")){let r=e.slice(6).trim();return r?{kind:"trace",diffRef:r}:null}return {kind:"project",project:e}}function E(t){let e=t.trim();if(!e)return null;if(e.startsWith("trace:")){let n=s(e);return n?.kind==="trace"?n:null}let r=e.replace(/\\/g,"/").trim().toLowerCase();return r.endsWith(".json")||r.includes("workspace-model-diff")||r.startsWith(".rapidkit/")||r.includes("/.rapidkit/")?{kind:"trace",diffRef:e}:null}function A(t){if(!t||typeof t!="object"||Array.isArray(t))return false;let e=t;return e.schemaVersion===i&&typeof e.generatedAt=="string"&&typeof e.summary=="string"&&Array.isArray(e.sections)&&e.target!=null&&typeof e.target=="object"&&!Array.isArray(e.target)&&typeof e.target.kind=="string"}export{i as a,u as b,s as c,E as d,A as e};
1
+ import {f}from'./chunk-HH54C3XJ.js';var i=f.explain,u=["project","release-blocked","blocker","trace"];function s(t){let e=t.trim();if(!e)return null;if(e==="release-blocked")return {kind:"release-blocked"};if(e.startsWith("project:")){let r=e.slice(8).trim();return r?{kind:"project",project:r}:null}if(e.startsWith("blocker:")){let r=e.slice(8).trim();return r?{kind:"blocker",blockerId:r}:null}if(e.startsWith("trace:")){let r=e.slice(6).trim();return r?{kind:"trace",diffRef:r}:null}return {kind:"project",project:e}}function E(t){let e=t.trim();if(!e)return null;if(e.startsWith("trace:")){let n=s(e);return n?.kind==="trace"?n:null}let r=e.replace(/\\/g,"/").trim().toLowerCase();return r.endsWith(".json")||r.includes("workspace-model-diff")||r.startsWith(".rapidkit/")||r.includes("/.rapidkit/")?{kind:"trace",diffRef:e}:null}function A(t){if(!t||typeof t!="object"||Array.isArray(t))return false;let e=t;return e.schemaVersion===i&&typeof e.generatedAt=="string"&&typeof e.summary=="string"&&Array.isArray(e.sections)&&e.target!=null&&typeof e.target=="object"&&!Array.isArray(e.target)&&typeof e.target.kind=="string"}export{i as a,u as b,s as c,E as d,A as e};
@@ -1 +1 @@
1
- import {f,l}from'./chunk-GXTCU4WF.js';import {a,b}from'./chunk-S5KTATOU.js';function u(r){let s=new Map;for(let n of r.projects)s.has(n.name)||s.set(n.name,f(n));return s}function w(r){let s=u(r),n=l(r)??{nodes:r.projects.map(t=>({id:t.name,path:t.path})),edges:[]},a$1=a(n),o=new Map;for(let t of n.nodes){let e=s.get(t.id)??f({missing:t.id}),l=[...b(a$1,[t.id],{direction:"dependencies"}).keys()].filter(c=>c!==t.id).sort((c,f)=>c.localeCompare(f)).map(c=>({id:c,hash:s.get(c)??"<unknown>"}));o.set(t.id,{id:t.id,ownHash:e,transitiveInputsHash:f({own:e,dependencies:l})});}return o}function y(r,s){if(!s||Object.keys(s).length===0)return {verdict:"unknown",baseline:"none",changed:[],added:[],removed:[]};let n=[],a=[];for(let[e,i]of r.entries())e in s?s[e]!==i.transitiveInputsHash&&n.push(e):a.push(e);let o=[];for(let e of Object.keys(s))r.has(e)||o.push(e);return n.sort((e,i)=>e.localeCompare(i)),a.sort((e,i)=>e.localeCompare(i)),o.sort((e,i)=>e.localeCompare(i)),{verdict:n.length>0||a.length>0||o.length>0?"stale":"fresh",baseline:"recorded",changed:n,added:a,removed:o}}function M(r){let s={};for(let[n,a]of [...r.entries()].sort((o,t)=>o[0].localeCompare(t[0])))s[n]=a.transitiveInputsHash;return s}export{u as a,w as b,y as c,M as d};
1
+ import {f,l}from'./chunk-AUCHMXUZ.js';import {a,b}from'./chunk-S5KTATOU.js';function u(r){let s=new Map;for(let n of r.projects)s.has(n.name)||s.set(n.name,f(n));return s}function w(r){let s=u(r),n=l(r)??{nodes:r.projects.map(t=>({id:t.name,path:t.path})),edges:[]},a$1=a(n),o=new Map;for(let t of n.nodes){let e=s.get(t.id)??f({missing:t.id}),l=[...b(a$1,[t.id],{direction:"dependencies"}).keys()].filter(c=>c!==t.id).sort((c,f)=>c.localeCompare(f)).map(c=>({id:c,hash:s.get(c)??"<unknown>"}));o.set(t.id,{id:t.id,ownHash:e,transitiveInputsHash:f({own:e,dependencies:l})});}return o}function y(r,s){if(!s||Object.keys(s).length===0)return {verdict:"unknown",baseline:"none",changed:[],added:[],removed:[]};let n=[],a=[];for(let[e,i]of r.entries())e in s?s[e]!==i.transitiveInputsHash&&n.push(e):a.push(e);let o=[];for(let e of Object.keys(s))r.has(e)||o.push(e);return n.sort((e,i)=>e.localeCompare(i)),a.sort((e,i)=>e.localeCompare(i)),o.sort((e,i)=>e.localeCompare(i)),{verdict:n.length>0||a.length>0||o.length>0?"stale":"fresh",baseline:"recorded",changed:n,added:a,removed:o}}function M(r){let s={};for(let[n,a]of [...r.entries()].sort((o,t)=>o[0].localeCompare(t[0])))s[n]=a.transitiveInputsHash;return s}export{u as a,w as b,y as c,M as d};