opencode-swarm 7.192.1 → 7.192.2

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 (115) hide show
  1. package/.opencode/skills/critic-gate/SKILL.md +2 -1
  2. package/.opencode/skills/execute/SKILL.md +1 -1
  3. package/README.md +5 -3
  4. package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
  5. package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
  6. package/dist/agents/critic.d.ts +2 -2
  7. package/dist/cli/{auto-checkpoint-kkakqktp.js → auto-checkpoint-735m8sz7.js} +8 -8
  8. package/dist/cli/{capability-probe-3mgxcfr9.js → capability-probe-rty1315z.js} +1 -1
  9. package/dist/cli/{checkpoint-cefw75xe.js → checkpoint-ptzc5jev.js} +16 -16
  10. package/dist/cli/{coder-settlement-tgdjczyp.js → coder-settlement-hh5165m1.js} +12 -12
  11. package/dist/cli/{config-doctor-sns7gbj2.js → config-doctor-wzzvhpcr.js} +15 -15
  12. package/dist/cli/{core-q8xvp8bw.js → core-0jarm64k.js} +3 -3
  13. package/dist/cli/{curation-policy-2q5xs0xg.js → curation-policy-yzdznz4z.js} +6 -6
  14. package/dist/cli/{curator-drift-1n3akmda.js → curator-drift-f4aqxz9e.js} +8 -8
  15. package/dist/cli/{curator-mgdsxrpv.js → curator-f7crssw2.js} +43 -43
  16. package/dist/cli/curator-llm-factory-kxnzvhje.js +82 -0
  17. package/dist/cli/{doctor-knowledge-receipt-phase-id-33bp8fcs.js → doctor-knowledge-receipt-phase-id-qvp1h3xv.js} +8 -8
  18. package/dist/cli/{evidence-summary-service-sb888pg8.js → evidence-summary-service-379skych.js} +19 -19
  19. package/dist/cli/{gate-evidence-rmk87c6m.js → gate-evidence-b4cfrrgn.js} +7 -7
  20. package/dist/cli/guardrail-explain-tcnfc3te.js +83 -0
  21. package/dist/cli/{guardrail-log-d18dcweh.js → guardrail-log-xe1evybk.js} +7 -7
  22. package/dist/cli/{guardrail-reset-1xeeetk7.js → guardrail-reset-jwx5hsgp.js} +43 -43
  23. package/dist/cli/{hive-promoter-44grgbq4.js → hive-promoter-nks9a9s8.js} +43 -43
  24. package/dist/cli/{index-xjqa26fs.js → index-0e1nxkte.js} +1 -1
  25. package/dist/cli/{index-63v3gmgr.js → index-1n7sf9gz.js} +2 -2
  26. package/dist/cli/{index-ajp4dabz.js → index-25zjz6kv.js} +5 -5
  27. package/dist/cli/{index-af3nmk6c.js → index-29z0w323.js} +7 -7
  28. package/dist/cli/{index-fsm9gv1p.js → index-2y7y0bxf.js} +43 -43
  29. package/dist/cli/{index-advcaree.js → index-4qreeddq.js} +4 -4
  30. package/dist/cli/{index-nb1c3342.js → index-4tfr4j1a.js} +7 -7
  31. package/dist/cli/{index-k6h66zm3.js → index-4twjbsfw.js} +2 -2
  32. package/dist/cli/{index-xw19x0t7.js → index-5dws7eyb.js} +1 -1
  33. package/dist/cli/{index-t0se5zwe.js → index-5gy5dc2n.js} +2 -2
  34. package/dist/cli/{index-pkgbrrn7.js → index-5s74qd5b.js} +1 -1
  35. package/dist/cli/{index-f32hs2vt.js → index-7a92gwbg.js} +4 -4
  36. package/dist/cli/{index-3txrbsa1.js → index-7bppy3ve.js} +4 -4
  37. package/dist/cli/{index-km4x7yfb.js → index-878ksabw.js} +11 -11
  38. package/dist/cli/{index-6shk3n43.js → index-89826pb5.js} +2 -2
  39. package/dist/cli/{index-ga1pcs49.js → index-8zj647hc.js} +1 -1
  40. package/dist/cli/{index-w52xyp9v.js → index-914wsfyy.js} +2 -2
  41. package/dist/cli/{index-b79a8pc2.js → index-a83gmv2e.js} +2 -2
  42. package/dist/cli/{index-d4cjbm4p.js → index-a9m7h5v0.js} +2 -2
  43. package/dist/cli/{index-50b8f6qz.js → index-asm2r4g2.js} +4 -4
  44. package/dist/cli/{index-yfmgbhwz.js → index-ba87gkb4.js} +20 -6
  45. package/dist/cli/{index-kvtwwj8b.js → index-bgzpw6ge.js} +1 -1
  46. package/dist/cli/{index-2wps5fec.js → index-br28jc6d.js} +3 -3
  47. package/dist/cli/{index-sgxbqba0.js → index-bzfn85kq.js} +119 -55
  48. package/dist/cli/{index-ysazjncb.js → index-cf003krm.js} +6 -6
  49. package/dist/cli/{index-4cm1p2kj.js → index-dt4cjxbz.js} +1 -1
  50. package/dist/cli/{index-f6e44xh2.js → index-dtet46e6.js} +7 -7
  51. package/dist/cli/{index-8bx6vhzk.js → index-e8k0v19e.js} +1 -1
  52. package/dist/cli/{index-mhqh2dc9.js → index-eaess7dm.js} +1 -1
  53. package/dist/cli/{index-r3gphy10.js → index-ejq082zj.js} +5 -5
  54. package/dist/cli/{index-ejfmgkt0.js → index-f54stv77.js} +3 -3
  55. package/dist/cli/{index-t433r606.js → index-fzqn2kk8.js} +2 -2
  56. package/dist/cli/{index-28zgn6sm.js → index-g8jd3h4r.js} +2 -2
  57. package/dist/cli/{index-s81tvz98.js → index-hcsz7bhg.js} +3 -3
  58. package/dist/cli/{index-jdw63xyd.js → index-k96fx4yw.js} +2 -2
  59. package/dist/cli/{index-9b6bxe9b.js → index-mbn4vn3z.js} +1 -1
  60. package/dist/cli/{index-7vnr5cmp.js → index-mtqwyjrg.js} +1 -1
  61. package/dist/cli/{index-025wg2re.js → index-nwswxes7.js} +3 -3
  62. package/dist/cli/{index-cje7tt58.js → index-q0bctx7k.js} +1 -1
  63. package/dist/cli/{index-vf6pqke0.js → index-qp3twbdz.js} +45 -45
  64. package/dist/cli/{index-vt8hk0pt.js → index-qta3x82z.js} +244 -106
  65. package/dist/cli/{index-v3bmeqqh.js → index-w8e73tp0.js} +12 -7
  66. package/dist/cli/{index-0yrsvwdf.js → index-w917g452.js} +6 -6
  67. package/dist/cli/{index-ney8qpg3.js → index-w9y482mp.js} +1 -1
  68. package/dist/cli/{index-edk2sgse.js → index-xen0j48x.js} +2 -2
  69. package/dist/cli/{index-867d9dhf.js → index-xf5v44qh.js} +3 -3
  70. package/dist/cli/{index-bwh9196c.js → index-ypvz2c60.js} +7 -7
  71. package/dist/cli/{index-95hc7xn4.js → index-yte4hqhv.js} +3 -3
  72. package/dist/cli/index.d.ts +2 -2
  73. package/dist/cli/index.js +60 -54
  74. package/dist/cli/{knowledge-escalator-naq700x5.js → knowledge-escalator-gzzr7cy2.js} +14 -14
  75. package/dist/cli/{knowledge-events-mmh5cya6.js → knowledge-events-b16yc189.js} +12 -12
  76. package/dist/cli/{knowledge-link-76egdqc9.js → knowledge-link-a5tvjqdt.js} +5 -5
  77. package/dist/cli/{knowledge-store-9dxr9jb9.js → knowledge-store-arj3by4h.js} +6 -6
  78. package/dist/cli/{knowledge-validator-eze3s6fn.js → knowledge-validator-b3qhjg0t.js} +8 -8
  79. package/dist/cli/{mcp-1x2tpk71.js → mcp-972t0jt0.js} +1 -1
  80. package/dist/cli/{model-preflight-hgb7kf5d.js → model-preflight-f1xvxk6e.js} +43 -43
  81. package/dist/cli/{pending-delegations-zg4q1k5q.js → pending-delegations-fv5xz799.js} +12 -12
  82. package/dist/cli/{pr-subscriptions-zw8aev5s.js → pr-subscriptions-4mcwj33s.js} +12 -12
  83. package/dist/cli/{pr-workflow-gate-dcbpd451.js → pr-workflow-gate-ap5cp211.js} +43 -43
  84. package/dist/cli/{runner-y529qa4d.js → runner-8qybgy4n.js} +6 -6
  85. package/dist/cli/{scan-cursor-pdxmndd0.js → scan-cursor-tceyckdx.js} +7 -7
  86. package/dist/cli/{schema-hzz32642.js → schema-pqevpe3m.js} +1 -1
  87. package/dist/cli/{scope-persistence-h4b6p951.js → scope-persistence-ta6ydymv.js} +15 -15
  88. package/dist/cli/{server-7gd7tqt5.js → server-s9bfax7h.js} +43 -43
  89. package/dist/cli/{skill-generator-7g7sca90.js → skill-generator-xdg4626x.js} +16 -16
  90. package/dist/cli/{snapshot-coordination-init-4q5ykq22.js → snapshot-coordination-init-wn0hnwyv.js} +43 -43
  91. package/dist/cli/{speckit-checkoff-5bfxs8r7.js → speckit-checkoff-8x139jpf.js} +4 -4
  92. package/dist/cli/{telemetry-9szfdfqv.js → telemetry-qaymh4gg.js} +1 -1
  93. package/dist/cli/{workspace-snapshot-nre732xt.js → workspace-snapshot-vfpnxjsp.js} +3 -3
  94. package/dist/cli/{worktree-collision-ownership-327d06qw.js → worktree-collision-ownership-as8hnnff.js} +13 -13
  95. package/dist/cli/{worktree-isolation-zqzs3wkk.js → worktree-isolation-7vrs8t9b.js} +49 -43
  96. package/dist/commands/turbo.d.ts +4 -3
  97. package/dist/config/constants.d.ts +2 -2
  98. package/dist/config/plan-schema.d.ts +16 -0
  99. package/dist/epic/phase-readiness.d.ts +4 -2
  100. package/dist/evaluation/ephemeral-agent-dispatcher.d.ts +11 -0
  101. package/dist/failures/provider-message-error.d.ts +32 -0
  102. package/dist/hooks/delegation-gate/worktree-isolation.d.ts +40 -0
  103. package/dist/hooks/delegation-gate.d.ts +13 -0
  104. package/dist/hooks/extractors.d.ts +2 -0
  105. package/dist/hooks/guardrails/index.d.ts +2 -0
  106. package/dist/hooks/guardrails/parallel-gate-attribution.d.ts +10 -0
  107. package/dist/index.js +415 -412
  108. package/dist/plan/ledger.d.ts +21 -3
  109. package/dist/sandbox/linux/bubblewrap-executor.d.ts +24 -0
  110. package/dist/services/skill-optimizer/store.d.ts +2 -2
  111. package/dist/tools/phase-complete.d.ts +4 -0
  112. package/opencode-swarm.schema.json +1 -1
  113. package/package.json +1 -1
  114. package/dist/cli/curator-llm-factory-tfn0cp68.js +0 -82
  115. package/dist/cli/guardrail-explain-n9ndp99q.js +0 -83
