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 +1 -1
- package/dist/{chunk-3NOVCFN7.js → chunk-37QKOSBR.js} +65 -19
- package/dist/{chunk-3SQ4ZQ57.js → chunk-7KLRUFZ4.js} +26 -5
- package/dist/{chunk-FRZZ25ND.js → chunk-FHEYA3VV.js} +1 -1
- package/dist/cli/index.js +3 -3
- package/dist/cli/tui/index.js +2 -2
- package/dist/harness/core/sdd.d.ts +32 -12
- package/dist/harness/core/skills.d.ts +14 -0
- package/dist/index.js +2 -2
- package/package.json +1 -1
- package/src/skills/_shared/openspec-convention.md +221 -11
- package/src/skills/executing-plans/SKILL.md +37 -2
- package/src/skills/plan-reviewer/SKILL.md +81 -1
- package/src/skills/requirements-interview/SKILL.md +10 -3
- package/src/skills/sdd-archive/SKILL.md +7 -2
- package/src/skills/sdd-clarify/SKILL.md +105 -0
- package/src/skills/sdd-constitution/SKILL.md +107 -0
- package/src/skills/sdd-design/SKILL.md +54 -1
- package/src/skills/sdd-init/SKILL.md +123 -38
- package/src/skills/sdd-spec/SKILL.md +44 -1
- package/src/skills/sdd-tasks/SKILL.md +63 -3
- package/src/skills/sdd-verify/SKILL.md +33 -1
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 ->
|
|
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: "
|
|
875
|
+
id: "clarify",
|
|
867
876
|
order: 5,
|
|
868
877
|
requiredFor: ["full"],
|
|
869
|
-
prerequisites: ["
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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-
|
|
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
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
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
|
}
|
package/dist/cli/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
getOpenCodeVersion,
|
|
5
5
|
isOpenCodeInstalled,
|
|
6
6
|
opencodeAdapter
|
|
7
|
-
} from "../chunk-
|
|
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-
|
|
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-
|
|
51
|
+
} from "../chunk-37QKOSBR.js";
|
|
52
52
|
|
|
53
53
|
// src/cli/index.ts
|
|
54
54
|
import { pathToFileURL } from "url";
|
package/dist/cli/tui/index.js
CHANGED
|
@@ -25,13 +25,13 @@ import {
|
|
|
25
25
|
listOperationHarnesses,
|
|
26
26
|
parseRoleTomlModel,
|
|
27
27
|
parseSubagentModel
|
|
28
|
-
} from "../../chunk-
|
|
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-
|
|
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: "
|
|
86
|
+
readonly id: "clarify";
|
|
82
87
|
readonly order: 5;
|
|
83
88
|
readonly requiredFor: ["full"];
|
|
84
|
-
readonly prerequisites: ["
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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-
|
|
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-
|
|
17
|
+
} from "./chunk-37QKOSBR.js";
|
|
18
18
|
|
|
19
19
|
// src/index.ts
|
|
20
20
|
import path4 from "path";
|
package/package.json
CHANGED