opencode-swarm 7.150.0 → 7.151.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/cli/{config-doctor-96qyv31a.js → config-doctor-08zmx89c.js} +2 -2
  2. package/dist/cli/{core-xx0x5tfv.js → core-w0gjhw5q.js} +1 -1
  3. package/dist/cli/{curation-policy-nck9g765.js → curation-policy-fmvccdrg.js} +6 -6
  4. package/dist/cli/{curator-llm-factory-b83jsg02.js → curator-llm-factory-jmx72zhc.js} +28 -28
  5. package/dist/cli/{curator-frrehxxe.js → curator-twqjxden.js} +28 -28
  6. package/dist/cli/{evidence-summary-service-dv4bt2bx.js → evidence-summary-service-py66zgn4.js} +12 -12
  7. package/dist/cli/{gate-evidence-dkvs7aez.js → gate-evidence-ynhyzwsw.js} +6 -6
  8. package/dist/cli/{guardrail-explain-1zbk21fq.js → guardrail-explain-j9h5r8gh.js} +29 -29
  9. package/dist/cli/{guardrail-log-d20jewtr.js → guardrail-log-7995v5q5.js} +5 -5
  10. package/dist/cli/{guardrail-reset-wb3ba243.js → guardrail-reset-seextj6h.js} +28 -28
  11. package/dist/cli/{hive-promoter-10zv1b45.js → hive-promoter-a6xtvynw.js} +28 -28
  12. package/dist/cli/{index-k2sm9677.js → index-0q2mjxp2.js} +1 -1
  13. package/dist/cli/{index-bhg6brtw.js → index-1z7kx41f.js} +745 -8
  14. package/dist/cli/index-2xfffkk0.js +149 -0
  15. package/dist/cli/{index-mef0trex.js → index-4y7n76bn.js} +2 -1
  16. package/dist/cli/{index-htqs4p52.js → index-5jwbepcr.js} +1 -1
  17. package/dist/cli/{index-1wmd5wn1.js → index-5sh0kqf5.js} +4 -4
  18. package/dist/cli/{index-exn0ztsv.js → index-6zkm4p7p.js} +1 -1
  19. package/dist/cli/{index-x3pt7d0b.js → index-7w2b1z4j.js} +2 -2
  20. package/dist/cli/{index-s0xz2520.js → index-9d9p7bv2.js} +3 -3
  21. package/dist/cli/{index-prxrmc3b.js → index-9wpr1p2g.js} +2 -2
  22. package/dist/cli/{index-t54jt9cs.js → index-a2phfdsv.js} +1 -1
  23. package/dist/cli/{index-an922xj4.js → index-akef15kb.js} +7 -7
  24. package/dist/cli/{index-xggpmtfx.js → index-aw492hpn.js} +57 -40
  25. package/dist/cli/{index-dtmgt2xn.js → index-dvycdkhj.js} +1 -0
  26. package/dist/cli/{index-4sdhbxgq.js → index-f73px21b.js} +1 -1
  27. package/dist/cli/{index-0tn1kxej.js → index-fbj6wvew.js} +7 -7
  28. package/dist/cli/{index-apwcvfjt.js → index-frp2hwdg.js} +2 -2
  29. package/dist/cli/{index-zyv56em5.js → index-gqss5zbr.js} +3 -3
  30. package/dist/cli/{index-8cn6545x.js → index-hw93dwd0.js} +30 -30
  31. package/dist/cli/{index-n99s022c.js → index-jjpppdvb.js} +1 -1
  32. package/dist/cli/{index-qqs44wcp.js → index-kzdv0g9e.js} +79 -66
  33. package/dist/cli/{index-mnhagjvn.js → index-n35866rr.js} +4 -4
  34. package/dist/cli/{index-ma1p1w05.js → index-npzmqk01.js} +6 -6
  35. package/dist/cli/{index-w9pb72vg.js → index-qmwed766.js} +2 -2
  36. package/dist/cli/{index-g75rbw3e.js → index-t9h95vjd.js} +5 -5
  37. package/dist/cli/{index-1rpjd5na.js → index-twhhwe74.js} +1 -1
  38. package/dist/cli/{index-m8dn0qnm.js → index-txbd25bc.js} +1 -1
  39. package/dist/cli/{index-jb9tb1sd.js → index-v3gshkpz.js} +1 -1
  40. package/dist/cli/{index-r5djc1cc.js → index-xtyxnxf4.js} +5 -5
  41. package/dist/cli/{index-reknv4f9.js → index-xysb3ed7.js} +2 -2
  42. package/dist/cli/{index-1rww5k9e.js → index-z09fmg67.js} +4 -4
  43. package/dist/cli/{index-vy6q9d8j.js → index-z4bg1hv8.js} +1 -1
  44. package/dist/cli/index.js +28 -28
  45. package/dist/cli/{knowledge-escalator-pc7smwrd.js → knowledge-escalator-bqnkq3k7.js} +11 -11
  46. package/dist/cli/{knowledge-events-jmb3jm84.js → knowledge-events-rz3mt7gf.js} +9 -9
  47. package/dist/cli/{knowledge-link-mzn8x0qd.js → knowledge-link-v7hj1h8m.js} +5 -5
  48. package/dist/cli/{knowledge-store-wd6zh05h.js → knowledge-store-1m74b90j.js} +6 -6
  49. package/dist/cli/{knowledge-validator-2v6ar1wk.js → knowledge-validator-hfvhpkgk.js} +8 -8
  50. package/dist/cli/{pending-delegations-qzy6rnvw.js → pending-delegations-a2nmssr1.js} +3 -3
  51. package/dist/cli/{pr-subscriptions-q862pvz1.js → pr-subscriptions-7879nq5k.js} +3 -3
  52. package/dist/cli/{runner-1aygs98c.js → runner-7znestx4.js} +6 -6
  53. package/dist/cli/{scan-cursor-hr8e3jqj.js → scan-cursor-b36bzxkt.js} +7 -7
  54. package/dist/cli/{schema-g44y7s0w.js → schema-sc332es3.js} +1 -1
  55. package/dist/cli/{scope-persistence-0n2cv4kn.js → scope-persistence-phkj8438.js} +8 -8
  56. package/dist/cli/{skill-generator-0gmpxwgk.js → skill-generator-2d005nr6.js} +13 -13
  57. package/dist/cli/{telemetry-5deacb7w.js → telemetry-52pw5xac.js} +1 -1
  58. package/dist/cli/{worktree-collision-ownership-9v8e0dz7.js → worktree-collision-ownership-p31zm5k0.js} +3 -3
  59. package/dist/cli/{worktree-isolation-pcr5zv0c.js → worktree-isolation-zpgkd71h.js} +28 -28
  60. package/dist/commands/close.d.ts +1 -0
  61. package/dist/commands/registry.d.ts +2 -2
  62. package/dist/hooks/guardrails/audit-log.d.ts +70 -19
  63. package/dist/hooks/guardrails/helpers.d.ts +16 -1
  64. package/dist/hooks/guardrails/shell-audit-store.d.ts +211 -0
  65. package/dist/hooks/guardrails/tool-before.d.ts +0 -2
  66. package/dist/index.js +339 -319
  67. package/dist/observability/catalog.d.ts +7 -5
  68. package/dist/services/guardrail-log-service.d.ts +4 -0
  69. package/dist/telemetry.d.ts +22 -1
  70. package/package.json +2 -1
  71. package/dist/cli/index-ggs716fj.js +0 -110
