thoth-agents 0.2.2 → 0.2.3

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.
package/README.md CHANGED
@@ -314,7 +314,7 @@ clarifies intent, assesses scope, asks for user approval when needed, and routes
314
314
  work into direct implementation, accelerated SDD, or full SDD.
315
315
 
316
316
  ```text
317
- propose -> [spec || design] -> tasks -> apply -> verify -> archive
317
+ propose -> spec -> clarify -> design -> tasks -> apply -> verify -> archive
318
318
  ```
319
319
 
320
320
  For moderate work, the accelerated path usually runs `propose -> tasks`. For
@@ -804,6 +804,7 @@ var CLAUDE_CODE_PROMPT_DIALECT = {
804
804
  };
805
805
 
806
806
  // src/harness/core/sdd.ts
807
+ var SDD_VERIFY_MAX_ROUNDS = 3;
807
808
  var SDD_PHASES = [
808
809
  {
809
810
  id: "requirements-interview",
@@ -822,7 +823,7 @@ var SDD_PHASES = [
822
823
  producesArtifact: true,
823
824
  owner: "write-capable-agent",
824
825
  artifactSkill: "sdd-init",
825
- condition: "Only when OpenSpec persistence is selected and openspec/ is missing.",
826
+ condition: "Only when OpenSpec persistence is selected and openspec/ is missing or stale (partial structure or missing mechanism sections).",
826
827
  defaultAgentRole: "quick",
827
828
  supportingAgentRoles: ["explorer"],
828
829
  delegationReason: "Fast mechanical bootstrap, with explorer supplying repository facts when needed."
@@ -848,7 +849,11 @@ var SDD_PHASES = [
848
849
  artifactSkill: "sdd-propose",
849
850
  defaultAgentRole: "deep",
850
851
  supportingAgentRoles: ["oracle"],
851
- delegationReason: "Structured technical reasoning and trade-off synthesis before implementation."
852
+ delegationReason: "Structured technical reasoning and trade-off synthesis before implementation.",
853
+ handoffHints: [
854
+ "Preserve accepted scope and explicit non-goals downstream.",
855
+ "Carry deferred or discovery affected areas forward as follow-up."
856
+ ]
852
857
  },
853
858
  {
854
859
  id: "spec",
@@ -860,24 +865,48 @@ var SDD_PHASES = [
860
865
  artifactSkill: "sdd-spec",
861
866
  defaultAgentRole: "deep",
862
867
  supportingAgentRoles: ["oracle"],
863
- delegationReason: "High-quality requirement contract work where ambiguity propagates downstream."
868
+ delegationReason: "High-quality requirement contract work where ambiguity propagates downstream.",
869
+ handoffHints: [
870
+ "Preserve recorded Assumptions and any [NEEDS CLARIFICATION] resolutions.",
871
+ "Keep the requirements-quality checklist resolved before tasks."
872
+ ]
864
873
  },
865
874
  {
866
- id: "design",
875
+ id: "clarify",
867
876
  order: 5,
868
877
  requiredFor: ["full"],
869
- prerequisites: ["proposal", "spec"],
878
+ prerequisites: ["spec"],
879
+ producesArtifact: false,
880
+ owner: "write-capable-agent",
881
+ artifactSkill: "sdd-clarify",
882
+ defaultAgentRole: "deep",
883
+ supportingAgentRoles: ["oracle"],
884
+ delegationReason: "Resolve residual spec ambiguity in place before design consumes it.",
885
+ handoffHints: [
886
+ "Preserve clarified resolutions written back into the spec.",
887
+ "Keep the requirements-quality checklist re-validated before design."
888
+ ]
889
+ },
890
+ {
891
+ id: "design",
892
+ order: 6,
893
+ requiredFor: ["full"],
894
+ prerequisites: ["proposal", "clarify"],
870
895
  producesArtifact: true,
871
896
  owner: "write-capable-agent",
872
897
  artifactSkill: "sdd-design",
873
898
  artifactMeaning: "technical-solution-design",
874
899
  defaultAgentRole: "deep",
875
900
  supportingAgentRoles: ["designer"],
876
- delegationReason: "Technical architecture and file-change design; designer only supports UI/UX concerns."
901
+ delegationReason: "Technical architecture and file-change design; designer only supports UI/UX concerns.",
902
+ handoffHints: [
903
+ "Preserve coverage decisions and architecture constraints in tasks.",
904
+ "Honor the Constitution Check outcome recorded during design."
905
+ ]
877
906
  },
878
907
  {
879
908
  id: "tasks",
880
- order: 6,
909
+ order: 7,
881
910
  requiredFor: ["accelerated", "full"],
882
911
  prerequisites: ["proposal", "spec", "design"],
883
912
  producesArtifact: true,
@@ -889,7 +918,7 @@ var SDD_PHASES = [
889
918
  },
890
919
  {
891
920
  id: "plan-review",
892
- order: 7,
921
+ order: 8,
893
922
  requiredFor: ["accelerated", "full"],
894
923
  prerequisites: ["tasks"],
895
924
  producesArtifact: false,
@@ -900,7 +929,7 @@ var SDD_PHASES = [
900
929
  },
901
930
  {
902
931
  id: "implementation-confirmation",
903
- order: 8,
932
+ order: 9,
904
933
  requiredFor: ["accelerated", "full"],
905
934
  prerequisites: ["plan-review"],
906
935
  producesArtifact: false,
@@ -910,7 +939,7 @@ var SDD_PHASES = [
910
939
  },
911
940
  {
912
941
  id: "apply",
913
- order: 9,
942
+ order: 10,
914
943
  requiredFor: ["direct", "accelerated", "full"],
915
944
  prerequisites: ["implementation-confirmation"],
916
945
  producesArtifact: false,
@@ -921,10 +950,12 @@ var SDD_PHASES = [
921
950
  },
922
951
  {
923
952
  id: "verify",
924
- order: 10,
953
+ order: 11,
925
954
  requiredFor: ["accelerated", "full"],
926
955
  prerequisites: ["apply"],
927
956
  producesArtifact: true,
957
+ gate: "iterative-verify",
958
+ maxRounds: SDD_VERIFY_MAX_ROUNDS,
928
959
  owner: "oracle",
929
960
  artifactSkill: "sdd-verify",
930
961
  defaultAgentRole: "oracle",
@@ -933,7 +964,7 @@ var SDD_PHASES = [
933
964
  },
934
965
  {
935
966
  id: "archive",
936
- order: 11,
967
+ order: 12,
937
968
  requiredFor: ["accelerated", "full"],
938
969
  prerequisites: ["verify"],
939
970
  producesArtifact: true,
@@ -950,7 +981,7 @@ var SDD_WORKFLOW_CONTRACT = {
950
981
  "Scope-faithful invariant: accepted user intent/scope is preserved; unresolved affected areas remain explicit as deferred/discovery follow-up.",
951
982
  "Direct implementation is reserved for low-complexity work.",
952
983
  "Accelerated SDD follows explore -> proposal -> tasks before execution.",
953
- "Full SDD follows explore -> proposal -> spec -> design -> tasks before execution."
984
+ "Full SDD follows explore -> proposal -> spec -> clarify -> design -> tasks before execution."
954
985
  ],
955
986
  artifactRules: [
956
987
  "SDD delegation defaults are phase-specific: sdd-propose, sdd-spec, and sdd-design default to deep.",
@@ -965,7 +996,8 @@ var SDD_WORKFLOW_CONTRACT = {
965
996
  verificationRules: [
966
997
  "Plan review must complete before implementation confirmation.",
967
998
  "User confirmation is required after plan-review approval and before apply.",
968
- "Apply is followed by verify and archive for SDD pipelines."
999
+ "Apply is followed by verify and archive for SDD pipelines.",
1000
+ "Verify runs as a bounded iterative gate of at most SDD_VERIFY_MAX_ROUNDS rounds; on exhausted failure escalate to the user."
969
1001
  ]
970
1002
  };
971
1003
  function getSddWorkflowContract() {
@@ -975,7 +1007,8 @@ function getSddWorkflowContract() {
975
1007
  requiredFor: [...phase.requiredFor],
976
1008
  prerequisites: [...phase.prerequisites],
977
1009
  alternateAgentRoles: phase.alternateAgentRoles ? [...phase.alternateAgentRoles] : void 0,
978
- supportingAgentRoles: phase.supportingAgentRoles ? [...phase.supportingAgentRoles] : void 0
1010
+ supportingAgentRoles: phase.supportingAgentRoles ? [...phase.supportingAgentRoles] : void 0,
1011
+ handoffHints: phase.handoffHints ? [...phase.handoffHints] : void 0
979
1012
  })),
980
1013
  routingRules: [...SDD_WORKFLOW_CONTRACT.routingRules],
981
1014
  artifactRules: [...SDD_WORKFLOW_CONTRACT.artifactRules],
@@ -1072,7 +1105,7 @@ function persistenceSddRole(id) {
1072
1105
  function renderSddDelegationMatrix() {
1073
1106
  return `<sdd-delegation-matrix>
1074
1107
  - sdd-init -> ${primarySddRole("init")} (+${supportSddRoles("init")}, if openspec/ missing); sdd-explore -> ${primarySddRole("explore")} (+${supportSddRoles("explore")})
1075
- - sdd-propose/sdd-spec/sdd-design -> ${primarySddRole("proposal")}; sdd-tasks -> ${primarySddRole("tasks")} (fallback: ${alternateSddRoles("tasks")})
1108
+ - sdd-propose/sdd-spec/sdd-design -> ${primarySddRole("proposal")}; sdd-clarify -> ${primarySddRole("clarify")}; sdd-tasks -> ${primarySddRole("tasks")} (fallback: ${alternateSddRoles("tasks")})
1076
1109
  - plan-reviewer -> ${primarySddRole("plan-review")}; sdd-apply -> ${primarySddRole("apply")} (fallback: ${alternateSddRoles("apply")}); sdd-verify -> ${primarySddRole("verify")} (persistence: ${persistenceSddRole("verify")}); sdd-archive -> ${primarySddRole("archive")}
1077
1110
  </sdd-delegation-matrix>`;
1078
1111
  }
@@ -1221,7 +1254,7 @@ Scope-faithful invariant: accepted user intent and scope must not be silently na
1221
1254
  Routes:
1222
1255
  - Direct implementation for low-complexity work.
1223
1256
  - Accelerated SDD: explore -> propose -> tasks.
1224
- - Full SDD: explore -> propose -> spec -> design -> tasks.
1257
+ - Full SDD: explore -> propose -> spec -> clarify -> design -> tasks.
1225
1258
 
1226
1259
  ${renderSddDelegationMatrix()}
1227
1260
 
@@ -1231,7 +1264,7 @@ Hard gates:
1231
1264
  - {{role.oracle}} is read-only for plan-reviewer and sdd-verify review; {{role.quick}} persists verify reports when writes are required.
1232
1265
  - Never skip artifacts or jump from requirements-interview to implementation when SDD is selected.
1233
1266
  - Before SDD execution, load \`executing-plans\`; then track progress in {{progressTool}} plus the persistent artifact.
1234
- - If openspec persistence is selected and openspec/ is missing, dispatch sdd-init first.
1267
+ - If openspec persistence is selected and openspec/ is missing or stale (partial structure or missing mechanism sections), dispatch sdd-init first.
1235
1268
  - During SDD execution, batch compatible implementation work.
1236
1269
  - Group consecutive ready SDD tasks for the same execution agent into one dispatch when dependencies, scope, and verification can be handled together. Keep per-task tracking and evidence; do not split a compatible {{role.designer}}/{{role.quick}}/{{role.deep}} run into one delegation per checkbox.
1237
1270
 
@@ -1247,7 +1280,12 @@ Plan gate: after tasks, ask with \`{{userQuestionTool}}\`: "Review plan with {{r
1247
1280
  If reviewed, the review loop is complete only after [OKAY].
1248
1281
  If {{role.oracle}} returns [OKAY], give a deep approved-plan overview, then ask with \`{{userQuestionTool}}\` whether to implement or stop. Cover goals, scope, sequence, key decisions, verification, risks/trade-offs, and uncertainty so the user has full context.
1249
1282
  Do not dispatch \`sdd-apply\` after oracle approval until the user confirms implementation.
1250
- Post-execution: delegate sdd-verify, then sdd-archive when verification passes.
1283
+ Post-execution verify-loop (mirrors the plan-review loop's discipline; bounded to 3 rounds = initial apply->verify plus up to 2 fix->re-verify):
1284
+ - Dispatch \`sdd-verify\` as an iterative gate, not a single shot; round 1 is the first verify after apply. Treat the \`round N\` marker in the verify report as the source of truth for the round counter and surface it in {{progressTool}}.
1285
+ - On clean \`pass\`: proceed through the existing pre-archive user gate above, then delegate \`sdd-archive\`. Do not auto-advance to archive merely because a verify report exists.
1286
+ - On \`fail\` with rounds remaining (round < 3): dispatch a TARGETED \`sdd-apply\` re-run scoped by the verify report's Critical Issue remediation anchors (file and/or scenario), then re-dispatch \`sdd-verify\` as round N+1. Do not expand a scoped fix into a full unscoped re-apply when anchors are present, and do not advance to archive while the verdict is \`fail\`.
1287
+ - On \`fail\` at the bound (round 3 still failing): escalate the unresolved failure to the user with \`{{userQuestionTool}}\`. Do not run another apply/verify round and do not silently abandon or auto-archive. If the harness lacks a blocking user-input primitive, report this as an unsupported-capability limitation instead of auto-advancing or looping.
1288
+ - On \`pass with warnings\`: escalate with \`{{userQuestionTool}}\` an advance-vs-iterate choice (advance to \`sdd-archive\` vs re-iterate to clear warnings). Never auto-advance and never auto-loop. If the user chooses re-iterate, dispatch a targeted \`sdd-apply\` scoped by the warning remediation anchors and re-verify, subject to the 3-round bound.
1251
1289
  </sdd>
1252
1290
 
1253
1291
  <progress-memory>
@@ -1758,6 +1796,14 @@ var BUNDLED_SKILL_REGISTRY = [
1758
1796
  sourcePath: "src/skills/sdd-archive",
1759
1797
  kind: "skill",
1760
1798
  purpose: "sdd"
1799
+ },
1800
+ {
1801
+ name: "sdd-constitution",
1802
+ description: "Guide a semver constitution amendment and Sync-Impact Report entry.",
1803
+ allowedRoles: ORCHESTRATOR_ONLY,
1804
+ sourcePath: "src/skills/sdd-constitution",
1805
+ kind: "skill",
1806
+ purpose: "sdd"
1761
1807
  }
1762
1808
  ];
1763
1809
  var SKILL_REGISTRY = [
@@ -13,7 +13,7 @@ import {
13
13
  getStepBudgetPromptSection,
14
14
  loadAgentPrompt,
15
15
  renderRolePrompt
16
- } from "./chunk-3NOVCFN7.js";
16
+ } from "./chunk-37QKOSBR.js";
17
17
 
18
18
  // src/agents/deep.ts
19
19
  var DEEP_PROMPT = renderRolePrompt(
@@ -587,6 +587,7 @@ function spawnSync(command, options = {}) {
587
587
  // src/cli/system.ts
588
588
  import { statSync } from "fs";
589
589
  var cachedOpenCodePath = null;
590
+ var OPENCODE_PROBE_TIMEOUT_MS = 1500;
590
591
  function quoteWindowsShellCommand(command) {
591
592
  if (!/[\s&()^<>"|]/.test(command)) {
592
593
  return command;
@@ -674,10 +675,30 @@ async function isOpenCodeInstalled() {
674
675
  try {
675
676
  const invocation = getOpenCodeVersionInvocation(opencodePath);
676
677
  const proc = spawn(invocation.command, invocation.options);
677
- await proc.exited;
678
- if (proc.exitCode === 0) {
679
- cachedOpenCodePath = opencodePath;
680
- return true;
678
+ let timer;
679
+ const timedOut = /* @__PURE__ */ Symbol("timeout");
680
+ try {
681
+ const outcome = await Promise.race([
682
+ proc.exited.then(() => proc.exitCode),
683
+ new Promise((resolve) => {
684
+ timer = setTimeout(
685
+ () => resolve(timedOut),
686
+ OPENCODE_PROBE_TIMEOUT_MS
687
+ );
688
+ })
689
+ ]);
690
+ if (outcome === timedOut) {
691
+ proc.kill();
692
+ continue;
693
+ }
694
+ if (outcome === 0) {
695
+ cachedOpenCodePath = opencodePath;
696
+ return true;
697
+ }
698
+ } finally {
699
+ if (timer) {
700
+ clearTimeout(timer);
701
+ }
681
702
  }
682
703
  } catch {
683
704
  }
@@ -35,7 +35,7 @@ import {
35
35
  renderRolePrompt,
36
36
  writeConfig,
37
37
  writeLiteConfig
38
- } from "./chunk-3NOVCFN7.js";
38
+ } from "./chunk-37QKOSBR.js";
39
39
 
40
40
  // src/cli/codex-paths.ts
41
41
  import { homedir } from "os";
package/dist/cli/index.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  getOpenCodeVersion,
5
5
  isOpenCodeInstalled,
6
6
  opencodeAdapter
7
- } from "../chunk-3SQ4ZQ57.js";
7
+ } from "../chunk-7KLRUFZ4.js";
8
8
  import {
9
9
  CODEX_ROLE_NAMES,
10
10
  RECOMMENDED_SKILLS,
@@ -36,7 +36,7 @@ import {
36
36
  getOperationHarness,
37
37
  installRecommendedSkill,
38
38
  listOperationHarnesses
39
- } from "../chunk-FRZZ25ND.js";
39
+ } from "../chunk-FHEYA3VV.js";
40
40
  import {
41
41
  ALL_AGENT_NAMES,
42
42
  CUSTOM_SKILLS,
@@ -48,7 +48,7 @@ import {
48
48
  getExistingLiteConfigPath,
49
49
  installCustomSkills,
50
50
  writeLiteConfig
51
- } from "../chunk-3NOVCFN7.js";
51
+ } from "../chunk-37QKOSBR.js";
52
52
 
53
53
  // src/cli/index.ts
54
54
  import { pathToFileURL } from "url";
@@ -25,13 +25,13 @@ import {
25
25
  listOperationHarnesses,
26
26
  parseRoleTomlModel,
27
27
  parseSubagentModel
28
- } from "../../chunk-FRZZ25ND.js";
28
+ } from "../../chunk-FHEYA3VV.js";
29
29
  import {
30
30
  ALL_AGENT_NAMES,
31
31
  DEFAULT_MODELS,
32
32
  getExistingLiteConfigPath,
33
33
  parseConfig
34
- } from "../../chunk-3NOVCFN7.js";
34
+ } from "../../chunk-37QKOSBR.js";
35
35
 
36
36
  // src/cli/tui/index.tsx
37
37
  import { render } from "ink";
@@ -1,13 +1,14 @@
1
1
  import type { AgentRoleName } from './agent-pack';
2
2
  export type SddPipelineType = 'direct' | 'accelerated' | 'full';
3
- export type SddPhaseId = 'requirements-interview' | 'init' | 'explore' | 'proposal' | 'spec' | 'design' | 'tasks' | 'plan-review' | 'implementation-confirmation' | 'apply' | 'verify' | 'archive';
3
+ export type SddPhaseId = 'requirements-interview' | 'init' | 'explore' | 'proposal' | 'spec' | 'clarify' | 'design' | 'tasks' | 'plan-review' | 'implementation-confirmation' | 'apply' | 'verify' | 'archive';
4
4
  export interface SddPhaseContract {
5
5
  id: SddPhaseId;
6
6
  order: number;
7
7
  requiredFor: SddPipelineType[];
8
8
  prerequisites: SddPhaseId[];
9
9
  producesArtifact: boolean;
10
- gate?: 'oracle-review' | 'user-confirmation';
10
+ gate?: 'oracle-review' | 'user-confirmation' | 'iterative-verify';
11
+ maxRounds?: number;
11
12
  owner: 'orchestrator' | 'read-only-agent' | 'write-capable-agent' | 'oracle' | 'user';
12
13
  artifactSkill?: string;
13
14
  artifactMeaning?: string;
@@ -17,6 +18,7 @@ export interface SddPhaseContract {
17
18
  supportingAgentRoles?: AgentRoleName[];
18
19
  persistenceAgentRole?: AgentRoleName;
19
20
  delegationReason?: string;
21
+ handoffHints?: string[];
20
22
  }
21
23
  export interface SddWorkflowContract {
22
24
  phases: SddPhaseContract[];
@@ -24,7 +26,8 @@ export interface SddWorkflowContract {
24
26
  artifactRules: string[];
25
27
  verificationRules: string[];
26
28
  }
27
- export declare const FULL_SDD_PHASE_ORDER: readonly ["requirements-interview", "explore", "proposal", "spec", "design", "tasks", "plan-review", "implementation-confirmation", "apply", "verify", "archive"];
29
+ export declare const FULL_SDD_PHASE_ORDER: readonly ["requirements-interview", "explore", "proposal", "spec", "clarify", "design", "tasks", "plan-review", "implementation-confirmation", "apply", "verify", "archive"];
30
+ export declare const SDD_VERIFY_MAX_ROUNDS = 3;
28
31
  export declare const SDD_PHASES: readonly [{
29
32
  readonly id: "requirements-interview";
30
33
  readonly order: 0;
@@ -41,7 +44,7 @@ export declare const SDD_PHASES: readonly [{
41
44
  readonly producesArtifact: true;
42
45
  readonly owner: "write-capable-agent";
43
46
  readonly artifactSkill: "sdd-init";
44
- readonly condition: "Only when OpenSpec persistence is selected and openspec/ is missing.";
47
+ readonly condition: "Only when OpenSpec persistence is selected and openspec/ is missing or stale (partial structure or missing mechanism sections).";
45
48
  readonly defaultAgentRole: "quick";
46
49
  readonly supportingAgentRoles: ["explorer"];
47
50
  readonly delegationReason: "Fast mechanical bootstrap, with explorer supplying repository facts when needed.";
@@ -66,6 +69,7 @@ export declare const SDD_PHASES: readonly [{
66
69
  readonly defaultAgentRole: "deep";
67
70
  readonly supportingAgentRoles: ["oracle"];
68
71
  readonly delegationReason: "Structured technical reasoning and trade-off synthesis before implementation.";
72
+ readonly handoffHints: ["Preserve accepted scope and explicit non-goals downstream.", "Carry deferred or discovery affected areas forward as follow-up."];
69
73
  }, {
70
74
  readonly id: "spec";
71
75
  readonly order: 4;
@@ -77,11 +81,24 @@ export declare const SDD_PHASES: readonly [{
77
81
  readonly defaultAgentRole: "deep";
78
82
  readonly supportingAgentRoles: ["oracle"];
79
83
  readonly delegationReason: "High-quality requirement contract work where ambiguity propagates downstream.";
84
+ readonly handoffHints: ["Preserve recorded Assumptions and any [NEEDS CLARIFICATION] resolutions.", "Keep the requirements-quality checklist resolved before tasks."];
80
85
  }, {
81
- readonly id: "design";
86
+ readonly id: "clarify";
82
87
  readonly order: 5;
83
88
  readonly requiredFor: ["full"];
84
- readonly prerequisites: ["proposal", "spec"];
89
+ readonly prerequisites: ["spec"];
90
+ readonly producesArtifact: false;
91
+ readonly owner: "write-capable-agent";
92
+ readonly artifactSkill: "sdd-clarify";
93
+ readonly defaultAgentRole: "deep";
94
+ readonly supportingAgentRoles: ["oracle"];
95
+ readonly delegationReason: "Resolve residual spec ambiguity in place before design consumes it.";
96
+ readonly handoffHints: ["Preserve clarified resolutions written back into the spec.", "Keep the requirements-quality checklist re-validated before design."];
97
+ }, {
98
+ readonly id: "design";
99
+ readonly order: 6;
100
+ readonly requiredFor: ["full"];
101
+ readonly prerequisites: ["proposal", "clarify"];
85
102
  readonly producesArtifact: true;
86
103
  readonly owner: "write-capable-agent";
87
104
  readonly artifactSkill: "sdd-design";
@@ -89,9 +106,10 @@ export declare const SDD_PHASES: readonly [{
89
106
  readonly defaultAgentRole: "deep";
90
107
  readonly supportingAgentRoles: ["designer"];
91
108
  readonly delegationReason: "Technical architecture and file-change design; designer only supports UI/UX concerns.";
109
+ readonly handoffHints: ["Preserve coverage decisions and architecture constraints in tasks.", "Honor the Constitution Check outcome recorded during design."];
92
110
  }, {
93
111
  readonly id: "tasks";
94
- readonly order: 6;
112
+ readonly order: 7;
95
113
  readonly requiredFor: ["accelerated", "full"];
96
114
  readonly prerequisites: ["proposal", "spec", "design"];
97
115
  readonly producesArtifact: true;
@@ -102,7 +120,7 @@ export declare const SDD_PHASES: readonly [{
102
120
  readonly delegationReason: "Mechanical conversion of settled design into dependency-ordered execution tasks.";
103
121
  }, {
104
122
  readonly id: "plan-review";
105
- readonly order: 7;
123
+ readonly order: 8;
106
124
  readonly requiredFor: ["accelerated", "full"];
107
125
  readonly prerequisites: ["tasks"];
108
126
  readonly producesArtifact: false;
@@ -112,7 +130,7 @@ export declare const SDD_PHASES: readonly [{
112
130
  readonly delegationReason: "Independent read-only executability review of tasks before implementation.";
113
131
  }, {
114
132
  readonly id: "implementation-confirmation";
115
- readonly order: 8;
133
+ readonly order: 9;
116
134
  readonly requiredFor: ["accelerated", "full"];
117
135
  readonly prerequisites: ["plan-review"];
118
136
  readonly producesArtifact: false;
@@ -121,7 +139,7 @@ export declare const SDD_PHASES: readonly [{
121
139
  readonly delegationReason: "Human approval gate after reviewed tasks and before workspace implementation.";
122
140
  }, {
123
141
  readonly id: "apply";
124
- readonly order: 9;
142
+ readonly order: 10;
125
143
  readonly requiredFor: ["direct", "accelerated", "full"];
126
144
  readonly prerequisites: ["implementation-confirmation"];
127
145
  readonly producesArtifact: false;
@@ -131,10 +149,12 @@ export declare const SDD_PHASES: readonly [{
131
149
  readonly delegationReason: "Correctness-heavy implementation by default; quick handles mechanical batches and designer owns UI/visual work.";
132
150
  }, {
133
151
  readonly id: "verify";
134
- readonly order: 10;
152
+ readonly order: 11;
135
153
  readonly requiredFor: ["accelerated", "full"];
136
154
  readonly prerequisites: ["apply"];
137
155
  readonly producesArtifact: true;
156
+ readonly gate: "iterative-verify";
157
+ readonly maxRounds: 3;
138
158
  readonly owner: "oracle";
139
159
  readonly artifactSkill: "sdd-verify";
140
160
  readonly defaultAgentRole: "oracle";
@@ -142,7 +162,7 @@ export declare const SDD_PHASES: readonly [{
142
162
  readonly delegationReason: "Independent verification review; quick persists the report when the selected store requires writes.";
143
163
  }, {
144
164
  readonly id: "archive";
145
- readonly order: 11;
165
+ readonly order: 12;
146
166
  readonly requiredFor: ["accelerated", "full"];
147
167
  readonly prerequisites: ["verify"];
148
168
  readonly producesArtifact: true;
@@ -93,6 +93,13 @@ export declare const BUNDLED_SKILL_REGISTRY: readonly [{
93
93
  readonly sourcePath: "src/skills/sdd-archive";
94
94
  readonly kind: "skill";
95
95
  readonly purpose: "sdd";
96
+ }, {
97
+ readonly name: "sdd-constitution";
98
+ readonly description: "Guide a semver constitution amendment and Sync-Impact Report entry.";
99
+ readonly allowedRoles: AgentRoleName[];
100
+ readonly sourcePath: "src/skills/sdd-constitution";
101
+ readonly kind: "skill";
102
+ readonly purpose: "sdd";
96
103
  }];
97
104
  export declare const SKILL_REGISTRY: readonly [{
98
105
  readonly name: "requirements-interview";
@@ -178,6 +185,13 @@ export declare const SKILL_REGISTRY: readonly [{
178
185
  readonly sourcePath: "src/skills/sdd-archive";
179
186
  readonly kind: "skill";
180
187
  readonly purpose: "sdd";
188
+ }, {
189
+ readonly name: "sdd-constitution";
190
+ readonly description: "Guide a semver constitution amendment and Sync-Impact Report entry.";
191
+ readonly allowedRoles: AgentRoleName[];
192
+ readonly sourcePath: "src/skills/sdd-constitution";
193
+ readonly kind: "skill";
194
+ readonly purpose: "sdd";
181
195
  }, SkillRegistryEntry];
182
196
  export declare function getSkillRegistry(): SkillRegistryEntry[];
183
197
  export declare function getBundledSkillRegistry(): SkillRegistryEntry[];
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  renderOpenCodeAgentConfigs,
4
4
  spawn,
5
5
  spawnSync
6
- } from "./chunk-3SQ4ZQ57.js";
6
+ } from "./chunk-7KLRUFZ4.js";
7
7
  import {
8
8
  DEFAULT_THOTH_COMMAND,
9
9
  POLL_INTERVAL_BACKGROUND_MS,
@@ -14,7 +14,7 @@ import {
14
14
  installCustomSkills,
15
15
  loadPluginConfig,
16
16
  stripJsonComments
17
- } from "./chunk-3NOVCFN7.js";
17
+ } from "./chunk-37QKOSBR.js";
18
18
 
19
19
  // src/index.ts
20
20
  import path4 from "path";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thoth-agents",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "Delegate-first OpenCode plugin with seven agents, thoth-mem persistence, and bundled SDD skills.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",