@phamvuhoang/otto-core 0.17.0 → 0.19.0
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/dist/cli-help.d.ts +23 -0
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +38 -1
- package/dist/cli-help.js.map +1 -1
- package/dist/console-ui.d.ts +32 -0
- package/dist/console-ui.d.ts.map +1 -0
- package/dist/console-ui.js +154 -0
- package/dist/console-ui.js.map +1 -0
- package/dist/fanout.d.ts +56 -0
- package/dist/fanout.d.ts.map +1 -0
- package/dist/fanout.js +119 -0
- package/dist/fanout.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/loop.d.ts +19 -1
- package/dist/loop.d.ts.map +1 -1
- package/dist/loop.js +125 -32
- package/dist/loop.js.map +1 -1
- package/dist/model-tier.d.ts +69 -0
- package/dist/model-tier.d.ts.map +1 -0
- package/dist/model-tier.js +101 -0
- package/dist/model-tier.js.map +1 -0
- package/dist/next-action.d.ts +2 -0
- package/dist/next-action.d.ts.map +1 -0
- package/dist/next-action.js +23 -0
- package/dist/next-action.js.map +1 -0
- package/dist/plan-progress.d.ts +36 -0
- package/dist/plan-progress.d.ts.map +1 -0
- package/dist/plan-progress.js +43 -0
- package/dist/plan-progress.js.map +1 -0
- package/dist/plan-tasks.d.ts +44 -0
- package/dist/plan-tasks.d.ts.map +1 -0
- package/dist/plan-tasks.js +167 -0
- package/dist/plan-tasks.js.map +1 -0
- package/dist/run-bin.d.ts.map +1 -1
- package/dist/run-bin.js +22 -0
- package/dist/run-bin.js.map +1 -1
- package/dist/run-view.d.ts +71 -0
- package/dist/run-view.d.ts.map +1 -0
- package/dist/run-view.js +190 -0
- package/dist/run-view.js.map +1 -0
- package/dist/runner.d.ts +22 -14
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +18 -26
- package/dist/runner.js.map +1 -1
- package/dist/stage-exec.d.ts +16 -0
- package/dist/stage-exec.d.ts.map +1 -1
- package/dist/stage-exec.js +32 -1
- package/dist/stage-exec.js.map +1 -1
- package/dist/stages.d.ts +18 -0
- package/dist/stages.d.ts.map +1 -1
- package/dist/stages.js +17 -0
- package/dist/stages.js.map +1 -1
- package/dist/stream-render.d.ts +1 -0
- package/dist/stream-render.d.ts.map +1 -1
- package/dist/stream-render.js +1 -1
- package/dist/stream-render.js.map +1 -1
- package/dist/tail.d.ts +25 -0
- package/dist/tail.d.ts.map +1 -0
- package/dist/tail.js +75 -0
- package/dist/tail.js.map +1 -0
- package/dist/worktree.d.ts +24 -0
- package/dist/worktree.d.ts.map +1 -0
- package/dist/worktree.js +43 -0
- package/dist/worktree.js.map +1 -0
- package/package.json +1 -1
- package/templates/plan.md +26 -4
- package/templates/subtask.md +32 -0
package/dist/stage-exec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage-exec.js","sourceRoot":"","sources":["../src/stage-exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,aAAa,EAAuB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EACL,eAAe,EACf,QAAQ,EACR,YAAY,GAEb,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"stage-exec.js","sourceRoot":"","sources":["../src/stage-exec.ts"],"names":[],"mappings":"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"}
|
package/dist/stages.d.ts
CHANGED
|
@@ -1,53 +1,71 @@
|
|
|
1
|
+
import type { ModelTier } from "./model-tier.js";
|
|
1
2
|
export type Stage = {
|
|
2
3
|
name: string;
|
|
3
4
|
template: string;
|
|
4
5
|
permissionMode?: string;
|
|
6
|
+
/** Difficulty tier for model routing (issue #66 P11). Absent ⇒ runtime default model. */
|
|
7
|
+
tier?: ModelTier;
|
|
5
8
|
};
|
|
6
9
|
export declare const STAGES: {
|
|
7
10
|
plan: {
|
|
8
11
|
name: string;
|
|
9
12
|
template: string;
|
|
10
13
|
permissionMode: string;
|
|
14
|
+
tier: "strong";
|
|
11
15
|
};
|
|
12
16
|
implementer: {
|
|
13
17
|
name: string;
|
|
14
18
|
template: string;
|
|
15
19
|
permissionMode: string;
|
|
20
|
+
tier: "mid";
|
|
16
21
|
};
|
|
17
22
|
ghafkImplementer: {
|
|
18
23
|
name: string;
|
|
19
24
|
template: string;
|
|
20
25
|
permissionMode: string;
|
|
26
|
+
tier: "mid";
|
|
21
27
|
};
|
|
22
28
|
ghafkIssueImplementer: {
|
|
23
29
|
name: string;
|
|
24
30
|
template: string;
|
|
25
31
|
permissionMode: string;
|
|
32
|
+
tier: "mid";
|
|
26
33
|
};
|
|
27
34
|
linearImplementer: {
|
|
28
35
|
name: string;
|
|
29
36
|
template: string;
|
|
30
37
|
permissionMode: string;
|
|
38
|
+
tier: "mid";
|
|
31
39
|
};
|
|
32
40
|
linearIssueImplementer: {
|
|
33
41
|
name: string;
|
|
34
42
|
template: string;
|
|
35
43
|
permissionMode: string;
|
|
44
|
+
tier: "mid";
|
|
36
45
|
};
|
|
37
46
|
verifier: {
|
|
38
47
|
name: string;
|
|
39
48
|
template: string;
|
|
40
49
|
permissionMode: string;
|
|
50
|
+
tier: "strong";
|
|
41
51
|
};
|
|
42
52
|
applyReviewImplementer: {
|
|
43
53
|
name: string;
|
|
44
54
|
template: string;
|
|
45
55
|
permissionMode: string;
|
|
56
|
+
tier: "strong";
|
|
46
57
|
};
|
|
47
58
|
reviewer: {
|
|
48
59
|
name: string;
|
|
49
60
|
template: string;
|
|
50
61
|
permissionMode: string;
|
|
62
|
+
tier: "strong";
|
|
63
|
+
};
|
|
64
|
+
subImplementer: {
|
|
65
|
+
name: string;
|
|
66
|
+
template: string;
|
|
67
|
+
permissionMode: string;
|
|
68
|
+
tier: "mid";
|
|
51
69
|
};
|
|
52
70
|
};
|
|
53
71
|
//# sourceMappingURL=stages.d.ts.map
|
package/dist/stages.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stages.d.ts","sourceRoot":"","sources":["../src/stages.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"stages.d.ts","sourceRoot":"","sources":["../src/stages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yFAAyF;IACzF,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,CAAC;AAOF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiElB,CAAC"}
|
package/dist/stages.js
CHANGED
|
@@ -10,46 +10,63 @@ export const STAGES = {
|
|
|
10
10
|
name: "plan",
|
|
11
11
|
template: "plan.md",
|
|
12
12
|
permissionMode: "bypassPermissions",
|
|
13
|
+
tier: "strong",
|
|
13
14
|
},
|
|
14
15
|
implementer: {
|
|
15
16
|
name: "implementer",
|
|
16
17
|
template: "afk.md",
|
|
17
18
|
permissionMode: "bypassPermissions",
|
|
19
|
+
tier: "mid",
|
|
18
20
|
},
|
|
19
21
|
ghafkImplementer: {
|
|
20
22
|
name: "ghafk-implementer",
|
|
21
23
|
template: "ghafk.md",
|
|
22
24
|
permissionMode: "bypassPermissions",
|
|
25
|
+
tier: "mid",
|
|
23
26
|
},
|
|
24
27
|
ghafkIssueImplementer: {
|
|
25
28
|
name: "ghafk-issue-implementer",
|
|
26
29
|
template: "ghafk-issue.md",
|
|
27
30
|
permissionMode: "bypassPermissions",
|
|
31
|
+
tier: "mid",
|
|
28
32
|
},
|
|
29
33
|
linearImplementer: {
|
|
30
34
|
name: "linear-implementer",
|
|
31
35
|
template: "linearafk.md",
|
|
32
36
|
permissionMode: "bypassPermissions",
|
|
37
|
+
tier: "mid",
|
|
33
38
|
},
|
|
34
39
|
linearIssueImplementer: {
|
|
35
40
|
name: "linear-issue-implementer",
|
|
36
41
|
template: "linearafk-issue.md",
|
|
37
42
|
permissionMode: "bypassPermissions",
|
|
43
|
+
tier: "mid",
|
|
38
44
|
},
|
|
39
45
|
verifier: {
|
|
40
46
|
name: "verifier",
|
|
41
47
|
template: "verify.md",
|
|
42
48
|
permissionMode: "bypassPermissions",
|
|
49
|
+
tier: "strong",
|
|
43
50
|
},
|
|
44
51
|
applyReviewImplementer: {
|
|
45
52
|
name: "apply-review-implementer",
|
|
46
53
|
template: "apply-review.md",
|
|
47
54
|
permissionMode: "bypassPermissions",
|
|
55
|
+
tier: "strong",
|
|
48
56
|
},
|
|
49
57
|
reviewer: {
|
|
50
58
|
name: "reviewer",
|
|
51
59
|
template: "review.md",
|
|
52
60
|
permissionMode: "bypassPermissions",
|
|
61
|
+
tier: "strong",
|
|
62
|
+
},
|
|
63
|
+
// One fanned-out plan task, run in an isolated worktree with bounded context
|
|
64
|
+
// (issue #66 P11). Mechanical-to-moderate per-task work → mid tier.
|
|
65
|
+
subImplementer: {
|
|
66
|
+
name: "sub-implementer",
|
|
67
|
+
template: "subtask.md",
|
|
68
|
+
permissionMode: "bypassPermissions",
|
|
69
|
+
tier: "mid",
|
|
53
70
|
},
|
|
54
71
|
};
|
|
55
72
|
//# sourceMappingURL=stages.js.map
|
package/dist/stages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stages.js","sourceRoot":"","sources":["../src/stages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stages.js","sourceRoot":"","sources":["../src/stages.ts"],"names":[],"mappings":"AAUA,gFAAgF;AAChF,8EAA8E;AAC9E,iFAAiF;AACjF,kFAAkF;AAClF,gFAAgF;AAChF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,yEAAyE;IACzE,4EAA4E;IAC5E,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,SAAS;QACnB,cAAc,EAAE,mBAAmB;QACnC,IAAI,EAAE,QAAQ;KACC;IACjB,WAAW,EAAE;QACX,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,QAAQ;QAClB,cAAc,EAAE,mBAAmB;QACnC,IAAI,EAAE,KAAK;KACI;IACjB,gBAAgB,EAAE;QAChB,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,UAAU;QACpB,cAAc,EAAE,mBAAmB;QACnC,IAAI,EAAE,KAAK;KACI;IACjB,qBAAqB,EAAE;QACrB,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,gBAAgB;QAC1B,cAAc,EAAE,mBAAmB;QACnC,IAAI,EAAE,KAAK;KACI;IACjB,iBAAiB,EAAE;QACjB,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,cAAc;QACxB,cAAc,EAAE,mBAAmB;QACnC,IAAI,EAAE,KAAK;KACI;IACjB,sBAAsB,EAAE;QACtB,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,oBAAoB;QAC9B,cAAc,EAAE,mBAAmB;QACnC,IAAI,EAAE,KAAK;KACI;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,WAAW;QACrB,cAAc,EAAE,mBAAmB;QACnC,IAAI,EAAE,QAAQ;KACC;IACjB,sBAAsB,EAAE;QACtB,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,iBAAiB;QAC3B,cAAc,EAAE,mBAAmB;QACnC,IAAI,EAAE,QAAQ;KACC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,WAAW;QACrB,cAAc,EAAE,mBAAmB;QACnC,IAAI,EAAE,QAAQ;KACC;IACjB,6EAA6E;IAC7E,oEAAoE;IACpE,cAAc,EAAE;QACd,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,YAAY;QACtB,cAAc,EAAE,mBAAmB;QACnC,IAAI,EAAE,KAAK;KACI;CAClB,CAAC"}
|
package/dist/stream-render.d.ts
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
export declare const USE_COLOR: boolean;
|
|
9
9
|
export declare const dim: (s: string) => string;
|
|
10
10
|
export declare const bold: (s: string) => string;
|
|
11
|
+
export declare const cyan: (s: string) => string;
|
|
11
12
|
export declare const green: (s: string) => string;
|
|
12
13
|
export declare const red: (s: string) => string;
|
|
13
14
|
export declare const boldOut: (s: string) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-render.d.ts","sourceRoot":"","sources":["../src/stream-render.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,+EAA+E;AAC/E,eAAO,MAAM,SAAS,SAAiD,CAAC;AAWxE,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,KAAG,MAAmB,CAAC;AACpD,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,KAAG,MAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"stream-render.d.ts","sourceRoot":"","sources":["../src/stream-render.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,+EAA+E;AAC/E,eAAO,MAAM,SAAS,SAAiD,CAAC;AAWxE,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,KAAG,MAAmB,CAAC;AACpD,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,KAAG,MAAmB,CAAC;AACrD,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,KAAG,MAAoB,CAAC;AACtD,eAAO,MAAM,KAAK,GAAI,GAAG,MAAM,KAAG,MAAoB,CAAC;AACvD,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,KAAG,MAAoB,CAAC;AACrD,eAAO,MAAM,OAAO,GAAI,GAAG,MAAM,KAAG,MAAsB,CAAC;AAE3D,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,KAAG,MAAuB,CAAC;AAC7D,eAAO,MAAM,MAAM,GAAI,GAAG,MAAM,KAAG,MAAsB,CAAC;AAE1D,eAAO,MAAM,GAAG;;;;;;;CASX,CAAC;AAEN,eAAO,MAAM,OAAO;;CAAuD,CAAC;AAE5E,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AACF,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,cAAc,EAAE,CAAA;KAAE,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAA;KAAE,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAE3C,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D,wBAAgB,WAAW,CACzB,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAC9B,IAAI,CAqFN"}
|
package/dist/stream-render.js
CHANGED
|
@@ -19,7 +19,7 @@ const c = (code, s) => USE_COLOR ? `\x1b[${code}m${s}\x1b[0m` : s;
|
|
|
19
19
|
const cOut = (code, s) => USE_COLOR_STDOUT ? `\x1b[${code}m${s}\x1b[0m` : s;
|
|
20
20
|
export const dim = (s) => c("2", s);
|
|
21
21
|
export const bold = (s) => c("1", s);
|
|
22
|
-
const cyan = (s) => c("36", s);
|
|
22
|
+
export const cyan = (s) => c("36", s);
|
|
23
23
|
export const green = (s) => c("32", s);
|
|
24
24
|
export const red = (s) => c("31", s);
|
|
25
25
|
export const boldOut = (s) => cOut("1", s);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-render.js","sourceRoot":"","sources":["../src/stream-render.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,6EAA6E;AAE7E,MAAM,YAAY,GAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;AAE9D,+EAA+E;AAC/E,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;AAExE;;kCAEkC;AAClC,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;AAExE,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,CAAS,EAAU,EAAE,CAC5C,SAAS,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,CAAS,EAAU,EAAE,CAC/C,gBAAgB,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACrD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"stream-render.js","sourceRoot":"","sources":["../src/stream-render.ts"],"names":[],"mappings":"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"}
|
package/dist/tail.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type RunManifest } from "./run-report.js";
|
|
2
|
+
/**
|
|
3
|
+
* Injectable host surface for {@link runTail} so the poller stays
|
|
4
|
+
* unit-testable without real I/O or real waits.
|
|
5
|
+
*/
|
|
6
|
+
export type TailDeps = {
|
|
7
|
+
env: NodeJS.ProcessEnv;
|
|
8
|
+
cwd: string;
|
|
9
|
+
out: (msg: string) => void;
|
|
10
|
+
err: (msg: string) => void;
|
|
11
|
+
/** Async sleep; injectable so tests pass a no-op and never actually wait. */
|
|
12
|
+
sleep: (ms: number) => Promise<void>;
|
|
13
|
+
/** Max poll iterations before giving up (default: 300 = ~5 min at 1s interval). */
|
|
14
|
+
maxPolls?: number;
|
|
15
|
+
/** Injectable manifest reader; defaults to readManifest from run-report.ts. */
|
|
16
|
+
readManifest?: (workspaceDir: string, runId: string) => RunManifest | null;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Drive the `otto-tail` command: resolve a run id (an explicit id, or
|
|
20
|
+
* `latest`/no arg → the most recent run under `.otto/runs/`), then poll
|
|
21
|
+
* the evidence bundle printing a live tree while running and the done card
|
|
22
|
+
* once finalized. Resolves to the process exit code.
|
|
23
|
+
*/
|
|
24
|
+
export declare function runTail(argv: string[], deps?: TailDeps): Promise<number>;
|
|
25
|
+
//# sourceMappingURL=tail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tail.d.ts","sourceRoot":"","sources":["../src/tail.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAGzB;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,6EAA6E;IAC7E,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,CAAC;CAC5E,CAAC;AAgBF;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,QAAsB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAmEjB"}
|
package/dist/tail.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { resolve } from "node:path";
|
|
2
|
+
import { listRunIds, readManifest as defaultReadManifest, readStageRecords, } from "./run-report.js";
|
|
3
|
+
import { buildRunView, formatDoneCard, formatLiveTree } from "./run-view.js";
|
|
4
|
+
const DEFAULT_INTERVAL_MS = 1000;
|
|
5
|
+
const DEFAULT_MAX_POLLS = 300;
|
|
6
|
+
const USAGE = "Usage: otto-tail [<run-id>|latest]";
|
|
7
|
+
const defaultDeps = {
|
|
8
|
+
env: process.env,
|
|
9
|
+
cwd: process.cwd(),
|
|
10
|
+
out: (m) => process.stdout.write(`${m}\n`),
|
|
11
|
+
err: (m) => process.stderr.write(`${m}\n`),
|
|
12
|
+
sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
|
|
13
|
+
maxPolls: DEFAULT_MAX_POLLS,
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Drive the `otto-tail` command: resolve a run id (an explicit id, or
|
|
17
|
+
* `latest`/no arg → the most recent run under `.otto/runs/`), then poll
|
|
18
|
+
* the evidence bundle printing a live tree while running and the done card
|
|
19
|
+
* once finalized. Resolves to the process exit code.
|
|
20
|
+
*/
|
|
21
|
+
export async function runTail(argv, deps = defaultDeps) {
|
|
22
|
+
const arg = argv[0];
|
|
23
|
+
if (arg === "-h" || arg === "--help") {
|
|
24
|
+
deps.out(USAGE);
|
|
25
|
+
return 0;
|
|
26
|
+
}
|
|
27
|
+
const workspaceDir = resolve(deps.env.OTTO_WORKSPACE ?? deps.cwd);
|
|
28
|
+
const readMfn = deps.readManifest ?? defaultReadManifest;
|
|
29
|
+
let runId;
|
|
30
|
+
if (arg && arg !== "latest") {
|
|
31
|
+
runId = arg;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const ids = listRunIds(workspaceDir);
|
|
35
|
+
if (ids.length === 0) {
|
|
36
|
+
deps.err(`No runs found under ${workspaceDir}/.otto/runs/. ` +
|
|
37
|
+
"Run Otto first, then tail the bundle it writes.");
|
|
38
|
+
return 1;
|
|
39
|
+
}
|
|
40
|
+
runId = ids[ids.length - 1];
|
|
41
|
+
}
|
|
42
|
+
// Verify the run exists before starting the poll loop.
|
|
43
|
+
const initial = readMfn(workspaceDir, runId);
|
|
44
|
+
if (!initial) {
|
|
45
|
+
deps.err(`No manifest for run '${runId}' under ${workspaceDir}/.otto/runs/. ` +
|
|
46
|
+
"Check the run id (or pass `latest`).");
|
|
47
|
+
return 1;
|
|
48
|
+
}
|
|
49
|
+
const maxPolls = deps.maxPolls ?? DEFAULT_MAX_POLLS;
|
|
50
|
+
let polls = 0;
|
|
51
|
+
// Poll loop: read manifest+stages, render; stop when finalized or maxPolls hit.
|
|
52
|
+
while (polls < maxPolls) {
|
|
53
|
+
const manifest = readMfn(workspaceDir, runId);
|
|
54
|
+
if (!manifest) {
|
|
55
|
+
// Manifest vanished mid-poll — treat as transient, keep trying.
|
|
56
|
+
await deps.sleep(DEFAULT_INTERVAL_MS);
|
|
57
|
+
polls++;
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
const stages = readStageRecords(workspaceDir, runId);
|
|
61
|
+
const view = buildRunView(manifest, stages);
|
|
62
|
+
if (manifest.finishedAt != null) {
|
|
63
|
+
deps.out(formatDoneCard(view));
|
|
64
|
+
return 0;
|
|
65
|
+
}
|
|
66
|
+
// Still running — print a live tree frame.
|
|
67
|
+
deps.out(formatLiveTree(view));
|
|
68
|
+
await deps.sleep(DEFAULT_INTERVAL_MS);
|
|
69
|
+
polls++;
|
|
70
|
+
}
|
|
71
|
+
// Reached maxPolls without the run finalizing.
|
|
72
|
+
deps.err(`otto-tail: run '${runId}' did not finalize after ${maxPolls} poll(s); giving up.`);
|
|
73
|
+
return 1;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=tail.js.map
|
package/dist/tail.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tail.js","sourceRoot":"","sources":["../src/tail.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git-worktree isolation for sub-agent fan-out (issue #66 P11). Each parallel
|
|
3
|
+
* sub-agent runs in its own worktree under `.otto-tmp/wt/<id>` — a separate
|
|
4
|
+
* working directory sharing the repo's object store, so the agents never clobber
|
|
5
|
+
* each other's files. The dir is inside the workspace, so the native OS sandbox
|
|
6
|
+
* still confines writes. `.otto-tmp/` is already gitignored.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Create an isolated worktree at HEAD under `.otto-tmp/wt/<id>`. `--detach` so
|
|
10
|
+
* the sub-agent commits onto a detached HEAD without creating or moving a branch.
|
|
11
|
+
* `cleanup()` removes the worktree (and its dir); it is idempotent and safe to
|
|
12
|
+
* call from a `finally`.
|
|
13
|
+
*/
|
|
14
|
+
export declare function createWorktree(workspaceDir: string, id: string): {
|
|
15
|
+
dir: string;
|
|
16
|
+
cleanup: () => void;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Prune leftover worktrees from a crashed prior run: remove the `.otto-tmp/wt`
|
|
20
|
+
* tree wholesale, then GC git's worktree registry so the stale entries don't
|
|
21
|
+
* linger. Call once before a fan-out round.
|
|
22
|
+
*/
|
|
23
|
+
export declare function reapWorktrees(workspaceDir: string): void;
|
|
24
|
+
//# sourceMappingURL=worktree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../src/worktree.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,MAAM,GACT;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAetC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAGxD"}
|
package/dist/worktree.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git-worktree isolation for sub-agent fan-out (issue #66 P11). Each parallel
|
|
3
|
+
* sub-agent runs in its own worktree under `.otto-tmp/wt/<id>` — a separate
|
|
4
|
+
* working directory sharing the repo's object store, so the agents never clobber
|
|
5
|
+
* each other's files. The dir is inside the workspace, so the native OS sandbox
|
|
6
|
+
* still confines writes. `.otto-tmp/` is already gitignored.
|
|
7
|
+
*/
|
|
8
|
+
import { rmSync } from "node:fs";
|
|
9
|
+
import { join } from "node:path";
|
|
10
|
+
import { git } from "./git.js";
|
|
11
|
+
/**
|
|
12
|
+
* Create an isolated worktree at HEAD under `.otto-tmp/wt/<id>`. `--detach` so
|
|
13
|
+
* the sub-agent commits onto a detached HEAD without creating or moving a branch.
|
|
14
|
+
* `cleanup()` removes the worktree (and its dir); it is idempotent and safe to
|
|
15
|
+
* call from a `finally`.
|
|
16
|
+
*/
|
|
17
|
+
export function createWorktree(workspaceDir, id) {
|
|
18
|
+
const rel = join(".otto-tmp", "wt", id);
|
|
19
|
+
const dir = join(workspaceDir, rel);
|
|
20
|
+
// Remove any stale worktree at this path first (a crashed prior run), then add.
|
|
21
|
+
git(["worktree", "remove", "--force", dir], workspaceDir);
|
|
22
|
+
rmSync(dir, { recursive: true, force: true });
|
|
23
|
+
git(["worktree", "add", "--detach", dir, "HEAD"], workspaceDir);
|
|
24
|
+
let cleaned = false;
|
|
25
|
+
const cleanup = () => {
|
|
26
|
+
if (cleaned)
|
|
27
|
+
return;
|
|
28
|
+
cleaned = true;
|
|
29
|
+
git(["worktree", "remove", "--force", dir], workspaceDir);
|
|
30
|
+
rmSync(dir, { recursive: true, force: true });
|
|
31
|
+
};
|
|
32
|
+
return { dir, cleanup };
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Prune leftover worktrees from a crashed prior run: remove the `.otto-tmp/wt`
|
|
36
|
+
* tree wholesale, then GC git's worktree registry so the stale entries don't
|
|
37
|
+
* linger. Call once before a fan-out round.
|
|
38
|
+
*/
|
|
39
|
+
export function reapWorktrees(workspaceDir) {
|
|
40
|
+
rmSync(join(workspaceDir, ".otto-tmp", "wt"), { recursive: true, force: true });
|
|
41
|
+
git(["worktree", "prune"], workspaceDir);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=worktree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../src/worktree.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,YAAoB,EACpB,EAAU;IAEV,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACpC,gFAAgF;IAChF,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;IAC1D,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;IAChE,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,IAAI,OAAO;YAAE,OAAO;QACpB,OAAO,GAAG,IAAI,CAAC;QACf,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC;IACF,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,YAAoB;IAChD,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChF,GAAG,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC;AAC3C,CAAC"}
|
package/package.json
CHANGED
package/templates/plan.md
CHANGED
|
@@ -87,9 +87,31 @@ Use the `Write` tool. An ordered checklist of **bite-sized, testable tasks**, on
|
|
|
87
87
|
Keep tasks ordered so each is gated on the prior; name the test file that pins
|
|
88
88
|
each task.
|
|
89
89
|
|
|
90
|
+
## 4b. WRITE THE TASK GRAPH (optional) — `.otto/tasks/<task-key>/tasks.json`
|
|
91
|
+
|
|
92
|
+
Use the `Write` tool to also emit a machine-readable task graph so Otto can fan
|
|
93
|
+
independent tasks out to isolated sub-agents (issue #66 P11). Shape:
|
|
94
|
+
|
|
95
|
+
```json
|
|
96
|
+
{
|
|
97
|
+
"version": 1,
|
|
98
|
+
"tasks": [
|
|
99
|
+
{ "id": "t1", "title": "<short>", "fileScope": ["path/you/expect/to/touch"], "dependsOn": [], "parallelSafe": true },
|
|
100
|
+
{ "id": "t2", "title": "<short>", "fileScope": ["other/path"], "dependsOn": ["t1"], "parallelSafe": false }
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Rules: `id` unique; `dependsOn` lists earlier task ids that must land first;
|
|
106
|
+
`fileScope` lists the files the task is expected to edit; set `parallelSafe`
|
|
107
|
+
**true only when** the task shares no files and no ordering with its siblings —
|
|
108
|
+
**be conservative and default to `false` when unsure**. This file is OPTIONAL:
|
|
109
|
+
if the work does not decompose into cleanly independent tasks, omit it and the
|
|
110
|
+
run proceeds sequentially. A malformed file is ignored (fan-out simply disabled).
|
|
111
|
+
|
|
90
112
|
## 5. COMMIT
|
|
91
113
|
|
|
92
|
-
Commit ONLY the spec + plan (
|
|
93
|
-
`docs(plan):` or `chore(plan):` commit. Then print a one-line
|
|
94
|
-
task-key and the number of plan tasks authored. Do not implement;
|
|
95
|
-
reviews the plan next.
|
|
114
|
+
Commit ONLY the spec + plan + (if written) the task graph — this is the whole
|
|
115
|
+
run, no code. Use a `docs(plan):` or `chore(plan):` commit. Then print a one-line
|
|
116
|
+
summary of the task-key and the number of plan tasks authored. Do not implement;
|
|
117
|
+
the human reviews the plan next.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{{ RESUME }}
|
|
2
|
+
|
|
3
|
+
<learnings>
|
|
4
|
+
|
|
5
|
+
!?`cat ./.otto/LEARNINGS.md|||_No learnings recorded yet._`
|
|
6
|
+
|
|
7
|
+
</learnings>
|
|
8
|
+
|
|
9
|
+
<task>
|
|
10
|
+
|
|
11
|
+
You are implementing **one** task in an isolated worktree, as part of a parallel
|
|
12
|
+
fan-out (issue #66 P11). Do the whole task and nothing else.
|
|
13
|
+
|
|
14
|
+
**Task:** {{ TASK_TITLE }}
|
|
15
|
+
|
|
16
|
+
**Files you are expected to touch (your scope — do not edit files outside it):**
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
{{ TASK_SCOPE }}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Stay strictly within that file scope: a sibling sub-agent owns every other file
|
|
23
|
+
in parallel, so editing outside your scope will collide at merge time. If the
|
|
24
|
+
task genuinely cannot be done without touching a file outside the scope, do as
|
|
25
|
+
much as you safely can within scope and note the gap in your commit message.
|
|
26
|
+
|
|
27
|
+
Write the failing test first where it applies, implement, run the relevant
|
|
28
|
+
feedback loop, and make a single focused commit for this task. Do not push.
|
|
29
|
+
|
|
30
|
+
</task>
|
|
31
|
+
|
|
32
|
+
@include:prompt.md
|