@aiwg/cli 2026.9.20 → 2026.9.24

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 (275) hide show
  1. package/agentic/code/providers/capability-matrix.yaml +58 -6
  2. package/agentic/code/providers/model-capabilities.v1.json +34 -0
  3. package/agentic/code/providers/model-catalog.v1.json +55 -13
  4. package/bin/aiwg.mjs +2 -0
  5. package/dist/src/api/index.d.ts +1 -0
  6. package/dist/src/api/index.js +1 -0
  7. package/dist/src/artifacts/cli.js +23 -18
  8. package/dist/src/artifacts/enrichment/cli.js +1 -1
  9. package/dist/src/artifacts/fortemi-core-query-adapter.js +6 -2
  10. package/dist/src/artifacts/query-engine.js +14 -4
  11. package/dist/src/artifacts/views/cli.js +1 -1
  12. package/dist/src/audit/operator-decision.js +10 -0
  13. package/dist/src/auth/credential-store.js +127 -27
  14. package/dist/src/catalog/builtin-models.json +272 -40
  15. package/dist/src/catalog/cli.js +1 -1
  16. package/dist/src/catalog/cli.mjs +1 -1
  17. package/dist/src/cli/handlers/effect.js +872 -0
  18. package/dist/src/cli/handlers/help.js +2 -0
  19. package/dist/src/cli/handlers/index.js +4 -2
  20. package/dist/src/cli/handlers/models.js +41 -10
  21. package/dist/src/cli/handlers/ralph.js +1 -1
  22. package/dist/src/cli/handlers/sessions.js +113 -37
  23. package/dist/src/cli/handlers/subcommands.js +31 -0
  24. package/dist/src/cli/handlers/use.js +46 -9
  25. package/dist/src/cli/handlers/utilities.js +10 -0
  26. package/dist/src/cli/handlers/workspace.js +3 -1
  27. package/dist/src/cli/scope-resolver.js +112 -9
  28. package/dist/src/cli/services/deployment-verification.js +5 -0
  29. package/dist/src/config/aiwg-config.js +3 -0
  30. package/dist/src/decision/acceptance-rollout.js +93 -0
  31. package/dist/src/decision/acceptance.js +175 -0
  32. package/dist/src/decision/adapters/jev.js +234 -13
  33. package/dist/src/decision/adapters/llm-subagent.js +60 -12
  34. package/dist/src/decision/admission.js +550 -0
  35. package/dist/src/decision/batch-benchmark.js +47 -0
  36. package/dist/src/decision/batch-receipts/accounting.js +75 -0
  37. package/dist/src/decision/batch-receipts/export.js +40 -0
  38. package/dist/src/decision/batch-receipts/index.js +9 -0
  39. package/dist/src/decision/batch-receipts/protection.js +40 -0
  40. package/dist/src/decision/batch-receipts/receipt.js +44 -0
  41. package/dist/src/decision/batch-receipts/result-store.js +341 -0
  42. package/dist/src/decision/batch-receipts/store.js +362 -0
  43. package/dist/src/decision/batch-receipts/types.js +2 -0
  44. package/dist/src/decision/batch-receipts/validate.js +127 -0
  45. package/dist/src/decision/batch.js +68 -0
  46. package/dist/src/decision/calibration/index.js +4 -0
  47. package/dist/src/decision/calibration/receipts.js +130 -0
  48. package/dist/src/decision/calibration/registry.js +258 -0
  49. package/dist/src/decision/calibration/types.js +2 -0
  50. package/dist/src/decision/compile-cache/benchmark.js +62 -0
  51. package/dist/src/decision/compile-cache/compatibility.js +65 -0
  52. package/dist/src/decision/compile-cache/file-store.js +280 -0
  53. package/dist/src/decision/compile-cache/identity.js +26 -0
  54. package/dist/src/decision/compile-cache/index.js +9 -0
  55. package/dist/src/decision/compile-cache/prefix.js +21 -0
  56. package/dist/src/decision/compile-cache/records.js +86 -0
  57. package/dist/src/decision/compile-cache/runtime.js +68 -0
  58. package/dist/src/decision/compile-cache/store.js +108 -0
  59. package/dist/src/decision/compile-cache/types.js +2 -0
  60. package/dist/src/decision/context-plan.js +234 -0
  61. package/dist/src/decision/context-qualification.js +60 -0
  62. package/dist/src/decision/ensemble/aggregate.js +215 -0
  63. package/dist/src/decision/ensemble/contract.js +316 -0
  64. package/dist/src/decision/ensemble/drift.js +51 -0
  65. package/dist/src/decision/ensemble/index.js +6 -0
  66. package/dist/src/decision/ensemble/report.js +71 -0
  67. package/dist/src/decision/ensemble/types.js +2 -0
  68. package/dist/src/decision/evaluate.js +1024 -78
  69. package/dist/src/decision/file-lifecycle-store.js +168 -0
  70. package/dist/src/decision/graph-beam.js +40 -0
  71. package/dist/src/decision/graph-budget.js +110 -0
  72. package/dist/src/decision/graph-decision-bridge.js +93 -0
  73. package/dist/src/decision/graph-evidence.js +123 -0
  74. package/dist/src/decision/graph-flow-adapter.js +56 -0
  75. package/dist/src/decision/graph-flow.js +105 -0
  76. package/dist/src/decision/graph-parallel.js +79 -0
  77. package/dist/src/decision/graph-patterns.js +20 -0
  78. package/dist/src/decision/graph-run-store.js +66 -0
  79. package/dist/src/decision/graph-run.js +166 -0
  80. package/dist/src/decision/graph-skill-bridge.js +91 -0
  81. package/dist/src/decision/graph-templates.js +56 -0
  82. package/dist/src/decision/graph.js +115 -0
  83. package/dist/src/decision/index.js +35 -0
  84. package/dist/src/decision/job-accounting.js +93 -0
  85. package/dist/src/decision/job-contract.js +186 -0
  86. package/dist/src/decision/job-effects.js +95 -0
  87. package/dist/src/decision/job-evaluate.js +80 -0
  88. package/dist/src/decision/job-gateway.js +121 -0
  89. package/dist/src/decision/job-http.js +194 -0
  90. package/dist/src/decision/job-payload-store.js +258 -0
  91. package/dist/src/decision/job-poll-limiter.js +92 -0
  92. package/dist/src/decision/job-quota.js +158 -0
  93. package/dist/src/decision/job-runtime.js +240 -0
  94. package/dist/src/decision/job-scheduler.js +26 -0
  95. package/dist/src/decision/job-service.js +117 -0
  96. package/dist/src/decision/job-store.js +264 -0
  97. package/dist/src/decision/job-worker.js +141 -0
  98. package/dist/src/decision/lifecycle.js +148 -0
  99. package/dist/src/decision/patterns/artifacts.js +173 -0
  100. package/dist/src/decision/patterns/catalog.js +108 -0
  101. package/dist/src/decision/patterns/durable-review.js +237 -0
  102. package/dist/src/decision/patterns/index.js +8 -0
  103. package/dist/src/decision/patterns/playground.js +401 -0
  104. package/dist/src/decision/patterns/recorded.js +43 -0
  105. package/dist/src/decision/patterns/specs.js +174 -0
  106. package/dist/src/decision/patterns/types.js +2 -0
  107. package/dist/src/decision/portable-secrets.js +53 -0
  108. package/dist/src/decision/projection.js +210 -0
  109. package/dist/src/decision/qualification/capture.js +67 -0
  110. package/dist/src/decision/qualification/drift.js +68 -0
  111. package/dist/src/decision/qualification/gate-evidence.js +172 -0
  112. package/dist/src/decision/qualification/gates.js +83 -0
  113. package/dist/src/decision/qualification/index.js +12 -0
  114. package/dist/src/decision/qualification/load.js +282 -0
  115. package/dist/src/decision/qualification/manifest.js +37 -0
  116. package/dist/src/decision/qualification/privacy.js +41 -0
  117. package/dist/src/decision/qualification/quality.js +213 -0
  118. package/dist/src/decision/qualification/release.js +116 -0
  119. package/dist/src/decision/qualification/runner.js +408 -0
  120. package/dist/src/decision/qualification/types.js +2 -0
  121. package/dist/src/decision/receipts.js +30 -7
  122. package/dist/src/decision/result-cache/index.js +6 -0
  123. package/dist/src/decision/result-cache/integrity.js +28 -0
  124. package/dist/src/decision/result-cache/key.js +28 -0
  125. package/dist/src/decision/result-cache/service.js +92 -0
  126. package/dist/src/decision/result-cache/store.js +327 -0
  127. package/dist/src/decision/result-cache/types.js +3 -0
  128. package/dist/src/decision/review/authorization.js +110 -0
  129. package/dist/src/decision/review/effect-ledger-adapter.js +321 -0
  130. package/dist/src/decision/review/index.js +12 -0
  131. package/dist/src/decision/review/migrate.js +34 -0
  132. package/dist/src/decision/review/operator-audit.js +59 -0
  133. package/dist/src/decision/review/recovery-adapters.js +252 -0
  134. package/dist/src/decision/review/recovery.js +33 -0
  135. package/dist/src/decision/review/service.js +498 -0
  136. package/dist/src/decision/review/store.js +219 -0
  137. package/dist/src/decision/review/types.js +2 -0
  138. package/dist/src/decision/review/validate.js +205 -0
  139. package/dist/src/decision/scheduler.js +115 -0
  140. package/dist/src/decision/telemetry/context.js +42 -0
  141. package/dist/src/decision/telemetry/debug-sidecar.js +152 -0
  142. package/dist/src/decision/telemetry/exporter.js +77 -0
  143. package/dist/src/decision/telemetry/file-debug-backend.js +112 -0
  144. package/dist/src/decision/telemetry/index.js +13 -0
  145. package/dist/src/decision/telemetry/mapping.js +146 -0
  146. package/dist/src/decision/telemetry/metrics.js +164 -0
  147. package/dist/src/decision/telemetry/otlp-http.js +183 -0
  148. package/dist/src/decision/telemetry/redaction.js +93 -0
  149. package/dist/src/decision/telemetry/retention.js +109 -0
  150. package/dist/src/decision/telemetry/runtime.js +310 -0
  151. package/dist/src/decision/telemetry/trace.js +158 -0
  152. package/dist/src/decision/telemetry/types.js +3 -0
  153. package/dist/src/decision/validate.js +135 -5
  154. package/dist/src/effects/checkpoint-sinks.js +94 -0
  155. package/dist/src/effects/checkpoint.js +76 -0
  156. package/dist/src/effects/decision-links.js +54 -0
  157. package/dist/src/effects/errors.js +48 -0
  158. package/dist/src/effects/identity.js +178 -0
  159. package/dist/src/effects/index.js +25 -0
  160. package/dist/src/effects/keyring.js +160 -0
  161. package/dist/src/effects/keys.js +130 -0
  162. package/dist/src/effects/ledger.js +435 -0
  163. package/dist/src/effects/lifecycle.js +110 -0
  164. package/dist/src/effects/lock-recovery.js +269 -0
  165. package/dist/src/effects/reader.js +103 -0
  166. package/dist/src/effects/records.js +114 -0
  167. package/dist/src/effects/redaction.js +51 -0
  168. package/dist/src/effects/schema.js +73 -0
  169. package/dist/src/effects/store.js +239 -0
  170. package/dist/src/effects/types.js +49 -0
  171. package/dist/src/effects/verifiers/decision.js +168 -0
  172. package/dist/src/effects/verifiers/file.js +106 -0
  173. package/dist/src/effects/verifiers/git.js +206 -0
  174. package/dist/src/effects/verifiers/index.js +90 -0
  175. package/dist/src/effects/verifiers/registry.js +148 -0
  176. package/dist/src/effects/verifiers/review.js +123 -0
  177. package/dist/src/effects/verifiers/tracker.js +299 -0
  178. package/dist/src/effects/verifiers/types.js +21 -0
  179. package/dist/src/effects/verify.js +295 -0
  180. package/dist/src/evidence/bundle.js +2 -0
  181. package/dist/src/extensions/commands/definitions.js +28 -0
  182. package/dist/src/extensions/manifest.js +1 -0
  183. package/dist/src/marketplace/provenance.js +25 -27
  184. package/dist/src/mcp/cli.mjs +11 -1
  185. package/dist/src/mcp/grok-build-config.mjs +189 -0
  186. package/dist/src/mcp/registry.js +21 -1
  187. package/dist/src/mcp/registry.mjs +20 -1
  188. package/dist/src/models/grok-build-models.js +356 -0
  189. package/dist/src/models/index.js +1 -0
  190. package/dist/src/models/model-capabilities.v1.json +34 -0
  191. package/dist/src/models/model-catalog.v1.json +55 -13
  192. package/dist/src/models/model-discovery.js +41 -5
  193. package/dist/src/models/provider-policy.js +3 -2
  194. package/dist/src/plugin/skill-command-translator.js +1 -0
  195. package/dist/src/providers/capability-matrix.yaml +58 -6
  196. package/dist/src/providers/grok-build-acp.js +192 -0
  197. package/dist/src/providers/grok-build-dispatch.js +251 -0
  198. package/dist/src/providers/grok-build-headless.js +170 -0
  199. package/dist/src/providers/muse-paths.js +105 -0
  200. package/dist/src/providers/provider-definitions.js +93 -7
  201. package/dist/src/providers/provider-definitions.mjs +21 -1
  202. package/dist/src/providers/provider-inventory.js +3 -0
  203. package/dist/src/security/artifact-attestation.js +4 -8
  204. package/dist/src/security/signing.js +119 -0
  205. package/dist/src/sessions/adapters/grok-build.js +187 -0
  206. package/dist/src/sessions/adapters/muse.js +412 -0
  207. package/dist/src/sessions/contracts.js +1 -1
  208. package/dist/src/sessions/grok-build-cli.js +196 -0
  209. package/dist/src/sessions/index.js +3 -0
  210. package/dist/src/sessions/workspace-discovery.js +9 -5
  211. package/dist/src/skills/deployer.js +33 -5
  212. package/dist/src/smiths/context-pipeline/claude-hook.js +2 -0
  213. package/dist/src/smiths/context-pipeline/context-file-safety.js +18 -0
  214. package/dist/src/smiths/context-pipeline/finalization.js +1 -32
  215. package/dist/src/smiths/context-pipeline/generator.js +12 -0
  216. package/dist/src/smiths/context-pipeline/index.js +1 -1
  217. package/dist/src/smiths/context-pipeline/managed-hook.js +2 -0
  218. package/dist/src/smiths/context-pipeline/muse-bridge.js +50 -0
  219. package/dist/src/smiths/context-pipeline/provider-policy.js +5 -0
  220. package/dist/src/smiths/context-pipeline/workspace-context.js +22 -16
  221. package/dist/src/smiths/hook-bridge/grok-build-translator.js +64 -0
  222. package/dist/src/smiths/hook-bridge/index.js +3 -0
  223. package/dist/src/smiths/hook-bridge/shim.js +2 -0
  224. package/dist/src/smiths/hook-bridge/types.js +5 -0
  225. package/dist/src/smiths/skillsmith/collision-detector.js +1 -0
  226. package/dist/src/storage/protected-files.js +102 -0
  227. package/dist/src/tracker/forge-http.js +371 -0
  228. package/dist/src/tracker/project-inputs.js +41 -0
  229. package/package.json +2 -1
  230. package/schemas/decision/BatchReceipt.v1.schema.json +50 -0
  231. package/schemas/decision/CalibrationArtifact.v1.schema.json +76 -0
  232. package/schemas/decision/CalibrationCompatibility.v1.schema.json +18 -0
  233. package/schemas/decision/CalibrationGovernanceReceipt.v1.schema.json +44 -0
  234. package/schemas/decision/DecisionAdmissionEvidence.v1.schema.json +43 -0
  235. package/schemas/decision/DecisionBinding.schema.json +309 -0
  236. package/schemas/decision/DecisionBinding.v1alpha2.schema.json +369 -0
  237. package/schemas/decision/DecisionCacheTelemetry.v1.schema.json +20 -0
  238. package/schemas/decision/DecisionChampionChallenger.v1.schema.json +100 -0
  239. package/schemas/decision/DecisionCompileCacheEntry.v1.schema.json +35 -0
  240. package/schemas/decision/DecisionCompileCacheIdentity.v1.schema.json +26 -0
  241. package/schemas/decision/DecisionCompileCacheTombstone.v1.schema.json +31 -0
  242. package/schemas/decision/DecisionContextEvidence.v1.schema.json +136 -0
  243. package/schemas/decision/DecisionDefinition.schema.json +159 -0
  244. package/schemas/decision/DecisionDefinition.v1alpha2.schema.json +203 -0
  245. package/schemas/decision/DecisionDriftResponse.v1.schema.json +55 -0
  246. package/schemas/decision/DecisionEnsembleAggregate.v1.schema.json +86 -0
  247. package/schemas/decision/DecisionEnsembleIntegrityReport.v1.schema.json +64 -0
  248. package/schemas/decision/DecisionEnsemblePolicy.v1.schema.json +130 -0
  249. package/schemas/decision/DecisionGraph.v1.schema.json +77 -0
  250. package/schemas/decision/DecisionJob.v1.schema.json +71 -0
  251. package/schemas/decision/DecisionLifecyclePolicy.v1.schema.json +52 -0
  252. package/schemas/decision/DecisionProjectionPolicy.v1.schema.json +65 -0
  253. package/schemas/decision/DecisionProviderPrefixCompatibility.v1.schema.json +45 -0
  254. package/schemas/decision/DecisionProviderPrefixEvidence.v1.schema.json +17 -0
  255. package/schemas/decision/DecisionProviderPrefixIdentity.v1.schema.json +36 -0
  256. package/schemas/decision/DecisionResult.schema.json +524 -0
  257. package/schemas/decision/DecisionResult.v1alpha2.schema.json +619 -0
  258. package/schemas/decision/DecisionResultCacheEntry.v1.schema.json +53 -0
  259. package/schemas/decision/DecisionReview.schema.json +29 -0
  260. package/schemas/decision/DecisionRuleset.schema.json +313 -0
  261. package/schemas/decision/DecisionRuleset.v1alpha2.schema.json +313 -0
  262. package/schemas/decision/DecisionTelemetryTrace.v1.schema.json +95 -0
  263. package/schemas/decision/RulesetResult.schema.json +721 -0
  264. package/schemas/decision/RulesetResult.v1alpha2.schema.json +891 -0
  265. package/schemas/security/pr-evidence-receipt.v1.schema.json +77 -0
  266. package/schemas/security/threat-assessment-report.v1.schema.json +71 -1
  267. package/tools/agents/deploy-agents.mjs +21 -6
  268. package/tools/agents/providers/base.mjs +7 -4
  269. package/tools/agents/providers/codex.mjs +1 -1
  270. package/tools/agents/providers/grok-build.d.mts +7 -0
  271. package/tools/agents/providers/grok-build.mjs +249 -9
  272. package/tools/agents/providers/model-role.mjs +6 -3
  273. package/tools/agents/providers/muse-hooks.mjs +785 -0
  274. package/tools/agents/providers/muse-paths.mjs +112 -0
  275. package/tools/agents/providers/muse.mjs +336 -0
