takt 0.35.0 → 0.35.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/builtins/en/facets/instructions/write-tests-first.md +4 -34
- package/builtins/en/facets/output-contracts/test-report.md +20 -0
- package/builtins/en/workflows/backend-cqrs.yaml +2 -4
- package/builtins/en/workflows/backend.yaml +2 -4
- package/builtins/en/workflows/default.yaml +2 -4
- package/builtins/en/workflows/dual.yaml +2 -4
- package/builtins/en/workflows/frontend.yaml +2 -4
- package/builtins/en/workflows/takt-default.yaml +2 -4
- package/builtins/ja/facets/instructions/write-tests-first.md +4 -34
- package/builtins/ja/facets/output-contracts/test-report.md +20 -0
- package/builtins/ja/workflows/backend-cqrs.yaml +2 -4
- package/builtins/ja/workflows/backend.yaml +2 -4
- package/builtins/ja/workflows/default.yaml +2 -4
- package/builtins/ja/workflows/dual.yaml +2 -4
- package/builtins/ja/workflows/frontend.yaml +2 -4
- package/builtins/ja/workflows/takt-default.yaml +2 -4
- package/dist/app/cli/immediateSigintExit.d.ts +17 -0
- package/dist/app/cli/immediateSigintExit.d.ts.map +1 -0
- package/dist/app/cli/immediateSigintExit.js +33 -0
- package/dist/app/cli/immediateSigintExit.js.map +1 -0
- package/dist/app/cli/index.d.ts.map +1 -1
- package/dist/app/cli/index.js +2 -0
- package/dist/app/cli/index.js.map +1 -1
- package/dist/core/piece/run/run-meta.d.ts +19 -0
- package/dist/core/piece/run/run-meta.d.ts.map +1 -0
- package/dist/core/piece/run/run-meta.js +42 -0
- package/dist/core/piece/run/run-meta.js.map +1 -0
- package/dist/features/interactive/runSessionReader.d.ts.map +1 -1
- package/dist/features/interactive/runSessionReader.js +4 -21
- package/dist/features/interactive/runSessionReader.js.map +1 -1
- package/dist/features/pipeline/steps.d.ts.map +1 -1
- package/dist/features/pipeline/steps.js +15 -7
- package/dist/features/pipeline/steps.js.map +1 -1
- package/dist/features/tasks/execute/outputFns.d.ts.map +1 -1
- package/dist/features/tasks/execute/outputFns.js +16 -1
- package/dist/features/tasks/execute/outputFns.js.map +1 -1
- package/dist/features/tasks/execute/pieceExecution.d.ts.map +1 -1
- package/dist/features/tasks/execute/pieceExecution.js +7 -1
- package/dist/features/tasks/execute/pieceExecution.js.map +1 -1
- package/dist/features/tasks/execute/resolveTask.d.ts +1 -1
- package/dist/features/tasks/execute/resolveTask.d.ts.map +1 -1
- package/dist/features/tasks/execute/resolveTask.js +6 -4
- package/dist/features/tasks/execute/resolveTask.js.map +1 -1
- package/dist/features/tasks/execute/runAllTasks.d.ts.map +1 -1
- package/dist/features/tasks/execute/runAllTasks.js +5 -0
- package/dist/features/tasks/execute/runAllTasks.js.map +1 -1
- package/dist/features/tasks/execute/runMeta.d.ts +1 -0
- package/dist/features/tasks/execute/runMeta.d.ts.map +1 -1
- package/dist/features/tasks/execute/runMeta.js +5 -0
- package/dist/features/tasks/execute/runMeta.js.map +1 -1
- package/dist/features/tasks/execute/selectAndExecute.d.ts.map +1 -1
- package/dist/features/tasks/execute/selectAndExecute.js +5 -0
- package/dist/features/tasks/execute/selectAndExecute.js.map +1 -1
- package/dist/features/tasks/execute/taskExecution.d.ts.map +1 -1
- package/dist/features/tasks/execute/taskExecution.js +12 -5
- package/dist/features/tasks/execute/taskExecution.js.map +1 -1
- package/dist/features/tasks/list/index.d.ts.map +1 -1
- package/dist/features/tasks/list/index.js +13 -7
- package/dist/features/tasks/list/index.js.map +1 -1
- package/dist/features/tasks/list/taskForceFailActions.d.ts +3 -0
- package/dist/features/tasks/list/taskForceFailActions.d.ts.map +1 -0
- package/dist/features/tasks/list/taskForceFailActions.js +67 -0
- package/dist/features/tasks/list/taskForceFailActions.js.map +1 -0
- package/dist/infra/claude-headless/headless-spawn.d.ts.map +1 -1
- package/dist/infra/claude-headless/headless-spawn.js +9 -2
- package/dist/infra/claude-headless/headless-spawn.js.map +1 -1
- package/dist/infra/claude-headless/stream-json-lines.d.ts +1 -0
- package/dist/infra/claude-headless/stream-json-lines.d.ts.map +1 -1
- package/dist/infra/claude-headless/stream-json-lines.js +27 -0
- package/dist/infra/claude-headless/stream-json-lines.js.map +1 -1
- package/dist/infra/providers/codex.d.ts.map +1 -1
- package/dist/infra/providers/codex.js +0 -27
- package/dist/infra/providers/codex.js.map +1 -1
- package/dist/infra/task/clone-base-branch.d.ts +7 -0
- package/dist/infra/task/clone-base-branch.d.ts.map +1 -1
- package/dist/infra/task/clone-base-branch.js +48 -0
- package/dist/infra/task/clone-base-branch.js.map +1 -1
- package/dist/infra/task/clone-exec.d.ts +5 -0
- package/dist/infra/task/clone-exec.d.ts.map +1 -1
- package/dist/infra/task/clone-exec.js +138 -1
- package/dist/infra/task/clone-exec.js.map +1 -1
- package/dist/infra/task/clone.d.ts +2 -0
- package/dist/infra/task/clone.d.ts.map +1 -1
- package/dist/infra/task/clone.js +39 -2
- package/dist/infra/task/clone.js.map +1 -1
- package/dist/infra/task/index.d.ts +1 -1
- package/dist/infra/task/index.d.ts.map +1 -1
- package/dist/infra/task/index.js +1 -1
- package/dist/infra/task/index.js.map +1 -1
- package/dist/infra/task/mapper.d.ts.map +1 -1
- package/dist/infra/task/mapper.js +3 -0
- package/dist/infra/task/mapper.js.map +1 -1
- package/dist/infra/task/runner.d.ts +7 -1
- package/dist/infra/task/runner.d.ts.map +1 -1
- package/dist/infra/task/runner.js +6 -0
- package/dist/infra/task/runner.js.map +1 -1
- package/dist/infra/task/schema.d.ts +6 -0
- package/dist/infra/task/schema.d.ts.map +1 -1
- package/dist/infra/task/schema.js +1 -0
- package/dist/infra/task/schema.js.map +1 -1
- package/dist/infra/task/taskLifecycleService.d.ts +7 -1
- package/dist/infra/task/taskLifecycleService.d.ts.map +1 -1
- package/dist/infra/task/taskLifecycleService.js +45 -0
- package/dist/infra/task/taskLifecycleService.js.map +1 -1
- package/dist/infra/task/types.d.ts +3 -0
- package/dist/infra/task/types.d.ts.map +1 -1
- package/dist/shared/ui/Progress.d.ts.map +1 -1
- package/dist/shared/ui/Progress.js +26 -7
- package/dist/shared/ui/Progress.js.map +1 -1
- package/dist/shared/ui/StatusLine.d.ts +24 -0
- package/dist/shared/ui/StatusLine.d.ts.map +1 -0
- package/dist/shared/ui/StatusLine.js +81 -0
- package/dist/shared/ui/StatusLine.js.map +1 -0
- package/dist/shared/ui/StreamDisplay.d.ts.map +1 -1
- package/dist/shared/ui/StreamDisplay.js.map +1 -1
- package/dist/shared/ui/TaskPrefixWriter.d.ts +4 -2
- package/dist/shared/ui/TaskPrefixWriter.d.ts.map +1 -1
- package/dist/shared/ui/TaskPrefixWriter.js +8 -4
- package/dist/shared/ui/TaskPrefixWriter.js.map +1 -1
- package/dist/shared/ui/index.d.ts +1 -0
- package/dist/shared/ui/index.d.ts.map +1 -1
- package/dist/shared/ui/index.js +1 -0
- package/dist/shared/ui/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -86,7 +86,7 @@ takt run
|
|
|
86
86
|
### Manage results
|
|
87
87
|
|
|
88
88
|
```bash
|
|
89
|
-
# List
|
|
89
|
+
# List task branches — merge, retry, force-fail, or delete
|
|
90
90
|
takt list
|
|
91
91
|
```
|
|
92
92
|
|
|
@@ -150,7 +150,7 @@ See the [Builtin Catalog](./docs/builtin-catalog.md) for all workflows and perso
|
|
|
150
150
|
|---------|-------------|
|
|
151
151
|
| `takt` | Talk to AI, refine requirements, execute or queue tasks |
|
|
152
152
|
| `takt run` | Execute all pending tasks |
|
|
153
|
-
| `takt list` | Manage task branches (merge, retry, instruct, delete) |
|
|
153
|
+
| `takt list` | Manage task branches (merge, retry, force-fail, instruct, delete) |
|
|
154
154
|
| `takt #N` | Execute GitHub Issue as task |
|
|
155
155
|
| `takt eject` | Copy builtin workflows/facets for customization |
|
|
156
156
|
| `takt repertoire add` | Install a repertoire package from GitHub |
|
|
@@ -24,37 +24,7 @@ Refer only to files within the Report Directory shown in the Piece Context. Do n
|
|
|
24
24
|
- Include tests that would catch implementations that incorrectly reuse a response envelope when reading requests
|
|
25
25
|
- Write tests that are expected to pass after implementation is complete (build errors and test failures are expected at this stage)
|
|
26
26
|
|
|
27
|
-
**
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
## Task
|
|
32
|
-
{One-line task summary}
|
|
33
|
-
|
|
34
|
-
## Planned changes
|
|
35
|
-
| Type | File |
|
|
36
|
-
|------|------|
|
|
37
|
-
| Create | `src/__tests__/example.test.ts` |
|
|
38
|
-
|
|
39
|
-
## Estimated size
|
|
40
|
-
Small / Medium / Large
|
|
41
|
-
|
|
42
|
-
## Impact area
|
|
43
|
-
- {Affected modules or features}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
**Decisions output contract (at completion, only if decisions were made):**
|
|
47
|
-
```markdown
|
|
48
|
-
# Decision Log
|
|
49
|
-
|
|
50
|
-
## 1. {Decision}
|
|
51
|
-
- **Context**: {Why the decision was needed}
|
|
52
|
-
- **Options considered**: {List of options}
|
|
53
|
-
- **Rationale**: {Reason for the choice}
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**Required output (include headings)**
|
|
57
|
-
## Work results
|
|
58
|
-
- {Summary of actions taken}
|
|
59
|
-
## Changes made
|
|
60
|
-
- {List of test files created}
|
|
27
|
+
**Test execution:**
|
|
28
|
+
- Run tests after creating them to check results
|
|
29
|
+
- Test failures and import errors are expected before implementation (including imports of not-yet-implemented modules)
|
|
30
|
+
- Fix errors that will persist after implementation, such as wrong import paths for existing modules
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
```markdown
|
|
2
|
+
# Test Creation Report
|
|
3
|
+
|
|
4
|
+
## Created Tests
|
|
5
|
+
| File | Type | Count | Summary |
|
|
6
|
+
|------|------|-------|---------|
|
|
7
|
+
| `{test file path}` | Unit / Integration | {N} | {what is tested} |
|
|
8
|
+
|
|
9
|
+
## Execution Results (Reference)
|
|
10
|
+
Test failures and import errors are expected before implementation.
|
|
11
|
+
|
|
12
|
+
| Status | Count | Notes |
|
|
13
|
+
|--------|-------|-------|
|
|
14
|
+
| Pass | {N} | |
|
|
15
|
+
| Fail / Import Error (expected) | {N} | Due to unimplemented modules |
|
|
16
|
+
| Error (needs fix) | {N} | Wrong paths for existing modules, etc. |
|
|
17
|
+
|
|
18
|
+
## Notes (only if decisions were made)
|
|
19
|
+
- {Test design decisions or notes}
|
|
20
|
+
```
|
|
@@ -98,10 +98,8 @@ steps:
|
|
|
98
98
|
interactive_only: true
|
|
99
99
|
output_contracts:
|
|
100
100
|
report:
|
|
101
|
-
- name: test-
|
|
102
|
-
format:
|
|
103
|
-
- name: test-decisions.md
|
|
104
|
-
format: coder-decisions
|
|
101
|
+
- name: test-report.md
|
|
102
|
+
format: test-report
|
|
105
103
|
- name: implement
|
|
106
104
|
edit: true
|
|
107
105
|
persona: coder
|
|
@@ -96,10 +96,8 @@ steps:
|
|
|
96
96
|
interactive_only: true
|
|
97
97
|
output_contracts:
|
|
98
98
|
report:
|
|
99
|
-
- name: test-
|
|
100
|
-
format:
|
|
101
|
-
- name: test-decisions.md
|
|
102
|
-
format: coder-decisions
|
|
99
|
+
- name: test-report.md
|
|
100
|
+
format: test-report
|
|
103
101
|
- name: implement
|
|
104
102
|
edit: true
|
|
105
103
|
persona: coder
|
|
@@ -111,10 +111,8 @@ steps:
|
|
|
111
111
|
interactive_only: true
|
|
112
112
|
output_contracts:
|
|
113
113
|
report:
|
|
114
|
-
- name: test-
|
|
115
|
-
format:
|
|
116
|
-
- name: test-decisions.md
|
|
117
|
-
format: coder-decisions
|
|
114
|
+
- name: test-report.md
|
|
115
|
+
format: test-report
|
|
118
116
|
- name: implement
|
|
119
117
|
edit: true
|
|
120
118
|
persona: coder
|
|
@@ -106,10 +106,8 @@ steps:
|
|
|
106
106
|
interactive_only: true
|
|
107
107
|
output_contracts:
|
|
108
108
|
report:
|
|
109
|
-
- name: test-
|
|
110
|
-
format:
|
|
111
|
-
- name: test-decisions.md
|
|
112
|
-
format: coder-decisions
|
|
109
|
+
- name: test-report.md
|
|
110
|
+
format: test-report
|
|
113
111
|
- name: implement
|
|
114
112
|
edit: true
|
|
115
113
|
persona: coder
|
|
@@ -100,10 +100,8 @@ steps:
|
|
|
100
100
|
interactive_only: true
|
|
101
101
|
output_contracts:
|
|
102
102
|
report:
|
|
103
|
-
- name: test-
|
|
104
|
-
format:
|
|
105
|
-
- name: test-decisions.md
|
|
106
|
-
format: coder-decisions
|
|
103
|
+
- name: test-report.md
|
|
104
|
+
format: test-report
|
|
107
105
|
- name: implement
|
|
108
106
|
edit: true
|
|
109
107
|
persona: coder
|
|
@@ -100,10 +100,8 @@ steps:
|
|
|
100
100
|
interactive_only: true
|
|
101
101
|
output_contracts:
|
|
102
102
|
report:
|
|
103
|
-
- name: test-
|
|
104
|
-
format:
|
|
105
|
-
- name: test-decisions.md
|
|
106
|
-
format: coder-decisions
|
|
103
|
+
- name: test-report.md
|
|
104
|
+
format: test-report
|
|
107
105
|
- name: implement
|
|
108
106
|
edit: true
|
|
109
107
|
persona: coder
|
|
@@ -24,37 +24,7 @@ Piece Contextに示されたReport Directory内のファイルのみ参照して
|
|
|
24
24
|
- レスポンス標準の envelope をリクエスト解釈へ流用した実装を見逃さないテストを含める
|
|
25
25
|
- テストは実装完了後にパスすることを前提に書く(この段階ではビルドエラーやテスト失敗は想定内)
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
## タスク
|
|
32
|
-
{タスクの1行要約}
|
|
33
|
-
|
|
34
|
-
## 変更予定
|
|
35
|
-
| 種別 | ファイル |
|
|
36
|
-
|------|---------|
|
|
37
|
-
| 作成 | `src/__tests__/example.test.ts` |
|
|
38
|
-
|
|
39
|
-
## 推定規模
|
|
40
|
-
Small / Medium / Large
|
|
41
|
-
|
|
42
|
-
## 影響範囲
|
|
43
|
-
- {影響するモジュールや機能}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
**Decisions出力契約(完了時、決定がある場合のみ):**
|
|
47
|
-
```markdown
|
|
48
|
-
# 決定ログ
|
|
49
|
-
|
|
50
|
-
## 1. {決定内容}
|
|
51
|
-
- **背景**: {なぜ決定が必要だったか}
|
|
52
|
-
- **検討した選択肢**: {選択肢リスト}
|
|
53
|
-
- **理由**: {選んだ理由}
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**必須出力(見出しを含める)**
|
|
57
|
-
## 作業結果
|
|
58
|
-
- {実施内容の要約}
|
|
59
|
-
## 変更内容
|
|
60
|
-
- {作成したテストファイル一覧}
|
|
27
|
+
**テスト実行について:**
|
|
28
|
+
- テスト作成後、テストを実行して結果を確認する
|
|
29
|
+
- 実装前のためテスト失敗・import エラーは想定内(未実装モジュールの import を含む)
|
|
30
|
+
- 既存モジュールの import パスミスなど、実装完了後も解消しないエラーは修正する
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
```markdown
|
|
2
|
+
# テスト作成レポート
|
|
3
|
+
|
|
4
|
+
## 作成テスト
|
|
5
|
+
| ファイル | 種別 | テスト数 | 概要 |
|
|
6
|
+
|---------|------|---------|------|
|
|
7
|
+
| `{テストファイルパス}` | 単体 / 統合 | {N} | {テスト対象の概要} |
|
|
8
|
+
|
|
9
|
+
## 実行結果(参考)
|
|
10
|
+
実装前のためテスト失敗・import エラーは想定内。
|
|
11
|
+
|
|
12
|
+
| 状態 | 件数 | 備考 |
|
|
13
|
+
|------|------|------|
|
|
14
|
+
| Pass | {N} | |
|
|
15
|
+
| Fail / Import Error(想定内) | {N} | 未実装モジュール起因 |
|
|
16
|
+
| Error(要対応) | {N} | 既存パスミス等、実装後も残るもの |
|
|
17
|
+
|
|
18
|
+
## 備考(判断がある場合のみ)
|
|
19
|
+
- {テスト設計の判断や注意点}
|
|
20
|
+
```
|
|
@@ -98,10 +98,8 @@ steps:
|
|
|
98
98
|
interactive_only: true
|
|
99
99
|
output_contracts:
|
|
100
100
|
report:
|
|
101
|
-
- name: test-
|
|
102
|
-
format:
|
|
103
|
-
- name: test-decisions.md
|
|
104
|
-
format: coder-decisions
|
|
101
|
+
- name: test-report.md
|
|
102
|
+
format: test-report
|
|
105
103
|
- name: implement
|
|
106
104
|
edit: true
|
|
107
105
|
persona: coder
|
|
@@ -96,10 +96,8 @@ steps:
|
|
|
96
96
|
interactive_only: true
|
|
97
97
|
output_contracts:
|
|
98
98
|
report:
|
|
99
|
-
- name: test-
|
|
100
|
-
format:
|
|
101
|
-
- name: test-decisions.md
|
|
102
|
-
format: coder-decisions
|
|
99
|
+
- name: test-report.md
|
|
100
|
+
format: test-report
|
|
103
101
|
- name: implement
|
|
104
102
|
edit: true
|
|
105
103
|
persona: coder
|
|
@@ -111,10 +111,8 @@ steps:
|
|
|
111
111
|
interactive_only: true
|
|
112
112
|
output_contracts:
|
|
113
113
|
report:
|
|
114
|
-
- name: test-
|
|
115
|
-
format:
|
|
116
|
-
- name: test-decisions.md
|
|
117
|
-
format: coder-decisions
|
|
114
|
+
- name: test-report.md
|
|
115
|
+
format: test-report
|
|
118
116
|
- name: implement
|
|
119
117
|
edit: true
|
|
120
118
|
persona: coder
|
|
@@ -106,10 +106,8 @@ steps:
|
|
|
106
106
|
interactive_only: true
|
|
107
107
|
output_contracts:
|
|
108
108
|
report:
|
|
109
|
-
- name: test-
|
|
110
|
-
format:
|
|
111
|
-
- name: test-decisions.md
|
|
112
|
-
format: coder-decisions
|
|
109
|
+
- name: test-report.md
|
|
110
|
+
format: test-report
|
|
113
111
|
- name: implement
|
|
114
112
|
edit: true
|
|
115
113
|
persona: coder
|
|
@@ -100,10 +100,8 @@ steps:
|
|
|
100
100
|
interactive_only: true
|
|
101
101
|
output_contracts:
|
|
102
102
|
report:
|
|
103
|
-
- name: test-
|
|
104
|
-
format:
|
|
105
|
-
- name: test-decisions.md
|
|
106
|
-
format: coder-decisions
|
|
103
|
+
- name: test-report.md
|
|
104
|
+
format: test-report
|
|
107
105
|
- name: implement
|
|
108
106
|
edit: true
|
|
109
107
|
persona: coder
|
|
@@ -100,10 +100,8 @@ steps:
|
|
|
100
100
|
interactive_only: true
|
|
101
101
|
output_contracts:
|
|
102
102
|
report:
|
|
103
|
-
- name: test-
|
|
104
|
-
format:
|
|
105
|
-
- name: test-decisions.md
|
|
106
|
-
format: coder-decisions
|
|
103
|
+
- name: test-report.md
|
|
104
|
+
format: test-report
|
|
107
105
|
- name: implement
|
|
108
106
|
edit: true
|
|
109
107
|
persona: coder
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
type StdinLike = EventEmitter & {
|
|
3
|
+
isTTY?: boolean;
|
|
4
|
+
isRaw?: boolean;
|
|
5
|
+
setRawMode?: (mode: boolean) => void;
|
|
6
|
+
resume: () => void;
|
|
7
|
+
removeListener: (event: string, listener: (...args: unknown[]) => void) => StdinLike;
|
|
8
|
+
on: (event: string, listener: (...args: unknown[]) => void) => StdinLike;
|
|
9
|
+
};
|
|
10
|
+
type ProcessLike = EventEmitter & {
|
|
11
|
+
pid: number;
|
|
12
|
+
stdin: StdinLike;
|
|
13
|
+
once: (event: string, listener: (...args: unknown[]) => void) => ProcessLike;
|
|
14
|
+
};
|
|
15
|
+
export declare function installImmediateSigintExit(commandName: string | undefined, runtime?: ProcessLike): void;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=immediateSigintExit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"immediateSigintExit.d.ts","sourceRoot":"","sources":["../../../src/app/cli/immediateSigintExit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,KAAK,SAAS,GAAG,YAAY,GAAG;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,SAAS,CAAC;IACrF,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,SAAS,CAAC;CAC1E,CAAC;AAEF,KAAK,WAAW,GAAG,YAAY,GAAG;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,WAAW,CAAC;CAC9E,CAAC;AAMF,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,GAAE,WAA+C,GACvD,IAAI,CAkCN"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
function isRunLikeCommand(commandName) {
|
|
2
|
+
return commandName === 'run' || commandName === 'watch';
|
|
3
|
+
}
|
|
4
|
+
export function installImmediateSigintExit(commandName, runtime = process) {
|
|
5
|
+
if (!isRunLikeCommand(commandName)) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
const stdin = runtime.stdin;
|
|
9
|
+
const hadRawMode = stdin.isRaw === true;
|
|
10
|
+
let enabledRawMode = false;
|
|
11
|
+
if (!stdin.isTTY) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (typeof stdin.setRawMode === 'function' && !hadRawMode) {
|
|
15
|
+
stdin.setRawMode(true);
|
|
16
|
+
enabledRawMode = true;
|
|
17
|
+
}
|
|
18
|
+
const onData = (chunk) => {
|
|
19
|
+
const text = typeof chunk === 'string' ? chunk : chunk.toString('utf-8');
|
|
20
|
+
if (text.includes('\u0003')) {
|
|
21
|
+
runtime.emit('SIGINT');
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
stdin.on('data', onData);
|
|
25
|
+
stdin.resume();
|
|
26
|
+
runtime.once('exit', () => {
|
|
27
|
+
stdin.removeListener('data', onData);
|
|
28
|
+
if (enabledRawMode && typeof stdin.setRawMode === 'function') {
|
|
29
|
+
stdin.setRawMode(false);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=immediateSigintExit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"immediateSigintExit.js","sourceRoot":"","sources":["../../../src/app/cli/immediateSigintExit.ts"],"names":[],"mappings":"AAiBA,SAAS,gBAAgB,CAAC,WAA+B;IACvD,OAAO,WAAW,KAAK,KAAK,IAAI,WAAW,KAAK,OAAO,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,WAA+B,EAC/B,UAAuB,OAAiC;IAExD,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;QACnC,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;IACxC,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1D,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvB,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,KAAsB,EAAQ,EAAE;QAC9C,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,KAAK,CAAC,MAAM,EAAE,CAAC;IAEf,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;QACxB,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,cAAc,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAC7D,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/cli/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/cli/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAYH,OAAO,eAAe,CAAC"}
|
package/dist/app/cli/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import { checkForUpdates } from '../../shared/utils/index.js';
|
|
|
8
8
|
import { getErrorMessage } from '../../shared/utils/error.js';
|
|
9
9
|
import { error as errorLog } from '../../shared/ui/index.js';
|
|
10
10
|
import { resolveRemovedRootCommand, resolveSlashFallbackTask } from './helpers.js';
|
|
11
|
+
import { installImmediateSigintExit } from './immediateSigintExit.js';
|
|
11
12
|
checkForUpdates();
|
|
12
13
|
// Import in dependency order
|
|
13
14
|
import { program, runPreActionHook } from './program.js';
|
|
@@ -15,6 +16,7 @@ import './commands.js';
|
|
|
15
16
|
import { executeDefaultAction } from './routing.js';
|
|
16
17
|
(async () => {
|
|
17
18
|
const args = process.argv.slice(2);
|
|
19
|
+
installImmediateSigintExit(args[0]);
|
|
18
20
|
const { operands } = program.parseOptions(args);
|
|
19
21
|
const removedRootCommand = resolveRemovedRootCommand(operands);
|
|
20
22
|
if (removedRootCommand !== null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/cli/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/cli/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,eAAe,EAAE,CAAC;AAElB,6BAA6B;AAC7B,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,CAAC,KAAK,IAAI,EAAE;IACV,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;QAChC,QAAQ,CAAC,2BAA2B,kBAAkB,GAAG,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAChE,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAExE,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,gBAAgB,EAAE,CAAC;QACzB,MAAM,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,qEAAqE;IACrE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;IAE3B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACjB,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface RunMeta {
|
|
2
|
+
task: string;
|
|
3
|
+
piece: string;
|
|
4
|
+
runSlug: string;
|
|
5
|
+
runRoot: string;
|
|
6
|
+
reportDirectory: string;
|
|
7
|
+
contextDirectory: string;
|
|
8
|
+
logsDirectory: string;
|
|
9
|
+
status: 'running' | 'completed' | 'aborted';
|
|
10
|
+
startTime: string;
|
|
11
|
+
endTime?: string;
|
|
12
|
+
iterations?: number;
|
|
13
|
+
currentStep?: string;
|
|
14
|
+
currentIteration?: number;
|
|
15
|
+
}
|
|
16
|
+
export declare function readRunMeta(metaPath: string): RunMeta | null;
|
|
17
|
+
export declare function readRunMetaBySlug(cwd: string, slug: string): RunMeta | null;
|
|
18
|
+
export declare function findRunningStepByRunSlug(cwd: string, runSlug: string): string | undefined;
|
|
19
|
+
//# sourceMappingURL=run-meta.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-meta.d.ts","sourceRoot":"","sources":["../../../../src/core/piece/run/run-meta.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAe5D;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAY3E;AAcD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEzF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { isPathInside, isValidReportDirName } from '../../../shared/utils/index.js';
|
|
4
|
+
export function readRunMeta(metaPath) {
|
|
5
|
+
if (!existsSync(metaPath)) {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
const raw = readFileSync(metaPath, 'utf-8').trim();
|
|
9
|
+
if (!raw) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
try {
|
|
13
|
+
return JSON.parse(raw);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function readRunMetaBySlug(cwd, slug) {
|
|
20
|
+
if (!isValidReportDirName(slug)) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
const runsDir = resolve(cwd, '.takt', 'runs');
|
|
24
|
+
const metaPath = resolve(runsDir, slug, 'meta.json');
|
|
25
|
+
if (!isPathInside(runsDir, metaPath)) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
return readRunMeta(metaPath);
|
|
29
|
+
}
|
|
30
|
+
function resolveRunningStep(meta) {
|
|
31
|
+
if (!meta) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
if (meta.status !== 'running' || !meta.currentStep) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
return meta.currentStep;
|
|
38
|
+
}
|
|
39
|
+
export function findRunningStepByRunSlug(cwd, runSlug) {
|
|
40
|
+
return resolveRunningStep(readRunMetaBySlug(cwd, runSlug));
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=run-meta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-meta.js","sourceRoot":"","sources":["../../../../src/core/piece/run/run-meta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAkBpF,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,IAAY;IACzD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IACrD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAoB;IAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC,WAAW,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAW,EAAE,OAAe;IACnE,OAAO,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runSessionReader.d.ts","sourceRoot":"","sources":["../../../src/features/interactive/runSessionReader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"runSessionReader.d.ts","sourceRoot":"","sources":["../../../src/features/interactive/runSessionReader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH,wCAAwC;AACxC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,8CAA8C;AAC9C,UAAU,gBAAgB;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,0BAA0B;AAC1B,UAAU,WAAW;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,0DAA0D;AAC1D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;CAC1C;AAED,6DAA6D;AAC7D,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAmDD;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,EAAE,CA0BxD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI9E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAU/D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB,CA2BlF;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYxF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,iBAAiB,GAAG;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB,CAiBA"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
8
8
|
import { join } from 'node:path';
|
|
9
|
+
import { readRunMetaBySlug } from '../../core/piece/run/run-meta.js';
|
|
9
10
|
import { PROVIDER_EVENTS_LOG_FILE_SUFFIX, USAGE_EVENTS_LOG_FILE_SUFFIX, } from '../../core/logging/contracts.js';
|
|
10
11
|
import { loadNdjsonLog } from '../../infra/fs/index.js';
|
|
11
12
|
/** Maximum number of runs to return from listing */
|
|
@@ -18,21 +19,6 @@ function truncateContent(content, maxLength) {
|
|
|
18
19
|
}
|
|
19
20
|
return content.slice(0, maxLength) + '…';
|
|
20
21
|
}
|
|
21
|
-
function parseMetaJson(metaPath) {
|
|
22
|
-
if (!existsSync(metaPath)) {
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
25
|
-
const raw = readFileSync(metaPath, 'utf-8').trim();
|
|
26
|
-
if (!raw) {
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
try {
|
|
30
|
-
return JSON.parse(raw);
|
|
31
|
-
}
|
|
32
|
-
catch {
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
22
|
function buildMovementLogs(sessionLog) {
|
|
37
23
|
return sessionLog.history.map((entry) => ({
|
|
38
24
|
step: entry.step,
|
|
@@ -77,8 +63,7 @@ export function listRecentRuns(cwd) {
|
|
|
77
63
|
for (const entry of entries) {
|
|
78
64
|
if (!entry.isDirectory())
|
|
79
65
|
continue;
|
|
80
|
-
const
|
|
81
|
-
const meta = parseMetaJson(metaPath);
|
|
66
|
+
const meta = readRunMetaBySlug(cwd, entry.name);
|
|
82
67
|
if (!meta)
|
|
83
68
|
continue;
|
|
84
69
|
summaries.push({
|
|
@@ -106,8 +91,7 @@ export function findRunForTask(cwd, taskContent) {
|
|
|
106
91
|
* Get absolute paths to a run's logs and reports directories.
|
|
107
92
|
*/
|
|
108
93
|
export function getRunPaths(cwd, slug) {
|
|
109
|
-
const
|
|
110
|
-
const meta = parseMetaJson(metaPath);
|
|
94
|
+
const meta = readRunMetaBySlug(cwd, slug);
|
|
111
95
|
if (!meta) {
|
|
112
96
|
throw new Error(`Run not found: ${slug}`);
|
|
113
97
|
}
|
|
@@ -120,8 +104,7 @@ export function getRunPaths(cwd, slug) {
|
|
|
120
104
|
* Load full run session context for prompt injection.
|
|
121
105
|
*/
|
|
122
106
|
export function loadRunSessionContext(cwd, slug) {
|
|
123
|
-
const
|
|
124
|
-
const meta = parseMetaJson(metaPath);
|
|
107
|
+
const meta = readRunMetaBySlug(cwd, slug);
|
|
125
108
|
if (!meta) {
|
|
126
109
|
throw new Error(`Run not found: ${slug}`);
|
|
127
110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runSessionReader.js","sourceRoot":"","sources":["../../../src/features/interactive/runSessionReader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,oDAAoD;AACpD,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB,wDAAwD;AACxD,MAAM,kBAAkB,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"runSessionReader.js","sourceRoot":"","sources":["../../../src/features/interactive/runSessionReader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../../src/features/pipeline/steps.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAkB,MAAM,0BAA0B,CAAC;AAGtE,OAAO,EAAoE,KAAK,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../../src/features/pipeline/steps.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAkB,MAAM,0BAA0B,CAAC;AAGtE,OAAO,EAAoE,KAAK,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAIpI,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,KAAK,CAAC;IAClB,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,GAAG,uBAAuB,CAAC;AA4B7E,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,CAWR;AA2CD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,wBAAwB,GAAG,WAAW,GAAG,SAAS,CAmC7F;AAED,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,gBAAgB,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,CAAC,EAChG,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,gBAAgB,CAAC,CA2C3B;AAED,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,UAAU,GAAG,OAAO,CAAC,GAC5D,OAAO,CAAC,OAAO,CAAC,CA2BlB;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,OAAO,GAClB,OAAO,CA0BT;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,GACnE,MAAM,GAAG,SAAS,CAsBpB"}
|
|
@@ -4,6 +4,7 @@ import { resolveConfigValue } from '../../infra/config/index.js';
|
|
|
4
4
|
import { stageAndCommit, resolveBaseBranch, pushBranch, checkoutBranch } from '../../infra/task/index.js';
|
|
5
5
|
import { executeTask, confirmAndCreateWorktree } from '../tasks/index.js';
|
|
6
6
|
import { info, error, success } from '../../shared/ui/index.js';
|
|
7
|
+
import { statusLine } from '../../shared/ui/StatusLine.js';
|
|
7
8
|
import { getErrorMessage } from '../../shared/utils/index.js';
|
|
8
9
|
import { sanitizeTerminalText } from '../../shared/utils/text.js';
|
|
9
10
|
function requireBaseBranch(baseBranch, context) {
|
|
@@ -151,13 +152,20 @@ export async function runPiece(projectCwd, piece, task, execCwd, options) {
|
|
|
151
152
|
const agentOverrides = (options.provider || options.model)
|
|
152
153
|
? { provider: options.provider, model: options.model }
|
|
153
154
|
: undefined;
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
155
|
+
statusLine.start('Running...');
|
|
156
|
+
let taskSuccess;
|
|
157
|
+
try {
|
|
158
|
+
taskSuccess = await executeTask({
|
|
159
|
+
task,
|
|
160
|
+
cwd: execCwd,
|
|
161
|
+
pieceIdentifier: piece,
|
|
162
|
+
projectCwd,
|
|
163
|
+
agentOverrides,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
statusLine.stop();
|
|
168
|
+
}
|
|
161
169
|
if (!taskSuccess) {
|
|
162
170
|
error(`Workflow '${safePiece}' failed`);
|
|
163
171
|
return false;
|