@@ -4,26 +4,26 @@ import {
4
4
  } from "./index-m9zzj4ee.js";
5
5
  import {
6
6
  validateSwarmPath
7
- } from "./index-mhqh2dc9.js";
7
+ } from "./index-eaess7dm.js";
8
8
  import {
9
9
  observeReceiptTransition
10
- } from "./index-k6h66zm3.js";
10
+ } from "./index-4twjbsfw.js";
11
11
  import {
12
12
  assertProjectRoot
13
13
  } from "./index-t7hmqgjy.js";
14
14
  import {
15
15
  emit
16
- } from "./index-7vnr5cmp.js";
16
+ } from "./index-mtqwyjrg.js";
17
17
  import {
18
18
  resolveActivePhaseId
19
19
  } from "./index-gx2vp8gx.js";
20
20
  import {
21
21
  loadPluginConfigWithMeta
22
- } from "./index-ney8qpg3.js";
22
+ } from "./index-w9y482mp.js";
23
23
  import {
24
24
  KnowledgeConfigSchema,
25
25
  init_schema
26
- } from "./index-b79a8pc2.js";
26
+ } from "./index-a83gmv2e.js";
27
27
 
28
28
  // src/utils/context-decisions.ts
29
29
  function extractContextDecisions(content) {
@@ -111,7 +111,12 @@ function extractCurrentPhase(planContent) {
111
111
  return null;
112
112
  }
113
113
  function extractCurrentPhaseFromPlan(plan) {
114
- const phaseId = resolveActivePhaseId(plan);
114
+ const label = composePhaseLabel(plan, resolveActivePhaseId(plan));
115
+ if (label === null)
116
+ return null;
117
+ return sanitizeContextText(label);
118
+ }
119
+ function composePhaseLabel(plan, phaseId) {
115
120
  const phase = plan.phases.find((p) => p.id === phaseId);
116
121
  if (!phase)
117
122
  return null;
@@ -122,7 +127,7 @@ function extractCurrentPhaseFromPlan(plan) {
122
127
  blocked: "BLOCKED"
123
128
  };
124
129
  const statusText = statusMap[phase.status] || "PENDING";
125
- return sanitizeContextText(`Phase ${phase.id}: ${phase.name} [${statusText}]`);
130
+ return `Phase ${phase.id}: ${phase.name} [${statusText}]`;
126
131
  }
127
132
  function extractPhaseIdFromLabel(label) {
128
133
  if (!label)
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  readKnowledgeEvents,
4
4
  recordKnowledgeEvent
5
- } from "./index-advcaree.js";
5
+ } from "./index-4qreeddq.js";
6
6
  import {
7
7
  queryHistoricalOutcomes
8
- } from "./index-v3bmeqqh.js";
8
+ } from "./index-w8e73tp0.js";
9
9
  import {
10
10
  jaccardBigram,
11
11
  readKnowledge,
@@ -13,7 +13,7 @@ import {
13
13
  resolveSwarmKnowledgePath,
14
14
  transactKnowledge,
15
15
  wordBigrams
16
- } from "./index-af3nmk6c.js";
16
+ } from "./index-29z0w323.js";
17
17
  import {
18
18
  init_knowledge_types,
19
19
  isActiveStatus
@@ -226,11 +226,11 @@ async function maybeQuarantineOnContradiction(directory, entryId, threshold, win
226
226
  alreadyInactive: true
227
227
  };
228
228
  }