@@ -0,0 +1,77 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://aiwg.io/schemas/security/pr-evidence-receipt.v1.schema.json",
4
+ "title": "PullRequestEvidenceReceipt",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "head", "base", "acquiredAt", "completedAt", "body", "collection", "paths", "completeness", "scopeTriage", "maliciousness", "claims", "verified", "assessed", "evidenceManifest", "nextAction", "actionTrail", "sha256"],
7
+ "properties": {
8
+ "schemaVersion": { "const": "1" },
9
+ "repository": { "type": "string" },
10
+ "number": { "type": "integer" },
11
+ "head": { "type": "string", "pattern": "^[0-9a-fA-F]{40,64}$" },
12
+ "base": { "type": "string", "pattern": "^[0-9a-fA-F]{40,64}$" },
13
+ "acquiredAt": { "type": "string", "format": "date-time" },
14
+ "completedAt": { "type": "string", "format": "date-time" },
15
+ "body": {
16
+ "type": "object",
17
+ "required": ["current", "history"],
18
+ "properties": {
19
+ "current": {
20
+ "type": "object",
21
+ "required": ["text", "sha256"],
22
+ "properties": {
23
+ "text": { "type": "string" },
24
+ "sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" }
25
+ }
26
+ },
27
+ "history": { "type": "array" }
28
+ }
29
+ },
30
+ "collection": { "type": "object" },
31
+ "paths": { "type": "array" },
32
+ "completeness": {
33
+ "type": "object",
34
+ "required": ["complete", "omissions"],
35
+ "properties": {
36
+ "complete": { "type": "boolean" },
37
+ "omissions": { "type": "array", "items": {
38
+ "type": "object", "required": ["surface", "reason", "nextStep"],
39
+ "properties": { "surface": { "type": "string" }, "reason": { "type": "string" }, "nextStep": { "type": "string" } }
40
+ } }
41
+ }
42
+ },
43
+ "scopeTriage": { "type": "object" },
44
+ "maliciousness": { "type": "object" },
45
+ "codeOrigin": { "type": "object" },
46
+ "claims": { "type": "object" },
47
+ "verified": { "type": "object" },
48
+ "assessed": { "type": "array", "items": {
49
+ "type": "object", "required": ["id", "surface", "sha256", "report"],
50
+ "properties": {
51
+ "id": { "type": "string" },
52
+ "surface": { "enum": ["pull-request-title", "pull-request-body", "pull-request-diff-summary", "review-comment"] },
53
+ "sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
54
+ "report": { "type": "object" }
55
+ }
56
+ } },
57
+ "activeFindings": { "type": "array" },
58
+ "evidenceManifest": { "type": "array", "items": {
59
+ "type": "object", "required": ["sourceId", "sha256", "revision"],
60
+ "properties": {
61
+ "sourceId": { "type": "string" }, "sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
62
+ "revision": { "type": "string" }, "lineCoverage": { "type": "object" }
63
+ }
64
+ } },
65
+ "nextAction": {
66
+ "type": "object",
67
+ "required": ["proposed", "gate", "reason"],
68
+ "properties": {
69
+ "proposed": { "type": "string" },
70
+ "gate": { "type": "string" },
71
+ "reason": { "type": "string" }
72
+ }
73
+ },
74
+ "actionTrail": { "type": "array", "minItems": 1 },
75
+ "sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" }
76
+ }
77
+ }
@@ -16,8 +16,10 @@
16
16
  "source",