@@ -0,0 +1,149 @@
1
+ // @bun
2
+ import {
3
+ getShellAuditFoldedSummary,
4
+ readShellAuditTail,
5
+ redactPath,
6
+ redactShellCommand
7
+ } from "./index-1z7kx41f.js";
8
+
9
+ // src/services/guardrail-log-service.ts
10
+ var BLOCK_TYPES = new Set([
11
+ "file_write",
12
+ "scope_violation",
13
+ "destructive_block"
14
+ ]);
15
+ var MAX_RENDERED_ENTRIES = 200;
16
+ var MAX_RENDERED_LINE_CHARS = 512;
17
+ function isBlockEntry(entry) {
18
+ if (entry.type === null || entry.type === undefined)
19
+ return false;
20
+ return BLOCK_TYPES.has(entry.type);
21
+ }
22
+ function redactSummary(entry) {
23
+ if (entry.type === "file_write" || entry.type === "scope_violation") {
24
+ const raw = entry.path ?? "";
25
+ return redactPath(raw);
26
+ }
27
+ if (entry.type === "destructive_block" || entry.type === "sandbox_wrap" || entry.type === "sandbox_skip" || entry.type === "shell" || entry.type === null || entry.type === undefined) {
28
+ const raw = entry.command ?? "";
29
+ return redactShellCommand(raw);
30
+ }
31
+ return "";
32
+ }
33
+ function sanitizeDisplayText(value) {
34
+ return value.replace(/\u001b\[[0-9;?]*[ -/]*[@-~]/g, "").replace(/[\u0000-\u0008\u000a-\u001f\u007f-\u009f]/g, "").replace(/[\u202a-\u202e\u2066-\u2069]/g, "").replace(/[\u200e\u200f\u200b-\u200d\u2060-\u2064\ufeff]/g, "");
35
+ }
36
+ function formatEntry(entry) {
37
+ const decisionType = entry.type ?? "shell";
38
+ const summary = redactSummary(entry);
39
+ let line = `- [${sanitizeDisplayText(entry.ts)}] ${sanitizeDisplayText(decisionType)} | agent: ${sanitizeDisplayText(entry.agent)} | ${sanitizeDisplayText(summary)}`;
40
+ if (entry.commandHash !== undefined) {
41
+ line += ` \xB7 fp:${sanitizeDisplayText(entry.commandHash)}`;
42
+ }
43
+ return line.length > MAX_RENDERED_LINE_CHARS ? `${line.slice(0, MAX_RENDERED_LINE_CHARS)}\u2026` : line;
44
+ }
45
+ function isPlainObject(value) {
46
+ return typeof value === "object" && value !== null && (value.constructor === Object || Object.getPrototypeOf(value) === null);
47
+ }
48
+ function parseEntries(raw) {
49
+ const lines = raw.split(/\r?\n/);
50
+ const entries = [];
51
+ for (const line of lines) {
52
+ if (line.trim().length === 0)
53
+ continue;
54
+ let parsed;
55
+ try {
56
+ parsed = JSON.parse(line);
57
+ } catch {
58
+ continue;
59
+ }
60
+ if (!isPlainObject(parsed))
61
+ continue;
62
+ if (typeof parsed.ts !== "string")
63
+ continue;
64
+ if (typeof parsed.sessionID !== "string")
65
+ continue;
66
+ if (typeof parsed.agent !== "string")
67
+ continue;
68
+ if (typeof parsed.tool !== "string")
69
+ continue;
70
+ const entry = {
71
+ ts: parsed.ts,
72
+ sessionID: parsed.sessionID,
73
+ agent: parsed.agent,
74
+ tool: parsed.tool
75
+ };
76
+ if (typeof parsed.type === "string") {
77
+ entry.type = parsed.type;
78
+ }
79
+ if (typeof parsed.command === "string") {
80
+ entry.command = parsed.command;
81
+ }
82
+ if (typeof parsed.path === "string") {
83
+ entry.path = parsed.path;
84
+ }
85
+ if (typeof parsed.commandHash === "string") {
86
+ entry.commandHash = parsed.commandHash;
87
+ }
88
+ entries.push(entry);
89
+ }
90
+ return entries;
91
+ }
92
+ async function handleGuardrailLog(directory, args) {
93
+ const window = readShellAuditTail(directory);
94
+ const entries = parseEntries(window.text);
95
+ const blocksOnly = args.includes("--blocks-only");
96
+ if (entries.length === 0) {
97
+ const folded2 = getShellAuditFoldedSummary(directory);
98
+ if (folded2 !== null && folded2.totalDecisions > 0) {
99
+ const note = `${folded2.totalDecisions} earlier decision(s) compacted into the audit manifest.`;
100
+ return blocksOnly ? `No guardrail block decisions in the read window; ${note}` : `No guardrail decisions in the read window; ${note}`;
101
+ }
102
+ return blocksOnly ? "No guardrail block decisions recorded yet." : "No guardrail decisions recorded yet.";
103
+ }
104
+ const filtered = blocksOnly ? entries.filter(isBlockEntry) : entries;
105
+ if (filtered.length === 0) {
106
+ const folded2 = getShellAuditFoldedSummary(directory);
107
+ if (blocksOnly && folded2 !== null) {
108
+ const foldedBlocks = [...BLOCK_TYPES].reduce((sum, type) => sum + (folded2.byType[type] ?? 0), 0);
109
+ if (foldedBlocks > 0) {
110
+ return `No guardrail block decisions in the read window; ${foldedBlocks} earlier block decision(s) compacted into the audit manifest.`;
111
+ }
112
+ }
113
+ if (blocksOnly) {
114
+ return "No guardrail block decisions recorded yet.";
115
+ }
116
+ return "No guardrail decisions recorded yet.";
117
+ }
118
+ filtered.sort((a, b) => {
119
+ const diff = b.ts.localeCompare(a.ts);
120
+ return diff === 0 ? 0 : diff;
121
+ });
122
+ const rendered = filtered.slice(0, MAX_RENDERED_ENTRIES);
123
+ const header = blocksOnly ? "# Guardrail Block Log (most-recent-first)" : "# Guardrail Decision Log (most-recent-first)";
124
+ const body = rendered.map(formatEntry).join(`
125
+ `);
126
+ const notes = [];
127
+ if (rendered.length < filtered.length) {
128
+ notes.push(`showing ${rendered.length} most recent of ${filtered.length} matching entries in the read window`);
129
+ }
130
+ if (window.truncated || window.coverage === "truncated") {
131
+ notes.push(`read window truncated to the newest bounded tail (older decisions may exist beyond it)`);
132
+ }
133
+ const folded = getShellAuditFoldedSummary(directory);
134
+ if (folded !== null && folded.totalDecisions > 0) {
135
+ notes.push(`${folded.totalDecisions} earlier decision(s) already compacted into the audit manifest (lifetime total)`);
136
+ }
137
+ if (notes.length === 0) {
138
+ return `${header}
139
+
140
+ ${body}`;
141
+ }
142
+ return `${header}
143
+
144
+ ${body}
145
+
146
+ ---
147
+ ${notes.join("; ")}.`;
148
+ }
149
+ export { handleGuardrailLog };
@@ -21,7 +21,7 @@ var package_default;
21
21
  var init_package = __esm(() => {
22
22
  package_default = {
23
23
  name: "opencode-swarm",
24
- version: "7.150.0",
24
+ version: "7.151.1",
25
25
  description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
26
26
  main: "dist/index.js",
27
27
  types: "dist/index.d.ts",
@@ -131,6 +131,7 @@ var init_package = __esm(() => {
131
131
  "check:events": "bun run scripts/check-event-contract.ts",
132
132
  "check:retention": "bun run scripts/check-retention-registry.ts",
133
133
  "check:core-events": "bun run scripts/check-core-events-usage.ts",
134
+ "check:shell-audit": "bun run scripts/check-shell-audit-usage.ts",
134
135
  "check:test-file-cap": "bun run scripts/check-test-file-cap.ts",
135
136
  "check:pending-fragment": "bun run scripts/check-pending-fragment.ts",
136
137
  "check:gate-portability": "bun run scripts/check-gate-portability.ts",
@@ -6,7 +6,7 @@ import {
6
6
  PluginConfigSchema,
7
7
  init_schema,
8
8
  stripKnownSwarmPrefix
9
- } from "./index-mef0trex.js";
9
+ } from "./index-4y7n76bn.js";
10
10
  import {
11
11
  ALL_AGENT_NAMES,
12
12
  init_constants
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  autoCommitDirty,
4
4
  cleanUntrackedFiles
5
- } from "./index-1rpjd5na.js";
5
+ } from "./index-twhhwe74.js";
6
6
  import {
7
7
  isPathWithinDeclaredScope,
8
8
  unsafePathTextReason
@@ -26,13 +26,13 @@ import {
26
26
  atomicWriteFile,
27
27
  taskEvidencePath,
28
28
  withTaskEvidenceLock
29
- } from "./index-apwcvfjt.js";
29
+ } from "./index-frp2hwdg.js";
30
30
  import {
31
31
  assertProjectRoot
32
- } from "./index-m8dn0qnm.js";
32
+ } from "./index-txbd25bc.js";
33
33
  import {
34
34
  telemetry
35
- } from "./index-xggpmtfx.js";
35
+ } from "./index-aw492hpn.js";
36
36
  import {
37
37
  exports_external,
38
38
  init_zod
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  telemetry
4
- } from "./index-xggpmtfx.js";
4
+ } from "./index-aw492hpn.js";
5
5
  import {
6
6
  init_logger,
7
7
  warn
@@ -12,14 +12,14 @@ import {
12
12
  detectPosixWrites,
13
13
  detectWindowsWrites,
14
14
  resolveWriteTargets
15
- } from "./index-qqs44wcp.js";
15
+ } from "./index-kzdv0g9e.js";
16
16
  import {
17
17
  checkFileAuthority,
18
18
  classifyFile,
19
19
  isInDeclaredScope,
20
20
  redactPath,
21
21
  redactShellCommand
22
- } from "./index-bhg6brtw.js";
22
+ } from "./index-1z7kx41f.js";
23
23
 
