intent-log 0.1.0 → 0.3.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.
Files changed (38) hide show
  1. package/README.md +125 -16
  2. package/dist/adapter/__tests__/claude-code-log-reader.test.js +99 -0
  3. package/dist/adapter/__tests__/claude-code-log-reader.test.js.map +1 -1
  4. package/dist/adapter/__tests__/filesystem-repository.test.js +1 -0
  5. package/dist/adapter/__tests__/filesystem-repository.test.js.map +1 -1
  6. package/dist/adapter/__tests__/privacy-filter.test.js +22 -1
  7. package/dist/adapter/__tests__/privacy-filter.test.js.map +1 -1
  8. package/dist/adapter/claude-code-log-reader.js +37 -2
  9. package/dist/adapter/claude-code-log-reader.js.map +1 -1
  10. package/dist/adapter/claude-code-summarizer.js +25 -7
  11. package/dist/adapter/claude-code-summarizer.js.map +1 -1
  12. package/dist/adapter/filesystem-repository.js +7 -2
  13. package/dist/adapter/filesystem-repository.js.map +1 -1
  14. package/dist/adapter/privacy-filter.js +38 -11
  15. package/dist/adapter/privacy-filter.js.map +1 -1
  16. package/dist/cli/replay.d.ts +5 -0
  17. package/dist/cli/replay.js +69 -0
  18. package/dist/cli/replay.js.map +1 -0
  19. package/dist/cli/show.js +3 -0
  20. package/dist/cli/show.js.map +1 -1
  21. package/dist/domain/__tests__/session.test.js +2 -0
  22. package/dist/domain/__tests__/session.test.js.map +1 -1
  23. package/dist/domain/__tests__/step.test.js +34 -0
  24. package/dist/domain/__tests__/step.test.js.map +1 -1
  25. package/dist/domain/session.d.ts +1 -0
  26. package/dist/domain/session.js.map +1 -1
  27. package/dist/domain/step.d.ts +1 -0
  28. package/dist/domain/step.js +11 -0
  29. package/dist/domain/step.js.map +1 -1
  30. package/dist/index.js +33 -3
  31. package/dist/index.js.map +1 -1
  32. package/dist/port/summarizer.d.ts +1 -0
  33. package/dist/usecase/__tests__/collect.test.js +162 -3
  34. package/dist/usecase/__tests__/collect.test.js.map +1 -1
  35. package/dist/usecase/collect.d.ts +1 -0
  36. package/dist/usecase/collect.js +67 -6
  37. package/dist/usecase/collect.js.map +1 -1
  38. package/package.json +1 -1