17
17
  "actor",
18
18
  "requestedAction",
19
+ "authorization",
19
20
  "policyProvenance",
20
21
  "assessed",
22
+ "completeness",
21
23
  "findings",
22
24
  "risk",
23
25
  "decision"
@@ -36,6 +38,20 @@
36
38
  "source": { "type": "object", "additionalProperties": true },
37
39
  "actor": { "type": "object", "additionalProperties": true },
38
40
  "requestedAction": { "type": "string" },
41
+ "authorization": {
42
+ "type": "object",
43
+ "additionalProperties": false,
44
+ "required": ["required", "checkpoint", "verified", "contentHash", "provenance", "reasons"],
45
+ "properties": {
46
+ "required": { "type": "boolean" },
47
+ "checkpoint": { "type": "string", "minLength": 1 },
48
+ "verified": { "type": "boolean" },
49
+ "contentHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
50
+ "provenance": { "type": "object", "additionalProperties": true },
51
+ "receiptId": { "type": "string" },
52
+ "reasons": { "type": "array", "uniqueItems": true, "items": { "type": "string" } }
53
+ }
54
+ },
39
55
  "policyProvenance": {
40
56
  "type": "object",
41
57
  "additionalProperties": false,
@@ -46,6 +62,42 @@
46
62
  }