24
24
  // src/services/guardrail-explain-service.ts
25
25
  import path from "path";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  _internals,
4
4
  resolveWorktreeIsolationConfig
5
- } from "./index-w9pb72vg.js";
5
+ } from "./index-qmwed766.js";
6
6
  import {
7
7
  ApprovalEvidenceSchema,
8
8
  BaseEvidenceSchema,
@@ -42,7 +42,7 @@ import {
42
42
  loadPluginConfig,
43
43
  loadPluginConfigWithMeta,
44
44
  loadPluginConfigWithMetaAsync
45
- } from "./index-t54jt9cs.js";
45
+ } from "./index-a2phfdsv.js";
46
46
  import {
47
47
  AUTO_REVIEW_V8_BURN_IN_DECISION,
48
48
  AgentOverrideConfigSchema,
@@ -64,7 +64,7 @@ import {
64
64
  TurboConfigSchema,
65
65
  WorktreeIsolationConfigSchema,
66
66
  resolveAutoReviewConfig
67
- } from "./index-mef0trex.js";
67
+ } from "./index-4y7n76bn.js";
68
68
  import {
69
69
  ALL_AGENT_NAMES,
70
70
  ALL_SUBAGENT_NAMES,
@@ -9,11 +9,11 @@ import {
9
9
  } from "./index-y8552snf.js";
10
10
  import {
11
11
  atomicWriteFile
12
- } from "./index-apwcvfjt.js";
12
+ } from "./index-frp2hwdg.js";
13
13
  import {
14
14
  assertProjectRoot,
15
15
  withEvidenceLock
16
- } from "./index-m8dn0qnm.js";
16
+ } from "./index-txbd25bc.js";
17
17
  import {
18
18
  exports_external,
19
19
  init_zod
@@ -6,7 +6,7 @@ import {
6
6
  PluginConfigSchema,
7
7
  init_schema,
8
8
  resolveExternalSkillsConfig
9
- } from "./index-mef0trex.js";
9
+ } from "./index-4y7n76bn.js";
10
10
  import {
11
11
  GIT_BINARY_ENV_VAR,
12
12
  init_git_executable
@@ -3,7 +3,7 @@ import {
3
3
  EvaluationRunV1Schema,
4
4
  GateAuditResultV1Schema,
5
5
  getProtectedEvaluationRunIds
6
- } from "./index-prxrmc3b.js";
6
+ } from "./index-9wpr1p2g.js";
7
7
  import {
8
8
  loadDatabaseCtor
9
9
  } from "./index-134d35c1.js";