229
- const { quarantineEntry } = await import("./knowledge-validator-eze3s6fn.js");
229
+ const { quarantineEntry } = await import("./knowledge-validator-b3qhjg0t.js");
230
230
  let policyConfig;
231
231
  try {
232
- const { KnowledgeConfigSchema } = await import("./schema-hzz32642.js");
233
- const { loadPluginConfigWithMeta } = await import("./index-s81tvz98.js");
232
+ const { KnowledgeConfigSchema } = await import("./schema-pqevpe3m.js");
233
+ const { loadPluginConfigWithMeta } = await import("./index-hcsz7bhg.js");
234
234
  const { config: loadedConfig } = loadPluginConfigWithMeta(directory);
235
235
  policyConfig = KnowledgeConfigSchema.parse(loadedConfig.knowledge ?? {});
236
236
  } catch {
@@ -15,7 +15,7 @@ import {
15
15
  init_schema,
16
16
  resolveExternalSkillsConfig,
17
17
  retiredEpicKeyReplacement
18
- } from "./index-b79a8pc2.js";
18
+ } from "./index-a83gmv2e.js";
19
19
  import {
20
20
  DangerousMergeKeyError,
21
21
  MAX_MERGE_DEPTH,
@@ -14,14 +14,14 @@ import {
14
14
  detectWindowsWrites,
15
15
  getSharedClassifierGuardrailBlock,
16
16
  resolveWriteTargets
17
- } from "./index-vt8hk0pt.js";
17
+ } from "./index-qta3x82z.js";
18
18
  import {
19
19
  checkFileAuthority,
20
20
  classifyFile,
21
21
  isInDeclaredScope,
22
22
  redactPath,
23
23
  redactShellCommand
24
- } from "./index-867d9dhf.js";
24
+ } from "./index-xf5v44qh.js";
25
25
 
