opencode-swarm 7.140.4 → 7.140.5

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 (95) hide show
  1. package/.opencode/skills/plan/SKILL.md +40 -12
  2. package/dist/agents/architect.d.ts +2 -1
  3. package/dist/background/pending-delegations.d.ts +5 -0
  4. package/dist/cli/{config-doctor-qqe6172n.js → config-doctor-5vzpq4qa.js} +3 -3
  5. package/dist/cli/{core-52k057mf.js → core-xjzdc56e.js} +2 -2
  6. package/dist/cli/{curation-policy-9291bdat.js → curation-policy-avvb56x2.js} +6 -6
  7. package/dist/cli/{curator-04xqq68e.js → curator-5nytvg7p.js} +36 -36
  8. package/dist/cli/curator-llm-factory-rds75zhj.js +61 -0
  9. package/dist/cli/{evidence-summary-service-em58myd7.js → evidence-summary-service-zq4gyx6g.js} +14 -11
  10. package/dist/cli/gate-evidence-smn2wqft.js +51 -0
  11. package/dist/cli/guardrail-explain-an7jvam1.js +62 -0
  12. package/dist/cli/{guardrail-log-vb5zkegf.js → guardrail-log-0hnd2k9v.js} +4 -4
  13. package/dist/cli/{hive-promoter-z09khawt.js → hive-promoter-qe8pqg79.js} +36 -36
  14. package/dist/cli/{index-vrmkg8fm.js → index-01ggt2mj.js} +9 -9
  15. package/dist/cli/{index-hfwzxh3j.js → index-0r2m0vbq.js} +12 -10
  16. package/dist/cli/{index-v3xhc7kg.js → index-0rx9t9w8.js} +1 -1
  17. package/dist/cli/{index-hz0refz4.js → index-2bg901qt.js} +70 -29
  18. package/dist/cli/{index-7begd9aq.js → index-386ts4tm.js} +4 -4
  19. package/dist/cli/{index-v3x7j9ey.js → index-8rp1y4ab.js} +2 -2
  20. package/dist/cli/{index-35qep0v7.js → index-912qz4y0.js} +88 -88
  21. package/dist/cli/{index-2rb3x0fk.js → index-affh1gtg.js} +7 -7
  22. package/dist/cli/{index-c5kr20nz.js → index-c432knmy.js} +1 -1
  23. package/dist/cli/{index-v1an91bq.js → index-e0mpz2j3.js} +5 -5
  24. package/dist/cli/{index-bfhwtdsw.js → index-epvhf50h.js} +3 -3
  25. package/dist/cli/{index-s8g7jh1k.js → index-ex7r16gc.js} +2 -2
  26. package/dist/cli/{index-tj04dj06.js → index-jm4cpp4n.js} +2 -2
  27. package/dist/cli/{index-hxvkfx6t.js → index-jqsfsqbx.js} +15 -2
  28. package/dist/cli/{index-hfjvepk2.js → index-kb5q9v34.js} +3 -3
  29. package/dist/cli/{index-bn17ycxn.js → index-m9xrdjn0.js} +1 -1
  30. package/dist/cli/{index-djbhe0yh.js → index-mm2egvdt.js} +38 -38
  31. package/dist/cli/{index-pp5m7xga.js → index-nwrwy8eb.js} +70 -34
  32. package/dist/cli/index-nyjtzmsj.js +43 -0
  33. package/dist/cli/{index-4hp8nvwb.js → index-p8kk34am.js} +3 -3
  34. package/dist/cli/{index-ysa38bnr.js → index-ptn13xjn.js} +3 -3
  35. package/dist/cli/{index-1kyex7z2.js → index-qwm6vdyv.js} +32 -1
  36. package/dist/cli/{index-dtam929z.js → index-qy1nq52t.js} +1 -1
  37. package/dist/cli/{index-rrb6cz2f.js → index-s1v0wza5.js} +6 -2
  38. package/dist/cli/{index-w4etfamq.js → index-t5pytnca.js} +2 -2
  39. package/dist/cli/index-tjqzr3jc.js +623 -0
  40. package/dist/cli/{index-mrpfd1jx.js → index-vh05t3w5.js} +1 -1
  41. package/dist/cli/{index-ryq97w1x.js → index-wkt9fj06.js} +4 -4
  42. package/dist/cli/{index-wk8s1m7b.js → index-wrb0gykj.js} +217 -15
  43. package/dist/cli/{index-arza4m4j.js → index-z7h37d63.js} +2 -2
  44. package/dist/cli/{index-a1fjhx4w.js → index-z90nvqj3.js} +37836 -35986
  45. package/dist/cli/{index-b8zgtz81.js → index-zsrtt42s.js} +34 -1
  46. package/dist/cli/{index-mpytsq6k.js → index-ztgn70jz.js} +2 -2
  47. package/dist/cli/index.js +35 -35
  48. package/dist/cli/{knowledge-escalator-gdjnwszd.js → knowledge-escalator-4pfrc902.js} +12 -12
  49. package/dist/cli/{knowledge-events-581x4q7n.js → knowledge-events-3zkfnksk.js} +10 -10
  50. package/dist/cli/{knowledge-link-axx45d1h.js → knowledge-link-m9p80f4r.js} +5 -5
  51. package/dist/cli/{knowledge-store-ttg33482.js → knowledge-store-dpqgvvjt.js} +6 -6
  52. package/dist/cli/{knowledge-validator-8kywqt8b.js → knowledge-validator-2c7w87dk.js} +8 -8
  53. package/dist/cli/{pending-delegations-btwqsvz4.js → pending-delegations-cxx9tezp.js} +4 -4
  54. package/dist/cli/{pr-subscriptions-83y1cdwv.js → pr-subscriptions-2sfnb599.js} +4 -4
  55. package/dist/cli/{runner-fh3r41nw.js → runner-mky3vvht.js} +6 -6
  56. package/dist/cli/{scan-cursor-j8ytdpam.js → scan-cursor-1z60gwrw.js} +7 -7
  57. package/dist/cli/{schema-6xfqtpvn.js → schema-vpnkwvez.js} +2 -2
  58. package/dist/cli/{scope-persistence-8c72jrgp.js → scope-persistence-p9dmprry.js} +10 -5
  59. package/dist/cli/{skill-generator-n8vm1yhn.js → skill-generator-yx7ka1cj.js} +14 -14
  60. package/dist/cli/{telemetry-fb44gpba.js → telemetry-0x6kszvk.js} +1 -1
  61. package/dist/cli/{worktree-collision-ownership-f28r473k.js → worktree-collision-ownership-wm5pse49.js} +8 -8
  62. package/dist/cli/worktree-isolation-bwc6ra8e.js +102 -0
  63. package/dist/cli/worktree-provisioning-owner-sjh7te1h.js +22 -0
  64. package/dist/commands/acknowledge-spec-drift.d.ts +4 -5
  65. package/dist/config/evidence-schema.d.ts +3 -3
  66. package/dist/config/index.d.ts +2 -2
  67. package/dist/config/plan-schema.d.ts +8 -0
  68. package/dist/config/schema.d.ts +2 -2
  69. package/dist/council/council-evidence-writer.d.ts +1 -1
  70. package/dist/gate-evidence.d.ts +117 -4
  71. package/dist/hooks/delegation-gate.d.ts +21 -0
  72. package/dist/index.js +768 -743
  73. package/dist/plan/ledger.d.ts +55 -0
  74. package/dist/plan/manager.d.ts +9 -0
  75. package/dist/plan/planning-profile.d.ts +27 -0
  76. package/dist/services/spec-drift-recovery.d.ts +84 -0
  77. package/dist/session/snapshot-writer.d.ts +3 -1
  78. package/dist/state.d.ts +19 -17
  79. package/dist/summaries/schema.d.ts +2 -2
  80. package/dist/tools/convene-council.d.ts +6 -6
  81. package/dist/tools/save-plan.d.ts +8 -0
  82. package/dist/tools/submit-phase-council-verdicts.d.ts +6 -6
  83. package/dist/tools/tool-metadata.d.ts +28 -28
  84. package/dist/tools/update-task-status.d.ts +13 -0
  85. package/dist/tools/write-final-council-evidence.d.ts +6 -6
  86. package/dist/types/events.d.ts +29 -1
  87. package/dist/workflow/coder-settlement.d.ts +62 -0
  88. package/dist/workflow/task-repair.d.ts +30 -0
  89. package/dist/workflow/task-terminal.d.ts +52 -0
  90. package/package.json +1 -1
  91. package/dist/cli/curator-llm-factory-cfm8fhdw.js +0 -61
  92. package/dist/cli/gate-evidence-ezxfkb22.js +0 -32
  93. package/dist/cli/guardrail-explain-pn1bcgfz.js +0 -62
  94. package/dist/cli/index-d181x9zr.js +0 -71
  95. package/dist/cli/index-dtyeabmj.js +0 -239