@@ -23,7 +23,7 @@ import {
23
23
  readTaskEvidence,
24
24
  readTaskEvidenceRaw,
25
25
  sanitizeTaskId
26
- } from "./index-1wmd5wn1.js";
26
+ } from "./index-5sh0kqf5.js";
27
27
  import {
28
28
  LedgerStaleWriterError,
29
29
  appendLedgerEvent,
@@ -43,10 +43,10 @@ import {
43
43
  replayFromLedgerWithStatus,
44
44
  takeSnapshotEvent,
45
45
  takeSnapshotWithRetry
46
- } from "./index-zyv56em5.js";
46
+ } from "./index-gqss5zbr.js";
47
47
  import {
48
48
  appendCoreEventSync
49
- } from "./index-exn0ztsv.js";
49
+ } from "./index-6zkm4p7p.js";
50
50
  import {
51
51
  init_executor,
52
52
  isUntrustedEnvKey,
@@ -68,7 +68,7 @@ import {
68
68
  } from "./index-r3mvsbtq.js";
69
69
  import {
70
70
  PlanSchema
71
- } from "./index-t54jt9cs.js";
71
+ } from "./index-a2phfdsv.js";
72
72
  import {
73
73
  GIT_BINARY_ENV_VAR,
74
74
  describeGitResolution,
@@ -79,10 +79,10 @@ import {
79
79
  assertProjectRoot,
80
80
  tryAcquireLock,
81
81
  withEvidenceLock
82
- } from "./index-m8dn0qnm.js";
82
+ } from "./index-txbd25bc.js";
83
83
  import {
84
84
  emit
85
- } from "./index-xggpmtfx.js";
85
+ } from "./index-aw492hpn.js";
86
86
  import {
87
87
  ZodError,
88
88
  init_zod