47
63
  },
48
64
  "assessed": { "type": "boolean" },
65
+ "completeness": {
66
+ "type": "object",
67
+ "additionalProperties": false,
68
+ "required": ["complete", "reasons", "limits", "observed"],
69
+ "properties": {
70
+ "complete": { "type": "boolean" },
71
+ "reasons": {
72
+ "type": "array",
73
+ "uniqueItems": true,
74
+ "items": { "enum": ["part-limit", "input-character-limit", "occurrence-limit", "finding-limit"] }
75
+ },
76
+ "limits": {
77
+ "type": "object",
78
+ "additionalProperties": false,
79
+ "required": ["maxInputCharacters", "maxParts", "maxOccurrencesPerPattern", "maxFindings", "maxCustomRules", "maxPatternsPerRule"],
80
+ "properties": {
81
+ "maxInputCharacters": { "type": "integer", "minimum": 1 },
82
+ "maxParts": { "type": "integer", "minimum": 1 },
83
+ "maxOccurrencesPerPattern": { "type": "integer", "minimum": 1 },
84
+ "maxFindings": { "type": "integer", "minimum": 1 },
85
+ "maxCustomRules": { "type": "integer", "minimum": 1 },
86
+ "maxPatternsPerRule": { "type": "integer", "minimum": 1 }
87
+ }
88
+ },
89
+ "observed": {
90
+ "type": "object",
91
+ "additionalProperties": false,
92
+ "required": ["parts", "characters", "findings"],
93
+ "properties": {
94
+ "parts": { "type": "integer", "minimum": 0 },
95
+ "characters": { "type": "integer", "minimum": 0 },
96
+ "findings": { "type": "integer", "minimum": 0 }
97
+ }
98
+ }
99
+ }
100
+ },
49
101
  "findings": {
50
102
  "type": "array",
51
103
  "items": { "$ref": "#/definitions/finding" }
@@ -84,7 +136,7 @@
84
136
  "finding": {
85
137
  "type": "object",
86
138
  "additionalProperties": false,
87
- "required": ["ruleId", "ruleProvenance", "severity", "likelihood", "impact", "taxonomy", "partId", "context", "evidence", "suppressed", "matchedStatements"],
139
+ "required": ["ruleId", "ruleProvenance", "severity", "likelihood", "impact", "taxonomy", "partId", "occurrence", "context", "evidence", "suppressed", "matchedStatements"],
88
140
  "properties": {
89
141
  "ruleId": { "type": "string" },
90
142
  "ruleProvenance": { "type": "string" },
@@ -93,6 +145,24 @@
93
145
  "impact": { "type": "number", "minimum": 1, "maximum": 5 },
94
146
  "taxonomy": { "type": "array", "items": { "type": "string" } },
95
147
  "partId": { "type": "string" },
148
+ "occurrence": {
149
+ "type": "object",
150
+ "additionalProperties": false,
151
+ "required": ["start", "end", "match", "paragraphStart", "paragraphEnd", "patternIndexes"],
152
+ "properties": {
153
+ "start": { "type": "integer", "minimum": 0 },
154
+ "end": { "type": "integer", "minimum": 0 },
155
+ "match": { "type": "string" },
156
+ "paragraphStart": { "type": "integer", "minimum": 0 },
157
+ "paragraphEnd": { "type": "integer", "minimum": 0 },
158
+ "patternIndexes": {
159
+ "type": "array",
160
+ "minItems": 1,
161
+ "uniqueItems": true,
162
+ "items": { "type": "integer", "minimum": 0 }
163
+ }
164
+ }
165
+ },
96
166
  "context": { "enum": ["requested", "negative", "quoted", "documentation", "descriptive", "orchestrator-status"] },
97
167
  "source": { "type": "object", "additionalProperties": true },
98
168
  "evidence": { "type": "string" },
@@ -20,7 +20,7 @@
20
20
  * --rules-only Deploy only rules (skip agents)
21
21
  * --dry-run Show what would be deployed without writing
22
22
  * --force Overwrite existing files
23
- * --provider <name> Target provider: antigravity (agy), claude (default), openai, codex, cursor, opencode, copilot, factory, grokbot, grok-build, pi, omp, deepseek-harness (dsh), warp, devin, hermes, openhuman, or openclaw
23
+ * --provider <name> Target provider: antigravity (agy), claude (default), openai, codex, cursor, opencode, copilot, factory, grokbot, grok-build, muse, pi, omp, deepseek-harness (dsh), warp, devin, hermes, openhuman, or openclaw
24
24
  * --model <name> Override model for all tiers (blanket)
25
25
  * --reasoning-model <name> Override model for reasoning tasks
26
26
  * --coding-model <name> Override model for coding tasks
@@ -123,7 +123,7 @@ const PROVIDER_ALIASES = {
123
123
  'dsh': 'deepseek-harness',
124
124
  };
125
125
 
126
- const AVAILABLE_PROVIDERS = ['antigravity', 'claude', 'factory', 'codex', 'opencode', 'copilot', 'cursor', 'pi', 'omp', 'deepseek-harness', 'warp', 'windsurf', 'hermes', 'openclaw', 'openhuman', 'grokbot', 'grok-build'];
126
+ const AVAILABLE_PROVIDERS = ['antigravity', 'claude', 'factory', 'codex', 'opencode', 'copilot', 'cursor', 'pi', 'omp', 'deepseek-harness', 'warp', 'windsurf', 'hermes', 'openclaw', 'openhuman', 'grokbot', 'grok-build', 'muse'];
127
127
 
128
128
  const UNSUPPORTED_PROVIDER_HINTS = {
129
129
  'devin-cli': [
@@ -512,7 +512,9 @@ function parseArgs() {
512
512
  // stale copies of packaged ones.
513
513
  deploySource: null, // Managed-marker source; defaults to 'bundled'
514
514
  listingBudget: false, // Honor the provider startup-listing cap despite --copy-all (#2561)
515
- deployVersion: null // Managed-marker version; defaults to srcRoot package.json
515
+ deployVersion: null, // Managed-marker version; defaults to srcRoot package.json
516
+ mcp: false, // #228: opt-in MCP settings profile (Muse provider)
517
+ hooks: true, // #228: managed project hooks (Muse provider); --no-hooks opts out
516
518
  };
517
519
  for (let i = 0; i < args.length; i++) {
518
520
  const a = args[i];
@@ -549,6 +551,10 @@ function parseArgs() {
549
551
  // Structural opt-out: skip the migration without claiming the operator declined it (#2541).
550
552
  else if (a === '--no-commands-warning') cfg.warnOnSkippedCommandsMigration = false;
551
553
  else if (a === '--copy-all' || a === '--copy-standard-skills') cfg.copyStandardSkills = true;
554
+ // #228: Muse provider — explicit opt-in MCP settings profile, and the
555
+ // managed-hooks opt-out (default on, mirroring the Claude autoInstall policy).
556
+ else if (a === '--mcp') cfg.mcp = true;
557
+ else if (a === '--no-hooks') cfg.hooks = false;
552
558
  else if (a === '--deploy-source' && args[i + 1]) cfg.deploySource = String(args[++i]);
553
559
  else if (a === '--listing-budget') cfg.listingBudget = true;
554
560
  else if (a === '--deploy-version' && args[i + 1]) cfg.deployVersion = String(args[++i]);
@@ -591,6 +597,11 @@ Options:
591
597
  --filter-role <role> Only deploy agents of role: reasoning|coding|efficiency
592
598
  --save Save model config to project models.json
593
599
  --save-user Save model config to ~/.config/aiwg/models.json
600
+ --mcp Muse provider: opt in to the AIWG MCP settings profile
601
+ (merges the aiwg stdio server into user settings
602
+ mcp_servers; default off)
603
+ --no-hooks Muse provider: skip managed project hooks
604
+ (.muse/hooks.json; installed by default)
594
605
  --as-agents-md Aggregate to single AGENTS.md (Codex)
595
606
  --create-agents-md Create/update AGENTS.md template
596
607
  --skip-commands-migration Skip deleting the commands directory before skills deployment
@@ -618,7 +629,7 @@ Model Override Examples:
618
629
  aiwg use sdlc --reasoning opus --coding sonnet --efficiency haiku
619
630
 
620
631
  # Use a specific model ID for coding tier
621
- aiwg use sdlc --provider factory --coding-model gpt-5.3-codex
632
+ aiwg use sdlc --provider factory --coding-model gpt-5.6-terra
622
633
 
623
634
  # Blanket with per-tier override (reasoning uses opus, others use sonnet)
624
635
  aiwg use sdlc --model sonnet --reasoning opus
@@ -653,6 +664,7 @@ Providers (all deploy agents, commands, skills, and rules):
653
664
  Paths: .windsurf/agents/, .windsurf/workflows/, .windsurf/skills/, .windsurf/rules/
654
665
  grokbot - Grok Bot (AGENTS.md bridge; skills only with AIWG_GROKBOT_SKILLS_DIR)
655
666
  grok-build - Grok Build (experimental; .grok paths + $GROK_HOME; no bare grok alias)
667
+ muse - Muse Code (experimental; AGENTS.md bridge; .agents/skills + XDG user root; managed hooks, opt-in --mcp; no aliases)
656
668
  hermes - Hermes Agent (MCP-based integration)
657
669
  Skills: $HERMES_HOME/skills/ (user-global; defaults to ~/.hermes/skills/) | Agents: AGENTS.md
658
670
  Commands/Rules: served via MCP, not file-deployed
@@ -736,8 +748,8 @@ async function loadProvider(providerName) {
736
748
  * If the value is a known shorthand (opus, sonnet, haiku, inherit), resolve it
737
749
  * through the provider's shorthand map. Otherwise treat it as a literal model ID.
738
750
  *
739
- * @param {string|null} value - CLI flag value (e.g., "opus" or "claude-opus-4-6")
740
- * @param {object} shorthandMap - Provider shorthand map (e.g., { opus: "claude-opus-4-6" })
751
+ * @param {string|null} value - CLI flag value (e.g., "opus" or "claude-opus-5")
752
+ * @param {object} shorthandMap - Provider shorthand map (e.g., { opus: "claude-opus-5" })
741
753
  * @param {object} modelsConfig - Full models config from loadModelConfig()
742
754
  * @param {string} provider - Provider name
743
755
  * @param {string} tier - Tier name: "reasoning", "coding", or "efficiency"
@@ -1024,6 +1036,9 @@ export async function main() {
1024
1036
  // Replaces the legacy AIWG_COPY_STANDARD_SKILLS env var (removed rc.30).
1025
1037
  // Default (#1217) is no-copy + index-driven discovery.
1026
1038
  copyStandardSkills: cfg.copyStandardSkills === true,
1039
+ // #228: Muse provider hooks/MCP profile surface.
1040
+ mcp: cfg.mcp === true,
1041
+ hooks: cfg.hooks !== false,
1027
1042
  listingBudget: cfg.listingBudget === true,
1028
1043
  deployVersion: cfg.deployVersion || getDeployVersion(srcRoot),
1029
1044
  deploySource: cfg.deploySource || 'bundled',
@@ -306,8 +306,8 @@ export function loadModelConfig(srcRoot) {
306
306
  // Fallback to hardcoded defaults if no config found
307
307
  return {
308
308
  claude: {
309
- reasoning: { model: 'claude-opus-4-7' },
310
- coding: { model: 'claude-sonnet-4-6' },
309
+ reasoning: { model: 'claude-opus-5' },
310
+ coding: { model: 'claude-sonnet-5' },
311
311
  efficiency: { model: 'claude-haiku-4-5' }
312
312
  },
313
313
  factory: {
@@ -316,8 +316,8 @@ export function loadModelConfig(srcRoot) {
316
316
  efficiency: { model: 'light' }
317
317
  },
318
318
  shorthand: {
319
- 'opus': 'claude-opus-4-7',
320
- 'sonnet': 'claude-sonnet-4-6',
319
+ 'opus': 'claude-opus-5',
320
+ 'sonnet': 'claude-sonnet-5',
321
321
  'haiku': 'claude-haiku-4-5',
322
322
  'inherit': 'inherit'
323
323
  },
@@ -2269,6 +2269,9 @@ export function discoverAddons(srcRoot) {
2269
2269
 
2270
2270
  // Skip addons marked devOnly — they are contributor tools, not end-user deployables
2271
2271
  if (manifest.devOnly === true) continue;
2272
+ // explicitInstall addons deploy only when named (`aiwg use <addon>`), never
2273
+ // as part of a framework or `all` bulk deploy (#2641).
2274
+ if (manifest.explicitInstall === true) continue;
2272
2275
 
2273
2276
  addons.push({
2274
2277
  name: entry.name,
@@ -20,7 +20,7 @@
20
20
  * `.agents/skills/` only and prune the stale legacy home dir on deploy.
21
21
  *
22
22
  * Special features:
23
- * - Model replacement (opus/sonnet/haiku -> gpt-5.4/gpt-5.5/gpt-5.4-mini)
23
+ * - Model replacement (opus/sonnet/haiku -> catalog codex roles (gpt-5.6-sol/terra/luna))
24
24
  * - --as-agents-md aggregation option
25
25
  * - Delegates commands to deploy-prompts-codex.mjs (deploys to ~/.codex/prompts/)
26
26
  * - Delegates skills to deploy-skills-codex.mjs (deploys to .agents/skills/)
@@ -0,0 +1,7 @@
1
+ export interface GrokBuildUninstallReport {
2
+ planned: string[];
3
+ removed: string[];
4
+ skipped: string[];
5
+ }
6
+
7
+ export function uninstall(target: string, opts: { dryRun?: boolean; srcRoot: string }): GrokBuildUninstallReport;