package/README.md CHANGED
@@ -5,21 +5,55 @@
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
6
  [![Node.js](https://img.shields.io/badge/node-%3E%3D22-brightgreen)](https://nodejs.org/)
7
7
 
8
- **Version control for intent, not just code.**
8
+ **Code is disposable. Intent is the asset.**
9
9
 
10
- When you build software with AI agents, your codebase changes fastbut the *why* behind each change gets lost in chat logs. `intent` extracts the human intent from your AI coding sessions and turns it into a readable, reviewable history.
10
+ AI generates code. You can regenerate it anytime. What you can't regenerate is the sequence of decisions that shaped the software — the problems you identified, the constraints you set, the directions you chose. `intent` captures that sequence from your AI coding sessions and turns it into a reproducible, reviewable history.
11
11
 
12
- ## Why
12
+ ## The problem
13
13
 
14
- Code diffs show *what* changed. Commit messages try to explain *why*. But when you're vibe-coding with AI, the real story lives in your conversation the problem you described, the direction you chose, the constraints you set.
14
+ When you build with AI agents, your codebase changes fast. But the *why* behind each change gets lost in chat logs. A month later, you open the project and ask yourself: "Why did I build it this way?"
15
15
 
16
- `intent` captures that story automatically. It reads your Claude Code session logs, extracts the human decisions, and produces a structured timeline of intent. Think of it as `git log` for your thinking.
16
+ Git log shows *what* changed. Commit messages try to explain *why*. But the real story — the trial-and-error, the constraints, the rejected approaches lives in your conversation with the AI. And that conversation disappears when the session ends.
17
17
 
18
- ## What it does
18
+ ## What intent does
19
19
 
20
- - **Collects** intent from Claude Code session logs including plan executions and slash command runs
21
- - **Summarizes** each session into a structured step: what you asked, why, and what was achieved
22
- - **Tracks** the evolution of your project through human decisions, not just code changes
20
+ `intent` reads your Claude Code session logs and extracts a structured timeline of human decisions.
21
+
22
+ ```
23
+ $ intent log
24
+ 001 2026-02-15 認証機能の追加
25
+ 002 2026-02-15 ログインバグの修正
26
+ 003 2026-02-16 /commit スキル実行
27
+ ```
28
+
29
+ Each step captures:
30
+
31
+ - **prompt** — what you asked the AI to do
32
+ - **reasoning** — why you chose this approach
33
+ - **outcome** — what was achieved
34
+ - **friction** — what went wrong along the way
35
+
36
+ ## Why this matters
37
+
38
+ ### Reproducibility
39
+
40
+ A prompt history is a recipe. If you have the full sequence of intents that built a piece of software, you (or someone else) can rebuild it — or build a better version by tweaking specific steps.
41
+
42
+ ### Trust signal
43
+
44
+ Software built through structured flows (plans, tested skills, slash commands) is more reliable than software built through free-form conversation. `intent` makes that distinction visible:
45
+
46
+ ```
47
+ 001 2026-02-15 認証機能の追加 [plan]
48
+ 002 2026-02-15 /commit スキル実行 [skill]
49
+ 003 2026-02-16 パフォーマンス改善 [feature]
50
+ ```
51
+
52
+ Steps tagged `[plan]` or `[skill]` were executed through structured, repeatable processes. This is a quality signal.
53
+
54
+ ### Team context
55
+
56
+ When someone joins a project, they don't just need the code — they need to understand the decisions behind it. `intent` gives them a readable timeline of why the software evolved the way it did.
23
57
 
24
58
  ## Quick start
25
59
 
@@ -32,6 +66,11 @@ intent collect
32
66
  intent log
33
67
  ```
34
68
 
69
+ ### Requirements
70
+
71
+ - Node.js 22+
72
+ - Claude Code CLI installed and authenticated
73
+
35
74
  ## Commands
36
75
 
37
76
  | Command | Description |
@@ -40,6 +79,7 @@ intent log
40
79
  | `intent collect` | Extract intent from Claude Code session logs |
41
80
  | `intent log` | Show the timeline of intent steps |
42
81
  | `intent show <step>` | View details of a specific step |
82
+ | `intent replay` | Export prompt history in a reproducible format |
43
83
  | `intent rm <step>` | Remove a step |
44
84
  | `intent reset` | Clear all collected steps |
45
85
 
@@ -47,18 +87,87 @@ intent log
47
87
 
48
88
  1. You work with Claude Code as usual
49
89
  2. `intent collect` reads the session logs from `~/.claude/projects/`
50
- 3. Each session is analyzed — plan executions are parsed directly, regular sessions are summarized via Claude
51
- 4. The result is a series of numbered steps stored in `.intent/steps/`
90
+ 3. Each session is analyzed:
91
+ - **Plan executions** are parsed directly from the plan markdown (no AI call needed)
92
+ - **Skill/slash command sessions** are auto-detected and tagged
93
+ - **Regular conversations** are summarized via Claude to extract the human intent
94
+ 4. Privacy filter removes sensitive data (API keys, tokens, short/trivial prompts)
95
+ 5. Results are stored as numbered markdown steps in `.intent/steps/`
96
+
97
+ ## Replay
52
98
 
53
- ## Example output
99
+ Export your intent history as a readable, reproducible document:
100
+
101
+ ```bash
102
+ # Output to stdout
103
+ intent replay
54
104
 
105
+ # Save to file
106
+ intent replay -o replay.md
107
+
108
+ # Specific range
109
+ intent replay --from 3 --to 10
55
110
  ```
56
- $ intent log
57
- 001 feat: 認証機能の追加 [feature] 2025-01-15
58
- 002 fix: ログインバグの修正 [bugfix] 2025-01-15
59
- 003 /commit スキル実行 [skill] 2025-01-16
111
+
112
+ The output contains each step's prompt, reasoning, and outcome — everything needed to understand or reproduce the development process.
113
+
114
+ ## Step format
115
+
116
+ Each step is stored as a markdown file with frontmatter:
117
+
118
+ ```markdown
119
+ ---
120
+ step: 1
121
+ title: "認証機能の追加"
122
+ session: "e527b849-..."
123
+ timestamp: 2026-02-15T10:30:00Z
124
+ tags: [plan]
125
+ ---
126
+
127
+ ## prompt
128
+
129
+ ログイン機能を追加。OAuth2対応で、Google/GitHubをサポート。
130
+
131
+ ## reasoning
132
+
133
+ 既存のセッション管理を活かしつつ、OAuth2プロバイダを抽象化して追加しやすくした。
134
+
135
+ ## outcome
136
+
137
+ Google/GitHubログインが動作。プロバイダ追加はadapter実装のみで可能。
138
+
139
+ ## friction
140
+
141
+ GitHub OAuthのcallback URLがlocalhostで動かず、ngrokで回避。
142
+ ```
143
+
144
+ ## Privacy
145
+
146
+ `intent` never sends raw session logs to external services. The privacy filter runs locally before any summarization:
147
+
148
+ - API keys, tokens, and secrets are stripped by regex patterns
149
+ - Short/trivial prompts (< 20 chars) are excluded
150
+ - Agent system instructions are filtered out
151
+ - Custom patterns can be added in `.intent/config.toml`
152
+
153
+ ```toml
154
+ [filter]
155
+ exclude_patterns = [
156
+ "(?i)(api.?key|token|secret|password)",
157
+ "^(はい|ok|yes|y|n|no)$",
158
+ ]
159
+ min_prompt_length = 20
60
160
  ```
61
161
 
162
+ ## Roadmap
163
+
164
+ - [ ] **Friction auto-extraction** — Detect errors, retries, and failed tool uses to populate friction automatically
165
+ - [ ] **Step dependencies** — Track relationships between steps (e.g., "Step 5 was a bugfix for Step 3")
166
+ - [ ] **Trust scoring** — Score each step based on how it was created (plan > skill > free conversation)
167
+ - [ ] **`intent diff`** — Compare intent history between two projects or branches
168
+ - [ ] **`intent fork`** — Import someone's intent history and replay it in your environment
169
+ - [ ] **Multi-agent support** — Cursor, Windsurf, and other AI coding tools
170
+
62
171
  ## License
63
172
 
64
173
  MIT
@@ -178,6 +178,46 @@ describe("parseJsonl", () => {
178
178
  expect(turns).toHaveLength(1);
179
179
  expect(turns[0].userPrompt).toBe("質問です");
180
180
  });
181
+ it("Skill tool_use からスキル名を抽出する", () => {
182
+ const content = jsonl({
183
+ type: "user",
184
+ message: { role: "user", content: "/commit" },
185
+ }, {
186
+ type: "assistant",
187
+ message: {
188
+ role: "assistant",
189
+ content: [
190
+ {
191
+ type: "tool_use",
192
+ name: "Skill",
193
+ input: { skill: "commit-commands:commit" },
194
+ },
195
+ ],
196
+ },
197
+ });
198
+ const turns = parseJsonl(content);
199
+ expect(turns).toHaveLength(1);
200
+ expect(turns[0].skills).toEqual(["commit-commands:commit"]);
201
+ expect(turns[0].toolUses).toEqual(["Skill"]);
202
+ });
203
+ it("Skill 以外の tool_use はスキルに含めない", () => {
204
+ const content = jsonl({
205
+ type: "user",
206
+ message: { role: "user", content: "ファイルを読んで" },
207
+ }, {
208
+ type: "assistant",
209
+ message: {
210
+ role: "assistant",
211
+ content: [
212
+ { type: "tool_use", name: "Read", input: { path: "/test" } },
213
+ ],
214
+ },
215
+ });
216
+ const turns = parseJsonl(content);
217
+ expect(turns).toHaveLength(1);
218
+ expect(turns[0].skills).toEqual([]);
219
+ expect(turns[0].toolUses).toEqual(["Read"]);
220
+ });
181
221
  it("messageなしのエントリはスキップされる", () => {
182
222
  const content = jsonl({ type: "progress" }, {
183
223
  type: "user",
@@ -193,5 +233,64 @@ describe("parseJsonl", () => {
193
233
  expect(turns).toHaveLength(1);
194
234
  expect(turns[0].userPrompt).toBe("質問");
195
235
  });
236
+ it("tool_result の content を toolResults に蓄積する", () => {
237
+ const content = jsonl({
238
+ type: "user",
239
+ message: { role: "user", content: "ビルドして" },
240
+ }, {
241
+ type: "assistant",
242
+ message: {
243
+ role: "assistant",
244
+ content: [{ type: "tool_use", name: "Bash" }],
245
+ },
246
+ }, {
247
+ type: "user",
248
+ message: {
249
+ role: "user",
250
+ content: [{ type: "tool_result", content: "error TS2345: type mismatch" }],
251
+ },
252
+ }, {
253
+ type: "assistant",
254
+ message: {
255
+ role: "assistant",
256
+ content: [{ type: "text", text: "修正します" }],
257
+ },
258
+ });
259
+ const turns = parseJsonl(content);
260
+ expect(turns).toHaveLength(1);
261
+ expect(turns[0].toolResults).toEqual(["error TS2345: type mismatch"]);
262
+ });
263
+ it("tool_result の配列形式 content を toolResults に蓄積する", () => {
264
+ const content = jsonl({
265
+ type: "user",
266
+ message: { role: "user", content: "実行して" },
267
+ }, {
268
+ type: "assistant",
269
+ message: {
270
+ role: "assistant",
271
+ content: [{ type: "tool_use", name: "Bash" }],
272
+ },
273
+ }, {
274
+ type: "user",
275
+ message: {
276
+ role: "user",
277
+ content: [
278
+ {
279
+ type: "tool_result",
280
+ content: [{ type: "text", text: "Build failed" }],
281
+ },
282
+ ],
283
+ },
284
+ }, {
285
+ type: "assistant",
286
+ message: {
287
+ role: "assistant",
288
+ content: [{ type: "text", text: "了解" }],
289
+ },
290
+ });
291
+ const turns = parseJsonl(content);
292
+ expect(turns).toHaveLength(1);
293
+ expect(turns[0].toolResults).toEqual(["Build failed"]);
294
+ });
196
295
  });
197
296
  //# sourceMappingURL=claude-code-log-reader.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code-log-reader.test.js","sourceRoot":"","sources":["../../../src/adapter/__tests__/claude-code-log-reader.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-code-log-reader.test.js","sourceRoot":"","sources":["../../../src/adapter/__tests__/claude-code-log-reader.test.ts"],"names":[],"mappings":"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"}
@@ -143,6 +143,7 @@ function makeStep(number, title) {
143
143
  session: "test-session",
144
144
  timestamp: new Date("2025-01-15T10:00:00Z"),
145
145
  tags: ["test"],
146
+ relatedSteps: [],
146
147
  prompt: "テストプロンプト",
147
148
  reasoning: "テスト理由",
148
149
  outcome: "テスト結果",
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem-repository.test.js","sourceRoot":"","sources":["../../../src/adapter/__tests__/filesystem-repository.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filesystem-repository.test.js","sourceRoot":"","sources":["../../../src/adapter/__tests__/filesystem-repository.test.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
1
  import { describe, it, expect, beforeAll } from "vitest";
2
2
  import { PrivacyFilter } from "../privacy-filter.js";
3
- function makeTurn(prompt) {
3
+ function makeTurn(prompt, overrides) {
4
4
  return {
5
5
  userPrompt: prompt,
6
6
  assistantThinking: [],
7
7
  assistantText: [],
8
8
  toolUses: [],
9
+ toolResults: [],
9
10
  skills: [],
11
+ ...overrides,
10
12
  };
11
13
  }
12
14
  describe("PrivacyFilter", () => {
@@ -57,5 +59,24 @@ describe("PrivacyFilter", () => {
57
59
  expect(filtered[0].userPrompt).toContain("正常なプロンプト");
58
60
  expect(filtered[1].userPrompt).toContain("ログイン画面");
59
61
  });
62
+ it("短いプロンプトでもツール使用があれば通過する", () => {
63
+ const turns = [
64
+ makeTurn("バグ直して", { toolUses: ["Read", "Edit"] }),
65
+ ];
66
+ const filtered = filter.filterTurns(turns);
67
+ expect(filtered).toHaveLength(1);
68
+ });
69
+ it("短いプロンプトでもアシスタント応答があれば通過する", () => {
70
+ const turns = [
71
+ makeTurn("テスト追加", { assistantText: ["テストを追加しました"] }),
72
+ ];
73
+ const filtered = filter.filterTurns(turns);
74
+ expect(filtered).toHaveLength(1);
75
+ });
76
+ it("短いプロンプトでツール使用も応答もなければ除外する", () => {
77
+ const turns = [makeTurn("短い")];
78
+ const filtered = filter.filterTurns(turns);
79
+ expect(filtered).toHaveLength(0);
80
+ });
60
81
  });
61
82
  //# sourceMappingURL=privacy-filter.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"privacy-filter.test.js","sourceRoot":"","sources":["../../../src/adapter/__tests__/privacy-filter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,SAAS,QAAQ,CAAC,MAAc;IAC9B,OAAO;QACL,UAAU,EAAE,MAAM;QAClB,iBAAiB,EAAE,EAAE;QACrB,aAAa,EAAE,EAAE;QACjB,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,6CAA6C;IAC7C,uEAAuE;IAEvE,IAAI,MAAqB,CAAC;IAE1B,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,gDAAgD;QAChD,MAAM,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,qCAAqC;QACrC,MAAM,KAAK,GAAG;YACZ,QAAQ,CACN,gCAAgC,CACjC;SACF,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,KAAK,GAAG;YACZ,QAAQ,CAAC,uDAAuD,CAAC;SAClE,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,KAAK,GAAG;YACZ,QAAQ,CAAC,gCAAgC,CAAC;SAC3C,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CACjC,gCAAgC,CACjC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,KAAK,GAAG;YACZ,QAAQ,CAAC,IAAI,CAAC;YACd,QAAQ,CAAC,kCAAkC,CAAC;YAC5C,QAAQ,CAAC,uDAAuD,CAAC;YACjE,QAAQ,CAAC,6BAA6B,CAAC;SACxC,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"privacy-filter.test.js","sourceRoot":"","sources":["../../../src/adapter/__tests__/privacy-filter.test.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,7 @@ export class ClaudeCodeLogReader {
31
31
  return filesWithTime.map((f) => f.name);
32
32
  }
33
33
  async getSessionTimestamp(sessionId) {
34
+ validateSessionId(sessionId);
34
35
  const path = join(this.projectDir, `${sessionId}.jsonl`);
35
36
  if (!existsSync(path)) {
36
37
  throw new Error(`セッション '${sessionId}' のログが見つかりません`);
@@ -39,6 +40,7 @@ export class ClaudeCodeLogReader {
39
40
  return s.birthtime;
40
41
  }
41
42
  async readSession(sessionId) {
43
+ validateSessionId(sessionId);
42
44
  const path = join(this.projectDir, `${sessionId}.jsonl`);
43
45
  if (!existsSync(path)) {
44
46
  throw new Error(`セッション '${sessionId}' のログが見つかりません`);
@@ -46,6 +48,11 @@ export class ClaudeCodeLogReader {
46
48
  return parseJsonl(await readFile(path, "utf-8"));
47
49
  }
48
50
  }
51
+ function validateSessionId(sessionId) {
52
+ if (sessionId.includes("/") || sessionId.includes("\\") || sessionId.includes("..")) {
53
+ throw new Error(`不正なセッションID: ${sessionId}`);
54
+ }
55
+ }
49
56
  function encodePath(path) {
50
57
  const normalized = path.startsWith(sep) ? path.slice(1) : path;
51
58
  return `-${normalized.replaceAll(sep, "-")}`;
@@ -59,18 +66,25 @@ export function parseJsonl(content) {
59
66
  let currentThinking = [];
60
67
  let currentText = [];
61
68
  let currentTools = [];
69
+ let currentToolResults = [];
62
70
  let currentSkills = [];
63
71
  for (const line of content.split("\n")) {
64
72
  const trimmed = line.trim();
65
73
  if (!trimmed)
66
74
  continue;
75
+ let raw;
76
+ try {
77
+ raw = JSON.parse(trimmed);
78
+ }
79
+ catch {
80
+ continue; // JSON parse エラー: 不正な行をスキップ
81
+ }
67
82
  let entry;
68
83
  try {
69
- const raw = JSON.parse(trimmed);
70
84
  entry = SessionEntry.parse(raw);
71
85
  }
72
86
  catch {
73
- continue;
87
+ continue; // スキーマ不一致: 未知のエントリ形式をスキップ
74
88
  }
75
89
  const message = entry.message;
76
90
  if (!message)
@@ -86,6 +100,7 @@ export function parseJsonl(content) {
86
100
  assistantThinking: currentThinking,
87
101
  assistantText: currentText,
88
102
  toolUses: currentTools,
103
+ toolResults: currentToolResults,
89
104
  skills: currentSkills,
90
105
  });
91
106
  }
@@ -93,8 +108,27 @@ export function parseJsonl(content) {
93
108
  currentThinking = [];
94
109
  currentText = [];
95
110
  currentTools = [];
111
+ currentToolResults = [];
96
112
  currentSkills = [];
97
113
  }
114
+ else if (Array.isArray(message.content)) {
115
+ // tool_result ブロックの content を蓄積
116
+ for (const block of message.content) {
117
+ if (block.type === "tool_result" && "content" in block) {
118
+ const content = block.content;
119
+ if (typeof content === "string") {
120
+ currentToolResults.push(content);
121
+ }
122
+ else if (Array.isArray(content)) {
123
+ for (const item of content) {
124
+ if (typeof item === "object" && item !== null && "text" in item) {
125
+ currentToolResults.push(item.text);
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+ }
98
132
  }
99
133
  else if (message.role === "assistant") {
100
134
  if (Array.isArray(message.content)) {
@@ -125,6 +159,7 @@ export function parseJsonl(content) {
125
159
  assistantThinking: currentThinking,
126
160
  assistantText: currentText,
127
161
  toolUses: currentTools,
162
+ toolResults: currentToolResults,
128
163
  skills: currentSkills,
129
164
  });
130
165
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code-log-reader.js","sourceRoot":"","sources":["../../src/adapter/claude-code-log-reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-code-log-reader.js","sourceRoot":"","sources":["../../src/adapter/claude-code-log-reader.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,16 @@
1
1
  import { spawn } from "node:child_process";
2
+ import { z } from "zod/v4";
2
3
  import { summaryContext } from "../domain/session.js";
4
+ const SUBPROCESS_TIMEOUT_MS = 120_000;
5
+ const StepDraftSchema = z.object({
6
+ title: z.string(),
7
+ prompt: z.string(),
8
+ reasoning: z.string(),
9
+ outcome: z.string(),
10
+ tags: z.array(z.string()).optional(),
11
+ relatedSteps: z.array(z.number()).optional(),
12
+ skip: z.boolean().optional(),
13
+ });
3
14
  const SUMMARIZE_PROMPT = `以下のAIとの会話ターンを分析して、JSON形式で要約してください。
4
15
 
5
16
  重要な判定基準:
@@ -12,9 +23,10 @@ const SUMMARIZE_PROMPT = `以下のAIとの会話ターンを分析して、JSON
12
23
  - reasoning: なぜこの実装になったかの説明(前のステップからの文脈の変化があれば含める)
13
24
  - outcome: 何ができるようになったかの説明
14
25
  - tags: 内容を分類する短いタグの配列(1〜4個)。例: ["bugfix"], ["feature","ux"], ["testing","ci"], ["refactor","security"]
26
+ - relatedSteps: 前のステップと関連がある場合、そのステップ番号の配列。例: [3, 5]。関連がなければ省略
15
27
 
16
28
  必ず以下のJSON形式のみを出力してください(他のテキストは不要):
17
- {"title":"...","prompt":"...","reasoning":"...","outcome":"...","tags":["..."]}
29
+ {"title":"...","prompt":"...","reasoning":"...","outcome":"...","tags":["..."],"relatedSteps":[...]}
18
30
 
19
31
  スキップする場合:
20
32
  {"skip":true}
@@ -41,17 +53,17 @@ export class ClaudeCodeSummarizer {
41
53
  const env = { ...process.env };
42
54
  delete env.CLAUDE_CODE;
43
55
  delete env.CLAUDECODE;
44
- const { stdout, stderr } = await runClaude(prompt, env);
56
+ const { stdout } = await runClaude(prompt, env);
45
57
  const response = stdout.trim();
46
58
  const jsonStr = extractJson(response);
47
59
  if (!jsonStr) {
48
60
  throw new Error(`claudeの応答からJSONを抽出できませんでした: ${response}`);
49
61
  }
50
- const draft = JSON.parse(jsonStr);
51
- if (draft.skip) {
62
+ const parsed = JSON.parse(jsonStr);
63
+ if (parsed.skip === true) {
52
64
  return null;
53
65
  }
54
- return draft;
66
+ return StepDraftSchema.parse(parsed);
55
67
  }
56
68
  }
57
69
  function runClaude(prompt, env) {
@@ -62,6 +74,10 @@ function runClaude(prompt, env) {
62
74
  });
63
75
  let stdout = "";
64
76
  let stderr = "";
77
+ const timer = setTimeout(() => {
78
+ child.kill("SIGTERM");
79
+ reject(new Error(`claude コマンドがタイムアウトしました (${SUBPROCESS_TIMEOUT_MS / 1000}秒)`));
80
+ }, SUBPROCESS_TIMEOUT_MS);
65
81
  child.stdout.on("data", (data) => {
66
82
  stdout += data.toString();
67
83
  });
@@ -69,14 +85,16 @@ function runClaude(prompt, env) {
69
85
  stderr += data.toString();
70
86
  });
71
87
  child.on("error", (err) => {
88
+ clearTimeout(timer);
72
89
  reject(new Error(`claude コマンドの実行に失敗。claude CLIがインストールされているか確認してください: ${err.message}`));
73
90
  });
74
91
  child.on("close", (code) => {
75
- if (code !== 0 && !stdout) {
92
+ clearTimeout(timer);
93
+ if (code !== 0) {
76
94
  reject(new Error(`claude コマンドがエラーを返しました (code ${code}): ${stderr}`));
77
95
  }
78
96
  else {
79
- resolve({ stdout, stderr });
97
+ resolve({ stdout });
80
98
  }
81
99
  });
82
100
  child.stdin.write(prompt);