26
26
  // src/services/guardrail-explain-service.ts
27
27
  import path from "path";
@@ -1,14 +1,14 @@
1
1
  // @bun
2
2
  import {
3
3
  observeStoreHealth
4
- } from "./index-k6h66zm3.js";
4
+ } from "./index-4twjbsfw.js";
5
5
  import {
6
6
  telemetry
7
- } from "./index-7vnr5cmp.js";
7
+ } from "./index-mtqwyjrg.js";
8
8
  import {
9
9
  init_schema,
10
10
  stripKnownSwarmPrefix
11
- } from "./index-b79a8pc2.js";
11
+ } from "./index-a83gmv2e.js";
12
12
  import {
13
13
  init_constants
14
14
  } from "./index-py8wpe81.js";
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  validateSwarmPath
4
- } from "./index-mhqh2dc9.js";
4
+ } from "./index-eaess7dm.js";
5
5
  import {
6
6
  bunWrite
7
7
  } from "./index-2s7dvzff.js";
@@ -18,21 +18,21 @@ import {
18
18
  releaseCoordinationLease,
19
19
  transitionCoordinationState,
20
20
  withCoordinationTransaction
21
- } from "./index-9b6bxe9b.js";
21
+ } from "./index-mbn4vn3z.js";
22
22
  import {
23
23
  getProjectDb,
24
24
  projectDbExists
25
- } from "./index-ga1pcs49.js";
25
+ } from "./index-8zj647hc.js";
26
26
  import {
27
27
  observeDelegationLedgerPressure
28
- } from "./index-k6h66zm3.js";
28
+ } from "./index-4twjbsfw.js";
29
29
  import {
30
30
  EvidenceLockTimeoutError,
31
31
  withEvidenceLock
32
- } from "./index-8bx6vhzk.js";
32
+ } from "./index-e8k0v19e.js";
33
33
  import {
34
34
  telemetry
35
- } from "./index-7vnr5cmp.js";
35
+ } from "./index-mtqwyjrg.js";
36
36
  import {
37
37
  canonicalRootKeyFresh,
38
38
  sameProjectRoot
@@ -4735,7 +4735,7 @@ async function reconcileLegacyCoderSettlements(directory, maxRecords, onReconcil
4735
4735
  const candidates = readDelegations(directory).filter((record) => record.normalizedAgent === "coder" && Boolean(record.legacyCoderSettlementTransfer) && Boolean(record.terminalResult)).slice(0, maxRecords);
4736
4736
  if (candidates.length === 0)
4737
4737
  return 0;
4738
- const { transferCoderSettlementToBackground } = await import("./coder-settlement-tgdjczyp.js");
4738
+ const { transferCoderSettlementToBackground } = await import("./coder-settlement-hh5165m1.js");
4739
4739
  let transferred = 0;
4740
4740
  for (const record of candidates) {
4741
4741
  try {
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  loadPlanJsonOnly
4
- } from "./index-km4x7yfb.js";
4
+ } from "./index-878ksabw.js";
5
5
  import {
6
6
  isCanonicalPathWithinRoot
7
7
  } from "./index-6b295cas.js";
@@ -14,7 +14,7 @@ import {
14
14
  legacyEpicIssuePath,
15
15
  migrateLegacyEpicConfig,
16
16
  resolveEpicConfig
17
- } from "./index-ney8qpg3.js";
17
+ } from "./index-w9y482mp.js";
18
18
  import {
19
19
  FALLBACK_MODELS_MAX,
20
20
  GATE_CONFIG_KNOWN_SECTION_KEYS,
@@ -24,7 +24,7 @@ import {
24
24
  init_schema,
25
25
  retiredEpicKeyReplacement,
26
26
  stripKnownSwarmPrefix
27
- } from "./index-b79a8pc2.js";
27
+ } from "./index-a83gmv2e.js";
28
28
  import {
29
29
  ALL_AGENT_NAMES,
30
30
  TOOL_NAME_SET,
@@ -29,7 +29,7 @@ export declare function isSafeLockFilePath(p: string): boolean;
29
29
  * Defense in depth:
30
30
  * 1. Canonicalize via safeRealpathSync (realpathSync with ENOENT→fallback)
31
31
  * so the path a symlinked leaf actually resolves to is what we validate.
32
- * 2. Refuse root, home, or shorter-than-home paths.
32
+ * 2. Refuse the filesystem root, home, or any ancestor of home.
33
33
  * 3. Require ≥ 3 non-empty segments (rejects pathological
34
34
  * XDG_CONFIG_HOME='/' which yields '/opencode/opencode-swarm', 2 segments).
35
35
  * 4. Require basename === 'opencode-swarm'. With no explicit configured
@@ -48,7 +48,7 @@ export declare function isSafePromptsDir(p: string, configuredDir?: string): boo
48
48
  * `opencode-swarm` directory — hence a dedicated guard.
49
49
  *
50
50
  * Defense in depth: canonicalize via safeRealpathSync; refuse root/home/
51
- * shorter-than-home; require basename === 'opencode-swarm.json'. With no
51
+ * home ancestors; require basename === 'opencode-swarm.json'. With no
52
52
  * explicit configured root, the parent directory's basename must equal the
53
53
  * config dir's basename. Cleanup callers otherwise bind the canonical parent
54
54
  * to their exact configured root.
package/dist/cli/index.js CHANGED
@@ -14,77 +14,77 @@ import {
14
14
  readCachePackageVersion,
15
15
  resolveCommand,
16
16
  safeRealpathSync
17
- } from "./index-vt8hk0pt.js";
18
- import"./index-867d9dhf.js";
19
- import"./index-95hc7xn4.js";
20
- import"./index-ajp4dabz.js";
17
+ } from "./index-qta3x82z.js";
18
+ import"./index-xf5v44qh.js";
19
+ import"./index-yte4hqhv.js";
20
+ import"./index-25zjz6kv.js";
21
21
  import"./index-j2vv0h13.js";
22
- import"./index-xjqa26fs.js";
23
- import"./index-t0se5zwe.js";
22
+ import"./index-0e1nxkte.js";
23
+ import"./index-5gy5dc2n.js";
24
24
  import"./index-txdagbh7.js";
25
- import"./index-w52xyp9v.js";
25
+ import"./index-914wsfyy.js";
26
26
  import"./index-rdec0y3z.js";
27
- import"./index-2wps5fec.js";
28
- import"./index-nb1c3342.js";
29
- import"./index-50b8f6qz.js";
30
- import"./index-0yrsvwdf.js";
31
- import"./index-t433r606.js";
32
- import"./index-f6e44xh2.js";
27
+ import"./index-br28jc6d.js";
28
+ import"./index-4tfr4j1a.js";
29
+ import"./index-asm2r4g2.js";
30
+ import"./index-w917g452.js";
31
+ import"./index-fzqn2kk8.js";
32
+ import"./index-dtet46e6.js";
33
33
  import"./index-cjapb4hy.js";
34
- import"./index-28zgn6sm.js";
34
+ import"./index-g8jd3h4r.js";
35
35
  import"./index-pt7h91zc.js";
36
36
  import"./index-q7sjgr1y.js";
37
- import"./index-ysazjncb.js";
38
- import"./index-km4x7yfb.js";
37
+ import"./index-cf003krm.js";
38
+ import"./index-878ksabw.js";
39
39
  import"./index-6b295cas.js";
40
40
  import"./index-9nyqt3kb.js";
41
- import"./index-pkgbrrn7.js";
41
+ import"./index-5s74qd5b.js";
42
42
  import"./index-v3bmwmqw.js";
43
- import"./index-jdw63xyd.js";
44
- import"./index-f32hs2vt.js";
45
- import"./index-ejfmgkt0.js";
43
+ import"./index-k96fx4yw.js";
44
+ import"./index-7a92gwbg.js";
45
+ import"./index-f54stv77.js";
46
46
  import"./index-g4fs6z4e.js";
47
- import"./index-bwh9196c.js";
48
- import"./index-advcaree.js";
49
- import"./index-v3bmeqqh.js";
47
+ import"./index-ypvz2c60.js";
48
+ import"./index-4qreeddq.js";
49
+ import"./index-w8e73tp0.js";
50
50
  import"./index-m9zzj4ee.js";
51
- import"./index-mhqh2dc9.js";
51
+ import"./index-eaess7dm.js";
52
52
  import"./index-2s7dvzff.js";
53
- import"./index-3txrbsa1.js";
54
- import"./index-xw19x0t7.js";
53
+ import"./index-7bppy3ve.js";
54
+ import"./index-5dws7eyb.js";
55
55
  import"./index-rtry5xyf.js";
56
- import"./index-6shk3n43.js";
56
+ import"./index-89826pb5.js";
57
57
  import"./index-g22dps7x.js";
58
58
  import"./index-0725jpp7.js";
59
- import"./index-r3gphy10.js";
60
- import"./index-yfmgbhwz.js";
61
- import"./index-d4cjbm4p.js";
62
- import"./index-4cm1p2kj.js";
63
- import"./index-9b6bxe9b.js";
64
- import"./index-ga1pcs49.js";
59
+ import"./index-ejq082zj.js";
60
+ import"./index-ba87gkb4.js";
61
+ import"./index-a9m7h5v0.js";
62
+ import"./index-dt4cjxbz.js";
63
+ import"./index-mbn4vn3z.js";
64
+ import"./index-8zj647hc.js";
65
65
  import"./index-ry16d01s.js";
66
66
  import"./index-rdm3px0g.js";
67
67
  import"./index-7pmbnjvj.js";
68
- import"./index-k6h66zm3.js";
69
- import"./index-af3nmk6c.js";
68
+ import"./index-4twjbsfw.js";
69
+ import"./index-29z0w323.js";
70
70
  import"./index-vzm6zre7.js";
71
71
  import"./index-ae75rja9.js";
72
- import"./index-kvtwwj8b.js";
73
- import"./index-63v3gmgr.js";
74
- import"./index-8bx6vhzk.js";
72
+ import"./index-bgzpw6ge.js";
73
+ import"./index-1n7sf9gz.js";
74
+ import"./index-e8k0v19e.js";
75
75
  import"./index-t7hmqgjy.js";
76
- import"./index-7vnr5cmp.js";
76
+ import"./index-mtqwyjrg.js";
77
77
  import"./index-fzpt2djt.js";
78
78
  import"./index-ejhxgyvm.js";
79
79
  import"./index-7g4c7s5r.js";
80
- import"./index-025wg2re.js";
80
+ import"./index-nwswxes7.js";
81
81
  import"./index-gx2vp8gx.js";
82
- import"./index-ney8qpg3.js";
82
+ import"./index-w9y482mp.js";
83
83
  import"./index-zxdawwc7.js";
84
84
  import {
85
85
  init_package,
86
86
  package_default
87
- } from "./index-b79a8pc2.js";
87
+ } from "./index-a83gmv2e.js";
88
88
  import {
89
89
  DEFAULT_AGENT_CONFIGS,
90
90
  init_constants
@@ -92,7 +92,7 @@ import {
92
92
  import"./index-bk5tah7q.js";
93
93
  import"./index-gknz3bv1.js";
94
94
  import"./index-zpsr8rpc.js";
95
- import"./index-sgxbqba0.js";
95
+ import"./index-bzfn85kq.js";
96
96
  import"./index-9rwhas09.js";
97
97
  import"./index-zgwm4ryv.js";
98
98
  import {
@@ -129,6 +129,17 @@ function normalizePathForComparison(value) {
129
129
  const normalized = path.normalize(path.resolve(value));
130
130
  return process.platform === "win32" ? normalized.toLowerCase() : normalized;
131
131
  }
132
+ function isFilesystemRootOrHomeAncestor(resolved) {
133
+ const target = normalizePathForComparison(resolved);
134
+ if (target === normalizePathForComparison(path.parse(target).root)) {
135
+ return true;
136
+ }
137
+ const home = normalizePathForComparison(os.homedir());
138
+ if (target === home)
139
+ return true;
140
+ const prefix = target.endsWith(path.sep) ? target : `${target}${path.sep}`;
141
+ return home.startsWith(prefix);
142
+ }
132
143
  function isExactConfiguredConfigChild(canonicalTarget, configuredDir) {
133
144
  const canonicalConfigDir = safeRealpathSync(configuredDir, configuredDir);
134
145
  const canonicalParent = safeRealpathSync(path.dirname(canonicalTarget), path.dirname(canonicalTarget));
@@ -145,8 +156,7 @@ function hasSafeConfigArtifactParent(resolved, configuredDir) {
145
156
  }
146
157
  function isSafeCachePath(p) {
147
158
  const resolved = path.resolve(p);
148
- const home = path.resolve(os.homedir());
149
- if (resolved === "/" || resolved === home || resolved.length <= home.length) {
159
+ if (isFilesystemRootOrHomeAncestor(resolved)) {
150
160
  return false;
151
161
  }
152
162
  if (segmentDepthBelowRoot(resolved) < 4) {
@@ -168,8 +178,7 @@ function isSafeCachePath(p) {
168
178
  }
169
179
  function isSafeLockFilePath(p) {
170
180
  const resolved = path.resolve(p);
171
- const home = path.resolve(os.homedir());
172
- if (resolved === "/" || resolved === home || resolved.length <= home.length) {
181
+ if (isFilesystemRootOrHomeAncestor(resolved)) {
173
182
  return false;
174
183
  }
175
184
  if (segmentDepthBelowRoot(resolved) < 4) {
@@ -195,8 +204,7 @@ function isSafePromptsDir(p, configuredDir) {
195
204
  return false;
196
205
  }
197
206
  const resolved = path.resolve(canonical);
198
- const home = path.resolve(os.homedir());
199
- if (resolved === "/" || resolved === home || resolved.length <= home.length) {
207
+ if (isFilesystemRootOrHomeAncestor(resolved)) {
200
208
  return false;
201
209
  }
202
210
  if (segmentDepthBelowRoot(resolved) < 3) {
@@ -216,8 +224,7 @@ function isSafePluginConfigPath(p, configuredDir) {
216
224
  return false;
217
225
  }
218
226
  const resolved = path.resolve(canonical);
219
- const home = path.resolve(os.homedir());
220
- if (resolved === "/" || resolved === home || resolved.length <= home.length) {
227
+ if (isFilesystemRootOrHomeAncestor(resolved)) {
221
228
  return false;
222
229
  }
223
230
  if (segmentDepthBelowRoot(resolved) < 3) {
@@ -237,8 +244,7 @@ function isSafeInstallBackupPath(p, configuredDir) {
237
244
  return false;
238
245
  }
239
246
  const resolved = path.resolve(canonical);
240
- const home = path.resolve(os.homedir());
241
- if (resolved === "/" || resolved === home || resolved.length <= home.length) {
247
+ if (isFilesystemRootOrHomeAncestor(resolved)) {
242
248
  return false;
243
249
  }
244
250
  if (segmentDepthBelowRoot(resolved) < 3) {
@@ -910,7 +916,7 @@ async function main() {
910
916
  const exitCode = await run(["ci", ...args.slice(1)]);
911
917
  process.exit(exitCode);
912
918
  } else if (command === "mcp") {
913
- const { handleMcpCommand } = await import("./mcp-1x2tpk71.js");
919
+ const { handleMcpCommand } = await import("./mcp-972t0jt0.js");
914
920
  const exitCode = await handleMcpCommand(args.slice(1));
915
921
  process.exit(exitCode);
916
922
  } else {
@@ -9,32 +9,32 @@ import {
9
9
  maybeEscalateOnViolation,
10
10
  maybeQuarantineOnContradiction,
11
11
  readRecentEscalations
12
- } from "./index-0yrsvwdf.js";
13
- import"./index-advcaree.js";
14
- import"./index-v3bmeqqh.js";
12
+ } from "./index-w917g452.js";
13
+ import"./index-4qreeddq.js";
14
+ import"./index-w8e73tp0.js";
15
15
  import"./index-m9zzj4ee.js";
16
- import"./index-mhqh2dc9.js";
16
+ import"./index-eaess7dm.js";
17
17
  import"./index-2s7dvzff.js";
18
- import"./index-6shk3n43.js";
18
+ import"./index-89826pb5.js";
19
19
  import"./index-g22dps7x.js";
20
20
  import"./index-0725jpp7.js";
21
- import"./index-k6h66zm3.js";
22
- import"./index-af3nmk6c.js";
21
+ import"./index-4twjbsfw.js";
22
+ import"./index-29z0w323.js";
23
23
  import"./index-vzm6zre7.js";
24
24
  import"./index-ae75rja9.js";
25
- import"./index-kvtwwj8b.js";
26
- import"./index-63v3gmgr.js";
27
- import"./index-8bx6vhzk.js";
25
+ import"./index-bgzpw6ge.js";
26
+ import"./index-1n7sf9gz.js";
27
+ import"./index-e8k0v19e.js";
28
28
  import"./index-t7hmqgjy.js";
29
- import"./index-7vnr5cmp.js";
29
+ import"./index-mtqwyjrg.js";
30
30
  import"./index-fzpt2djt.js";
31
31
  import"./index-ejhxgyvm.js";
32
32
  import"./index-7g4c7s5r.js";
33
- import"./index-025wg2re.js";
33
+ import"./index-nwswxes7.js";
34
34
  import"./index-gx2vp8gx.js";
35
- import"./index-ney8qpg3.js";
35
+ import"./index-w9y482mp.js";
36
36
  import"./index-zxdawwc7.js";
37
- import"./index-b79a8pc2.js";
37
+ import"./index-a83gmv2e.js";
38
38
  import"./index-py8wpe81.js";
39
39
  import"./index-bk5tah7q.js";
40
40
  import"./index-gknz3bv1.js";
@@ -29,29 +29,29 @@ import {
29
29
  resolveKnowledgeCounterBaselinePath,
30
30
  resolveKnowledgeEventsPath,
31
31
  resolveLegacyApplicationLogPath
32
- } from "./index-advcaree.js";
33
- import"./index-v3bmeqqh.js";
32
+ } from "./index-4qreeddq.js";
33
+ import"./index-w8e73tp0.js";
34
34
  import"./index-m9zzj4ee.js";
35
- import"./index-mhqh2dc9.js";
35
+ import"./index-eaess7dm.js";
36
36
  import"./index-2s7dvzff.js";
37
- import"./index-6shk3n43.js";
37
+ import"./index-89826pb5.js";
38
38
  import"./index-g22dps7x.js";
39
39
  import"./index-0725jpp7.js";
40
- import"./index-k6h66zm3.js";
40
+ import"./index-4twjbsfw.js";
41
41
  import"./index-ae75rja9.js";
42
- import"./index-kvtwwj8b.js";
43
- import"./index-63v3gmgr.js";
44
- import"./index-8bx6vhzk.js";
42
+ import"./index-bgzpw6ge.js";
43
+ import"./index-1n7sf9gz.js";
44
+ import"./index-e8k0v19e.js";
45
45
  import"./index-t7hmqgjy.js";
46
- import"./index-7vnr5cmp.js";
46
+ import"./index-mtqwyjrg.js";
47
47
  import"./index-fzpt2djt.js";
48
48
  import"./index-ejhxgyvm.js";
49
49
  import"./index-7g4c7s5r.js";
50
- import"./index-025wg2re.js";
50
+ import"./index-nwswxes7.js";
51
51
  import"./index-gx2vp8gx.js";
52
- import"./index-ney8qpg3.js";
52
+ import"./index-w9y482mp.js";
53
53
  import"./index-zxdawwc7.js";
54
- import"./index-b79a8pc2.js";
54
+ import"./index-a83gmv2e.js";
55
55
  import"./index-py8wpe81.js";
56
56
  import"./index-bk5tah7q.js";
57
57
  import"./index-gknz3bv1.js";
@@ -12,15 +12,15 @@ import {
12
12
  resolveLinkDir,
13
13
  sanitizeLinkId,
14
14
  writeLinkPointer
15
- } from "./index-kvtwwj8b.js";
16
- import"./index-63v3gmgr.js";
17
- import"./index-8bx6vhzk.js";
15
+ } from "./index-bgzpw6ge.js";
16
+ import"./index-1n7sf9gz.js";
17
+ import"./index-e8k0v19e.js";
18
18
  import"./index-t7hmqgjy.js";
19
- import"./index-7vnr5cmp.js";
19
+ import"./index-mtqwyjrg.js";
20
20
  import"./index-fzpt2djt.js";
21
21
  import"./index-ejhxgyvm.js";
22
22
  import"./index-7g4c7s5r.js";
23
- import"./index-025wg2re.js";
23
+ import"./index-nwswxes7.js";
24
24
  import"./index-gknz3bv1.js";
25
25
  import"./index-zpsr8rpc.js";
26
26
  import"./index-zgwm4ryv.js";
@@ -43,20 +43,20 @@ import {
43
43
  transactKnowledge,
44
44
  transactKnowledgeWithCas,
45
45
  wordBigrams
46
- } from "./index-af3nmk6c.js";
46
+ } from "./index-29z0w323.js";
47
47
  import"./index-vzm6zre7.js";
48
48
  import {
49
49
  resolveHiveDataDir
50
50
  } from "./index-ae75rja9.js";
51
- import"./index-kvtwwj8b.js";
52
- import"./index-63v3gmgr.js";
53
- import"./index-8bx6vhzk.js";
51
+ import"./index-bgzpw6ge.js";
52
+ import"./index-1n7sf9gz.js";
53
+ import"./index-e8k0v19e.js";
54
54
  import"./index-t7hmqgjy.js";
55
- import"./index-7vnr5cmp.js";
55
+ import"./index-mtqwyjrg.js";
56
56
  import"./index-fzpt2djt.js";
57
57
  import"./index-ejhxgyvm.js";
58
58
  import"./index-7g4c7s5r.js";
59
- import"./index-025wg2re.js";
59
+ import"./index-nwswxes7.js";
60
60
  import"./index-bk5tah7q.js";
61
61
  import"./index-gknz3bv1.js";
62
62
  import"./index-zpsr8rpc.js";
@@ -23,21 +23,21 @@ import {
23
23
  validateLesson,
24
24
  validateSkillCandidatePath,
25
25
  validateSkillPath
26
- } from "./index-3txrbsa1.js";
27
- import"./index-xw19x0t7.js";
26
+ } from "./index-7bppy3ve.js";
27
+ import"./index-5dws7eyb.js";
28
28
  import"./index-rtry5xyf.js";
29
- import"./index-af3nmk6c.js";
29
+ import"./index-29z0w323.js";
30
30
  import"./index-vzm6zre7.js";
31
31
  import"./index-ae75rja9.js";
32
- import"./index-kvtwwj8b.js";
33
- import"./index-63v3gmgr.js";
34
- import"./index-8bx6vhzk.js";
32
+ import"./index-bgzpw6ge.js";
33
+ import"./index-1n7sf9gz.js";
34
+ import"./index-e8k0v19e.js";
35
35
  import"./index-t7hmqgjy.js";
36
- import"./index-7vnr5cmp.js";
36
+ import"./index-mtqwyjrg.js";
37
37
  import"./index-fzpt2djt.js";
38
38
  import"./index-ejhxgyvm.js";
39
39
  import"./index-7g4c7s5r.js";
40
- import"./index-025wg2re.js";
40
+ import"./index-nwswxes7.js";
41
41
  import"./index-bk5tah7q.js";
42
42
  import"./index-gknz3bv1.js";
43
43
  import"./index-zpsr8rpc.js";
@@ -95,7 +95,7 @@ function resolveMcpRoot(input) {
95
95
  }
96
96
  var _internals = {
97
97
  runMcpServer: async (options) => {
98
- const { runMcpServer } = await import("./server-7gd7tqt5.js");
98
+ const { runMcpServer } = await import("./server-s9bfax7h.js");
99
99
  return runMcpServer(options);
100
100
  }
101
101
  };