@@ -10,16 +10,16 @@ import {
10
10
  PluginConfigSchema,
11
11
  init_schema,
12
12
  resolveExternalSkillsConfig
13
- } from "./index-tj04dj06.js";
14
- import {
15
- DEFAULT_WORKTREE_ISOLATION_CONFIG,
16
- init_constants
17
- } from "./index-hxvkfx6t.js";
13
+ } from "./index-jm4cpp4n.js";
18
14
  import {
19
15
  MAX_MERGE_DEPTH,
20
16
  deepMerge,
21
17
  init_merge
22
18
  } from "./index-zjygnfay.js";
19
+ import {
20
+ exports_external,
21
+ init_zod
22
+ } from "./index-bpmtbmy9.js";
23
23
  import {
24
24
  __esm,
25
25
  __export
@@ -688,33 +688,69 @@ var init_loader = __esm(() => {
688
688
  init_merge();
689
689
  });
690
690
 
691
- // src/config/index.ts
692
- init_constants();
693
- init_loader();
694
- init_loader();
695
- init_schema();
696
-
697
- // src/config/worktree-isolation-config.ts
698
- init_constants();
699
- function resolveWorktreeIsolationConfig(config) {
700
- if (config.worktree) {
701
- return { ...DEFAULT_WORKTREE_ISOLATION_CONFIG, ...config.worktree };
702
- }
703
- const lean = config.turbo?.strategy === "lean" ? config.turbo.lean : undefined;
704
- if (lean?.worktree_isolation) {
705
- return {
706
- ...DEFAULT_WORKTREE_ISOLATION_CONFIG,
707
- policy: "auto",
708
- merge_strategy: lean.merge_strategy ?? "merge",
709
- worktree_dir: lean.worktree_dir,
710
- deps_strategy: lean.deps_strategy ?? "skip",
711
- runtime_isolation: lean.runtime_isolation ?? DEFAULT_WORKTREE_ISOLATION_CONFIG.runtime_isolation
712
- };
713
- }
714
- return DEFAULT_WORKTREE_ISOLATION_CONFIG;
715
- }
716
-
717
- // src/config/index.ts
718
- var _internals = { loadPluginConfigWithMeta };
691
+ // src/config/plan-schema.ts
692
+ init_zod();
693
+ var ExecutionProfileSchema = exports_external.object({
694
+ parallelization_enabled: exports_external.boolean().default(false),
695
+ max_concurrent_tasks: exports_external.number().int().min(1).max(64).default(10),
696
+ council_parallel: exports_external.boolean().default(true),
697
+ locked: exports_external.boolean().default(false),
698
+ auto_proceed: exports_external.boolean().default(false),
699
+ commit_after_each_completed_task: exports_external.boolean().default(false),
700
+ planning_profile: exports_external.enum(["balanced", "strict"]).optional()
701
+ });
702
+ var TaskStatusSchema = exports_external.enum([
703
+ "pending",
704
+ "in_progress",
705
+ "completed",
706
+ "blocked",
707
+ "closed"
708
+ ]);
709
+ var TaskSizeSchema = exports_external.enum(["small", "medium", "large"]);
710
+ var PhaseStatusSchema = exports_external.enum([
711
+ "pending",
712
+ "in_progress",
713
+ "complete",
714
+ "completed",
715
+ "blocked",
716
+ "closed"
717
+ ]);
718
+ var MigrationStatusSchema = exports_external.enum([
719
+ "native",
720
+ "migrated",
721
+ "migration_failed"
722
+ ]);
723
+ var TaskSchema = exports_external.object({
724
+ id: exports_external.string(),
725
+ phase: exports_external.number().int().min(1),
726
+ status: TaskStatusSchema.default("pending"),
727
+ size: TaskSizeSchema.default("small"),
728
+ description: exports_external.string().min(1),
729
+ depends: exports_external.array(exports_external.string()).default([]),
730
+ acceptance: exports_external.string().optional(),
731
+ files_touched: exports_external.array(exports_external.string()).default([]),
732
+ evidence_path: exports_external.string().optional(),
733
+ blocked_reason: exports_external.string().optional(),
734
+ fr_refs: exports_external.array(exports_external.string()).optional()
735
+ });
736
+ var PhaseSchema = exports_external.object({
737
+ id: exports_external.number().int().min(1),
738
+ name: exports_external.string().min(1),
739
+ status: PhaseStatusSchema.default("pending"),
740
+ tasks: exports_external.array(TaskSchema).default([]),
741
+ type: exports_external.enum(["code", "non-code"]).optional(),
742
+ required_agents: exports_external.array(exports_external.string()).optional()
743
+ });
744
+ var PlanSchema = exports_external.object({
745
+ schema_version: exports_external.literal("1.0.0"),
746
+ title: exports_external.string().min(1),
747
+ swarm: exports_external.string().min(1),
748
+ current_phase: exports_external.number().int().min(1).optional(),
749
+ phases: exports_external.array(PhaseSchema).min(1),
750
+ migration_status: MigrationStatusSchema.optional(),
751
+ specMtime: exports_external.string().optional(),
752
+ specHash: exports_external.string().optional(),
753
+ execution_profile: ExecutionProfileSchema.optional()
754
+ });
719
755
 
720
- export { loadPluginConfig, loadPluginConfigWithMeta, getSafeDefaultConfigLoadResult, loadPluginConfigWithMetaAsync, loadAgentPrompt, exports_loader, init_loader, resolveWorktreeIsolationConfig, _internals };
756
+ export { ExecutionProfileSchema, TaskStatusSchema, TaskSizeSchema, PhaseStatusSchema, MigrationStatusSchema, TaskSchema, PhaseSchema, PlanSchema, loadPluginConfig, loadPluginConfigWithMeta, getSafeDefaultConfigLoadResult, loadPluginConfigWithMetaAsync, loadAgentPrompt, exports_loader, init_loader };
@@ -0,0 +1,43 @@
1
+ // @bun
2
+ import {
3
+ init_loader,
4
+ loadPluginConfigWithMeta
5
+ } from "./index-nwrwy8eb.js";
6
+ import {
7
+ init_schema
8
+ } from "./index-jm4cpp4n.js";
9
+ import {
10
+ DEFAULT_WORKTREE_ISOLATION_CONFIG,
11
+ init_constants
12
+ } from "./index-jqsfsqbx.js";
13
+
14
+ // src/config/index.ts
15
+ init_constants();
16
+ init_loader();
17
+ init_loader();
18
+ init_schema();
19
+
20
+ // src/config/worktree-isolation-config.ts
21
+ init_constants();
22
+ function resolveWorktreeIsolationConfig(config) {
23
+ if (config.worktree) {
24
+ return { ...DEFAULT_WORKTREE_ISOLATION_CONFIG, ...config.worktree };
25
+ }
26
+ const lean = config.turbo?.strategy === "lean" ? config.turbo.lean : undefined;
27
+ if (lean?.worktree_isolation) {
28
+ return {
29
+ ...DEFAULT_WORKTREE_ISOLATION_CONFIG,
30
+ policy: "auto",
31
+ merge_strategy: lean.merge_strategy ?? "merge",
32
+ worktree_dir: lean.worktree_dir,
33
+ deps_strategy: lean.deps_strategy ?? "skip",
34
+ runtime_isolation: lean.runtime_isolation ?? DEFAULT_WORKTREE_ISOLATION_CONFIG.runtime_isolation
35
+ };
36
+ }
37
+ return DEFAULT_WORKTREE_ISOLATION_CONFIG;
38
+ }
39
+
40
+ // src/config/index.ts
41
+ var _internals = { loadPluginConfigWithMeta };
42
+
43
+ export { resolveWorktreeIsolationConfig, _internals };
@@ -1,10 +1,10 @@
1
1
  // @bun
2
+ import {
3
+ withEvidenceLock
4
+ } from "./index-912qz4y0.js";
2
5
  import {
3
6
  invalidateCachedArtifact
4
7
  } from "./index-ed5ykebp.js";
5
- import {
6
- withEvidenceLock
7
- } from "./index-35qep0v7.js";
8
8
  import {
9
9
  bunWrite
10
10
  } from "./index-4nt52yr9.js";
@@ -15,10 +15,10 @@ import {
15
15
  import {
16
16
  init_schema,
17
17
  stripKnownSwarmPrefix
18
- } from "./index-tj04dj06.js";
18
+ } from "./index-jm4cpp4n.js";
19
19
  import {
20
20
  init_constants
21
- } from "./index-hxvkfx6t.js";
21
+ } from "./index-jqsfsqbx.js";
22
22
  import {
23
23
  __commonJS,
24
24
  __toESM
@@ -2615,4 +2615,4 @@ function redactPath(filePath) {
2615
2615
  return normalized;
2616
2616
  }
2617
2617
 
2618
- export { stableCanonicalStringify, classifyFile, checkFileAuthority, isInDeclaredScope, redactShellCommand, redactPath };
2618
+ export { classifyFile, stableCanonicalStringify, checkFileAuthority, isInDeclaredScope, redactShellCommand, redactPath };
@@ -11,6 +11,7 @@ var PROVISIONING_OWNER_DIR = "worktree-provisioning-owners";
11
11
  var MAX_PROVISIONING_OWNERS = 512;
12
12
  var MAX_PROVISIONING_OWNER_BYTES = 16 * 1024;
13
13
  var WORKTREE_PROVISIONING_OWNER_LEASE_MS = 5 * 60 * 1000;
14
+ var WORKTREE_LIFECYCLE_LOCK_FILE = ".swarm/locks/init-orphan-recovery.lock";
14
15
  function ownerDirectory(directory) {
15
16
  return path.dirname(validateSwarmPath(directory, path.join(PROVISIONING_OWNER_DIR, ".containment-anchor")));
16
17
  }
@@ -26,6 +27,36 @@ function isOwner(value) {
26
27
  const validTaskIdentity = schemaVersion === 1 ? candidate.taskId === undefined : schemaVersion === 2 && typeof candidate.taskId === "string" && candidate.taskId.length > 0 && candidate.taskId.length <= 512;
27
28
  return (schemaVersion === 1 || schemaVersion === 2) && validTaskIdentity && typeof candidate.callID === "string" && candidate.callID.length > 0 && candidate.callID.length <= 512 && typeof candidate.parentSessionId === "string" && candidate.parentSessionId.length > 0 && candidate.parentSessionId.length <= 512 && typeof candidate.worktreeSessionId === "string" && candidate.worktreeSessionId.length > 0 && candidate.worktreeSessionId.length <= 512 && typeof candidate.createdAt === "number" && Number.isFinite(candidate.createdAt) && candidate.createdAt >= 0;
28
29
  }
30
+ function recordWorktreeProvisioningOwner(directory, input) {
31
+ const owner = {
32
+ schemaVersion: input.taskId ? 2 : 1,
33
+ callID: input.callID,
34
+ parentSessionId: input.parentSessionId,
35
+ worktreeSessionId: input.worktreeSessionId,
36
+ ...input.taskId ? { taskId: input.taskId } : {},
37
+ createdAt: Date.now()
38
+ };
39
+ if (!isOwner(owner)) {
40
+ throw new Error("invalid worktree provisioning owner");
41
+ }
42
+ const absolutePath = ownerPath(directory, input.callID);
43
+ fs.mkdirSync(path.dirname(absolutePath), { recursive: true });
44
+ const tempPath = `${absolutePath}.tmp-${randomBytes(8).toString("hex")}`;
45
+ try {
46
+ fs.writeFileSync(tempPath, `${JSON.stringify(owner)}
47
+ `, {
48
+ encoding: "utf8",
49
+ flag: "wx"
50
+ });
51
+ fs.renameSync(tempPath, absolutePath);
52
+ } catch (error) {
53
+ try {
54
+ fs.unlinkSync(tempPath);
55
+ } catch {}
56
+ throw error;
57
+ }
58
+ return owner;
59
+ }
29
60
  function removeWorktreeProvisioningOwner(directory, callID) {
30
61
  try {
31
62
  fs.unlinkSync(ownerPath(directory, callID));
@@ -91,4 +122,4 @@ function scanWorktreeProvisioningOwnersForRecovery(directory) {
91
122
  return { status: "ok", owners };
92
123
  }
93
124
 
94
- export { WORKTREE_PROVISIONING_OWNER_LEASE_MS, removeWorktreeProvisioningOwner, scanWorktreeProvisioningOwnersForRecovery };
125
+ export { WORKTREE_PROVISIONING_OWNER_LEASE_MS, WORKTREE_LIFECYCLE_LOCK_FILE, recordWorktreeProvisioningOwner, removeWorktreeProvisioningOwner, scanWorktreeProvisioningOwnersForRecovery };
@@ -7,7 +7,7 @@ import {
7
7
  readLinkPointer,
8
8
  resolveKnowledgeStoreDir,
9
9
  resolveLinkDir
10
- } from "./index-mrpfd1jx.js";
10
+ } from "./index-vh05t3w5.js";
11
11
 
12
12
  // src/knowledge/curation-policy.ts
13
13
  import { appendFile, mkdir as mkdir2, readFile as readFile2 } from "fs/promises";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./index-k46me75h.js";
5
5
  import {
6
6
  withEvidenceLock
7
- } from "./index-35qep0v7.js";
7
+ } from "./index-912qz4y0.js";
8
8
  import {
9
9
  bunWrite
10
10
  } from "./index-4nt52yr9.js";
@@ -65,7 +65,8 @@ var WorkspaceSchema = exports_external.object({
65
65
  }).strict();
66
66
  var TaskChangeContextSchema = exports_external.object({
67
67
  declaredFiles: exports_external.array(exports_external.string()).nullable(),
68
- baseline: WorkspaceSchema
68
+ baseline: WorkspaceSchema,
69
+ workflowGeneration: exports_external.number().int().nonnegative().optional()
69
70
  }).strict();
70
71
  var WorktreeDescriptorSchema = exports_external.object({
71
72
  callID: exports_external.string().min(1).max(256),
@@ -260,6 +261,7 @@ var RecordSchema = exports_external.object({
260
261
  promptHash: exports_external.string().optional(),
261
262
  workspace: WorkspaceSchema.optional(),
262
263
  taskChangeContext: TaskChangeContextSchema.optional(),
264
+ workflowGeneration: exports_external.number().int().nonnegative().optional(),
263
265
  worktree: WorktreeDescriptorSchema.optional(),
264
266
  coderReservationId: exports_external.string().min(1).max(256).optional(),
265
267
  prompt: PromptSchema.optional(),
@@ -419,6 +421,7 @@ function buildPendingRecord(input, now) {
419
421
  ...input.promptHash ? { promptHash: input.promptHash } : {},
420
422
  ...input.workspace ? { workspace: input.workspace } : {},
421
423
  ...input.taskChangeContext ? { taskChangeContext: input.taskChangeContext } : {},
424
+ ...input.workflowGeneration !== undefined ? { workflowGeneration: input.workflowGeneration } : {},
422
425
  ...input.worktree ? { worktree: input.worktree } : {},
423
426
  ...input.coderReservationId ? { coderReservationId: input.coderReservationId } : {},
424
427
  ...input.prompt ? { prompt: input.prompt } : {},
@@ -444,6 +447,7 @@ function pendingLaunchIdentity(record) {
444
447
  promptHash: record.promptHash,
445
448
  workspace: record.workspace,
446
449
  taskChangeContext: record.taskChangeContext,
450
+ workflowGeneration: record.workflowGeneration,
447
451
  worktree: record.worktree,
448
452
  coderReservationId: record.coderReservationId,
449
453
  prompt: record.prompt,
@@ -9,11 +9,11 @@ import {
9
9
  } from "./index-y8552snf.js";
10
10
  import {
11
11
  atomicWriteFile
12
- } from "./index-4hp8nvwb.js";
12
+ } from "./index-p8kk34am.js";
13
13
  import {
14
14
  assertProjectRoot,
15
15
  withEvidenceLock
16
- } from "./index-35qep0v7.js";
16
+ } from "./index-912qz4y0.js";
17
17
  import {
18
18
  exports_external,
19
19
  init_zod