opentasks 0.0.3 → 0.0.5
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 +58 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +111 -14
- package/dist/cli.js.map +1 -1
- package/dist/client/client.d.ts +20 -0
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +60 -6
- package/dist/client/client.js.map +1 -1
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +11 -0
- package/dist/config/env.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/schema.d.ts +161 -3
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +126 -2
- package/dist/config/schema.js.map +1 -1
- package/dist/core/discover.d.ts.map +1 -1
- package/dist/core/discover.js +55 -39
- package/dist/core/discover.js.map +1 -1
- package/dist/core/init.d.ts +17 -0
- package/dist/core/init.d.ts.map +1 -0
- package/dist/core/init.js +54 -0
- package/dist/core/init.js.map +1 -0
- package/dist/daemon/entire-linker.d.ts +3 -0
- package/dist/daemon/entire-linker.d.ts.map +1 -1
- package/dist/daemon/entire-linker.js +51 -18
- package/dist/daemon/entire-linker.js.map +1 -1
- package/dist/daemon/entire-watcher.d.ts +12 -1
- package/dist/daemon/entire-watcher.d.ts.map +1 -1
- package/dist/daemon/entire-watcher.js +34 -3
- package/dist/daemon/entire-watcher.js.map +1 -1
- package/dist/daemon/factory.d.ts +3 -0
- package/dist/daemon/factory.d.ts.map +1 -1
- package/dist/daemon/factory.js +2 -1
- package/dist/daemon/factory.js.map +1 -1
- package/dist/daemon/ipc.d.ts +9 -1
- package/dist/daemon/ipc.d.ts.map +1 -1
- package/dist/daemon/ipc.js +41 -1
- package/dist/daemon/ipc.js.map +1 -1
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +106 -7
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/location-state.d.ts +5 -1
- package/dist/daemon/location-state.d.ts.map +1 -1
- package/dist/daemon/location-state.js +68 -6
- package/dist/daemon/location-state.js.map +1 -1
- package/dist/daemon/methods/tools.d.ts +11 -1
- package/dist/daemon/methods/tools.d.ts.map +1 -1
- package/dist/daemon/methods/tools.js +40 -6
- package/dist/daemon/methods/tools.js.map +1 -1
- package/dist/daemon/methods/watch.d.ts +23 -0
- package/dist/daemon/methods/watch.d.ts.map +1 -0
- package/dist/daemon/methods/watch.js +172 -0
- package/dist/daemon/methods/watch.js.map +1 -0
- package/dist/daemon/registry.d.ts.map +1 -1
- package/dist/daemon/registry.js +2 -1
- package/dist/daemon/registry.js.map +1 -1
- package/dist/entire/agent/agents/claude-code.d.ts +76 -0
- package/dist/entire/agent/agents/claude-code.d.ts.map +1 -0
- package/dist/entire/agent/agents/claude-code.js +759 -0
- package/dist/entire/agent/agents/claude-code.js.map +1 -0
- package/dist/entire/agent/agents/cursor.d.ts +35 -0
- package/dist/entire/agent/agents/cursor.d.ts.map +1 -0
- package/dist/entire/agent/agents/cursor.js +294 -0
- package/dist/entire/agent/agents/cursor.js.map +1 -0
- package/dist/entire/agent/agents/gemini-cli.d.ts +62 -0
- package/dist/entire/agent/agents/gemini-cli.d.ts.map +1 -0
- package/dist/entire/agent/agents/gemini-cli.js +462 -0
- package/dist/entire/agent/agents/gemini-cli.js.map +1 -0
- package/dist/entire/agent/agents/opencode.d.ts +100 -0
- package/dist/entire/agent/agents/opencode.d.ts.map +1 -0
- package/dist/entire/agent/agents/opencode.js +423 -0
- package/dist/entire/agent/agents/opencode.js.map +1 -0
- package/dist/entire/agent/registry.d.ts +54 -0
- package/dist/entire/agent/registry.d.ts.map +1 -0
- package/dist/entire/agent/registry.js +123 -0
- package/dist/entire/agent/registry.js.map +1 -0
- package/dist/entire/agent/session-types.d.ts +45 -0
- package/dist/entire/agent/session-types.d.ts.map +1 -0
- package/dist/entire/agent/session-types.js +50 -0
- package/dist/entire/agent/session-types.js.map +1 -0
- package/dist/entire/agent/types.d.ts +126 -0
- package/dist/entire/agent/types.d.ts.map +1 -0
- package/dist/entire/agent/types.js +39 -0
- package/dist/entire/agent/types.js.map +1 -0
- package/dist/entire/commands/clean.d.ts +30 -0
- package/dist/entire/commands/clean.d.ts.map +1 -0
- package/dist/entire/commands/clean.js +99 -0
- package/dist/entire/commands/clean.js.map +1 -0
- package/dist/entire/commands/disable.d.ts +23 -0
- package/dist/entire/commands/disable.d.ts.map +1 -0
- package/dist/entire/commands/disable.js +57 -0
- package/dist/entire/commands/disable.js.map +1 -0
- package/dist/entire/commands/doctor.d.ts +43 -0
- package/dist/entire/commands/doctor.d.ts.map +1 -0
- package/dist/entire/commands/doctor.js +97 -0
- package/dist/entire/commands/doctor.js.map +1 -0
- package/dist/entire/commands/enable.d.ts +29 -0
- package/dist/entire/commands/enable.d.ts.map +1 -0
- package/dist/entire/commands/enable.js +102 -0
- package/dist/entire/commands/enable.js.map +1 -0
- package/dist/entire/commands/explain.d.ts +68 -0
- package/dist/entire/commands/explain.d.ts.map +1 -0
- package/dist/entire/commands/explain.js +182 -0
- package/dist/entire/commands/explain.js.map +1 -0
- package/dist/entire/commands/reset.d.ts +23 -0
- package/dist/entire/commands/reset.d.ts.map +1 -0
- package/dist/entire/commands/reset.js +68 -0
- package/dist/entire/commands/reset.js.map +1 -0
- package/dist/entire/commands/resume.d.ts +42 -0
- package/dist/entire/commands/resume.d.ts.map +1 -0
- package/dist/entire/commands/resume.js +134 -0
- package/dist/entire/commands/resume.js.map +1 -0
- package/dist/entire/commands/rewind.d.ts +34 -0
- package/dist/entire/commands/rewind.d.ts.map +1 -0
- package/dist/entire/commands/rewind.js +155 -0
- package/dist/entire/commands/rewind.js.map +1 -0
- package/dist/entire/commands/status.d.ts +51 -0
- package/dist/entire/commands/status.d.ts.map +1 -0
- package/dist/entire/commands/status.js +94 -0
- package/dist/entire/commands/status.js.map +1 -0
- package/dist/entire/config.d.ts +40 -0
- package/dist/entire/config.d.ts.map +1 -0
- package/dist/entire/config.js +126 -0
- package/dist/entire/config.js.map +1 -0
- package/dist/entire/git-operations.d.ts +170 -0
- package/dist/entire/git-operations.d.ts.map +1 -0
- package/dist/entire/git-operations.js +395 -0
- package/dist/entire/git-operations.js.map +1 -0
- package/dist/entire/hooks/git-hooks.d.ts +22 -0
- package/dist/entire/hooks/git-hooks.d.ts.map +1 -0
- package/dist/entire/hooks/git-hooks.js +145 -0
- package/dist/entire/hooks/git-hooks.js.map +1 -0
- package/dist/entire/hooks/lifecycle.d.ts +21 -0
- package/dist/entire/hooks/lifecycle.d.ts.map +1 -0
- package/dist/entire/hooks/lifecycle.js +179 -0
- package/dist/entire/hooks/lifecycle.js.map +1 -0
- package/dist/entire/index.d.ts +69 -0
- package/dist/entire/index.d.ts.map +1 -0
- package/dist/entire/index.js +152 -0
- package/dist/entire/index.js.map +1 -0
- package/dist/entire/security/redaction.d.ts +35 -0
- package/dist/entire/security/redaction.d.ts.map +1 -0
- package/dist/entire/security/redaction.js +221 -0
- package/dist/entire/security/redaction.js.map +1 -0
- package/dist/entire/session/state-machine.d.ts +90 -0
- package/dist/entire/session/state-machine.d.ts.map +1 -0
- package/dist/entire/session/state-machine.js +347 -0
- package/dist/entire/session/state-machine.js.map +1 -0
- package/dist/entire/store/checkpoint-store.d.ts +47 -0
- package/dist/entire/store/checkpoint-store.d.ts.map +1 -0
- package/dist/entire/store/checkpoint-store.js +307 -0
- package/dist/entire/store/checkpoint-store.js.map +1 -0
- package/dist/entire/store/native-store.d.ts +14 -0
- package/dist/entire/store/native-store.d.ts.map +1 -0
- package/dist/entire/store/native-store.js +159 -0
- package/dist/entire/store/native-store.js.map +1 -0
- package/dist/entire/store/provider-types.d.ts +78 -0
- package/dist/entire/store/provider-types.d.ts.map +1 -0
- package/dist/entire/store/provider-types.js +12 -0
- package/dist/entire/store/provider-types.js.map +1 -0
- package/dist/entire/store/session-store.d.ts +28 -0
- package/dist/entire/store/session-store.d.ts.map +1 -0
- package/dist/entire/store/session-store.js +187 -0
- package/dist/entire/store/session-store.js.map +1 -0
- package/dist/entire/strategy/attribution.d.ts +39 -0
- package/dist/entire/strategy/attribution.d.ts.map +1 -0
- package/dist/entire/strategy/attribution.js +227 -0
- package/dist/entire/strategy/attribution.js.map +1 -0
- package/dist/entire/strategy/common.d.ts +57 -0
- package/dist/entire/strategy/common.d.ts.map +1 -0
- package/dist/entire/strategy/common.js +156 -0
- package/dist/entire/strategy/common.js.map +1 -0
- package/dist/entire/strategy/content-overlap.d.ts +33 -0
- package/dist/entire/strategy/content-overlap.d.ts.map +1 -0
- package/dist/entire/strategy/content-overlap.js +168 -0
- package/dist/entire/strategy/content-overlap.js.map +1 -0
- package/dist/entire/strategy/manual-commit.d.ts +31 -0
- package/dist/entire/strategy/manual-commit.d.ts.map +1 -0
- package/dist/entire/strategy/manual-commit.js +730 -0
- package/dist/entire/strategy/manual-commit.js.map +1 -0
- package/dist/entire/strategy/types.d.ts +163 -0
- package/dist/entire/strategy/types.d.ts.map +1 -0
- package/dist/entire/strategy/types.js +49 -0
- package/dist/entire/strategy/types.js.map +1 -0
- package/dist/entire/summarize/claude-generator.d.ts +25 -0
- package/dist/entire/summarize/claude-generator.d.ts.map +1 -0
- package/dist/entire/summarize/claude-generator.js +87 -0
- package/dist/entire/summarize/claude-generator.js.map +1 -0
- package/dist/entire/summarize/summarize.d.ts +52 -0
- package/dist/entire/summarize/summarize.d.ts.map +1 -0
- package/dist/entire/summarize/summarize.js +335 -0
- package/dist/entire/summarize/summarize.js.map +1 -0
- package/dist/entire/types.d.ts +288 -0
- package/dist/entire/types.d.ts.map +1 -0
- package/dist/entire/types.js +94 -0
- package/dist/entire/types.js.map +1 -0
- package/dist/entire/utils/chunk-files.d.ts +25 -0
- package/dist/entire/utils/chunk-files.d.ts.map +1 -0
- package/dist/entire/utils/chunk-files.js +47 -0
- package/dist/entire/utils/chunk-files.js.map +1 -0
- package/dist/entire/utils/commit-message.d.ts +11 -0
- package/dist/entire/utils/commit-message.d.ts.map +1 -0
- package/dist/entire/utils/commit-message.js +54 -0
- package/dist/entire/utils/commit-message.js.map +1 -0
- package/dist/entire/utils/detect-agent.d.ts +19 -0
- package/dist/entire/utils/detect-agent.d.ts.map +1 -0
- package/dist/entire/utils/detect-agent.js +34 -0
- package/dist/entire/utils/detect-agent.js.map +1 -0
- package/dist/entire/utils/hook-managers.d.ts +24 -0
- package/dist/entire/utils/hook-managers.d.ts.map +1 -0
- package/dist/entire/utils/hook-managers.js +87 -0
- package/dist/entire/utils/hook-managers.js.map +1 -0
- package/dist/entire/utils/ide-tags.d.ts +12 -0
- package/dist/entire/utils/ide-tags.d.ts.map +1 -0
- package/dist/entire/utils/ide-tags.js +30 -0
- package/dist/entire/utils/ide-tags.js.map +1 -0
- package/dist/entire/utils/paths.d.ts +32 -0
- package/dist/entire/utils/paths.d.ts.map +1 -0
- package/dist/entire/utils/paths.js +55 -0
- package/dist/entire/utils/paths.js.map +1 -0
- package/dist/entire/utils/preview-rewind.d.ts +23 -0
- package/dist/entire/utils/preview-rewind.d.ts.map +1 -0
- package/dist/entire/utils/preview-rewind.js +63 -0
- package/dist/entire/utils/preview-rewind.js.map +1 -0
- package/dist/entire/utils/rewind-conflict.d.ts +52 -0
- package/dist/entire/utils/rewind-conflict.d.ts.map +1 -0
- package/dist/entire/utils/rewind-conflict.js +79 -0
- package/dist/entire/utils/rewind-conflict.js.map +1 -0
- package/dist/entire/utils/shadow-branch.d.ts +44 -0
- package/dist/entire/utils/shadow-branch.d.ts.map +1 -0
- package/dist/entire/utils/shadow-branch.js +93 -0
- package/dist/entire/utils/shadow-branch.js.map +1 -0
- package/dist/entire/utils/string-utils.d.ts +24 -0
- package/dist/entire/utils/string-utils.d.ts.map +1 -0
- package/dist/entire/utils/string-utils.js +47 -0
- package/dist/entire/utils/string-utils.js.map +1 -0
- package/dist/entire/utils/todo-extract.d.ts +52 -0
- package/dist/entire/utils/todo-extract.d.ts.map +1 -0
- package/dist/entire/utils/todo-extract.js +167 -0
- package/dist/entire/utils/todo-extract.js.map +1 -0
- package/dist/entire/utils/trailers.d.ts +36 -0
- package/dist/entire/utils/trailers.d.ts.map +1 -0
- package/dist/entire/utils/trailers.js +149 -0
- package/dist/entire/utils/trailers.js.map +1 -0
- package/dist/entire/utils/transcript-parse.d.ts +57 -0
- package/dist/entire/utils/transcript-parse.d.ts.map +1 -0
- package/dist/entire/utils/transcript-parse.js +126 -0
- package/dist/entire/utils/transcript-parse.js.map +1 -0
- package/dist/entire/utils/transcript-timestamp.d.ts +22 -0
- package/dist/entire/utils/transcript-timestamp.d.ts.map +1 -0
- package/dist/entire/utils/transcript-timestamp.js +56 -0
- package/dist/entire/utils/transcript-timestamp.js.map +1 -0
- package/dist/entire/utils/tree-ops.d.ts +47 -0
- package/dist/entire/utils/tree-ops.d.ts.map +1 -0
- package/dist/entire/utils/tree-ops.js +145 -0
- package/dist/entire/utils/tree-ops.js.map +1 -0
- package/dist/entire/utils/tty.d.ts +25 -0
- package/dist/entire/utils/tty.d.ts.map +1 -0
- package/dist/entire/utils/tty.js +70 -0
- package/dist/entire/utils/tty.js.map +1 -0
- package/dist/entire/utils/validation.d.ts +31 -0
- package/dist/entire/utils/validation.d.ts.map +1 -0
- package/dist/entire/utils/validation.js +59 -0
- package/dist/entire/utils/validation.js.map +1 -0
- package/dist/entire/utils/worktree.d.ts +16 -0
- package/dist/entire/utils/worktree.d.ts.map +1 -0
- package/dist/entire/utils/worktree.js +50 -0
- package/dist/entire/utils/worktree.js.map +1 -0
- package/dist/graph/expansion.d.ts +3 -1
- package/dist/graph/expansion.d.ts.map +1 -1
- package/dist/graph/expansion.js +32 -2
- package/dist/graph/expansion.js.map +1 -1
- package/dist/graph/git-graph-syncer.d.ts +72 -0
- package/dist/graph/git-graph-syncer.d.ts.map +1 -0
- package/dist/graph/git-graph-syncer.js +205 -0
- package/dist/graph/git-graph-syncer.js.map +1 -0
- package/dist/graph/store.d.ts +4 -0
- package/dist/graph/store.d.ts.map +1 -1
- package/dist/graph/store.js +97 -2
- package/dist/graph/store.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/entire.d.ts +40 -50
- package/dist/providers/entire.d.ts.map +1 -1
- package/dist/providers/entire.js +74 -9
- package/dist/providers/entire.js.map +1 -1
- package/dist/providers/from-config.d.ts.map +1 -1
- package/dist/providers/from-config.js +39 -20
- package/dist/providers/from-config.js.map +1 -1
- package/dist/providers/global.d.ts +28 -0
- package/dist/providers/global.d.ts.map +1 -0
- package/dist/providers/global.js +293 -0
- package/dist/providers/global.js.map +1 -0
- package/dist/providers/index.d.ts +2 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +3 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/schema/edges.d.ts +5 -1
- package/dist/schema/edges.d.ts.map +1 -1
- package/dist/schema/index.d.ts +1 -1
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/tracking/claude-task-reconstructor.d.ts +41 -0
- package/dist/tracking/claude-task-reconstructor.d.ts.map +1 -0
- package/dist/tracking/claude-task-reconstructor.js +91 -0
- package/dist/tracking/claude-task-reconstructor.js.map +1 -0
- package/dist/tracking/claude-tool-categorizer.d.ts +30 -0
- package/dist/tracking/claude-tool-categorizer.d.ts.map +1 -0
- package/dist/tracking/claude-tool-categorizer.js +98 -0
- package/dist/tracking/claude-tool-categorizer.js.map +1 -0
- package/dist/tracking/index.d.ts +15 -0
- package/dist/tracking/index.d.ts.map +1 -0
- package/dist/tracking/index.js +12 -0
- package/dist/tracking/index.js.map +1 -0
- package/dist/tracking/plan-mode-tracker.d.ts +20 -0
- package/dist/tracking/plan-mode-tracker.d.ts.map +1 -0
- package/dist/tracking/plan-mode-tracker.js +35 -0
- package/dist/tracking/plan-mode-tracker.js.map +1 -0
- package/dist/tracking/skill-tracker.d.ts +133 -0
- package/dist/tracking/skill-tracker.d.ts.map +1 -0
- package/dist/tracking/skill-tracker.js +130 -0
- package/dist/tracking/skill-tracker.js.map +1 -0
- package/dist/tracking/transcript-extractor.d.ts +39 -0
- package/dist/tracking/transcript-extractor.d.ts.map +1 -0
- package/dist/tracking/transcript-extractor.js +165 -0
- package/dist/tracking/transcript-extractor.js.map +1 -0
- package/package.json +4 -1
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Tracker
|
|
3
|
+
*
|
|
4
|
+
* Tracks which agent skills (tools) are used during a session/trajectory.
|
|
5
|
+
* Provides types and a tracker implementation for recording skill invocations,
|
|
6
|
+
* aggregating usage statistics, and surfacing them in session metadata.
|
|
7
|
+
*
|
|
8
|
+
* This enables answering: "What skills did the agent use during this trajectory?"
|
|
9
|
+
*/
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Implementation
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Create a SkillTracker for recording skill usage during a session
|
|
15
|
+
*/
|
|
16
|
+
export function createSkillTracker(options) {
|
|
17
|
+
const { sessionId, agentId, maxInvocations = 1000 } = options;
|
|
18
|
+
let invocations = [];
|
|
19
|
+
const startedAt = new Date().toISOString();
|
|
20
|
+
return {
|
|
21
|
+
get sessionId() {
|
|
22
|
+
return sessionId;
|
|
23
|
+
},
|
|
24
|
+
record(partial) {
|
|
25
|
+
const invocation = {
|
|
26
|
+
...partial,
|
|
27
|
+
timestamp: new Date().toISOString(),
|
|
28
|
+
agentId,
|
|
29
|
+
sessionId,
|
|
30
|
+
};
|
|
31
|
+
invocations.push(invocation);
|
|
32
|
+
// Trim if over limit (keep most recent)
|
|
33
|
+
if (invocations.length > maxInvocations) {
|
|
34
|
+
invocations = invocations.slice(-maxInvocations);
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
getInvocations() {
|
|
38
|
+
return [...invocations];
|
|
39
|
+
},
|
|
40
|
+
getSkillInvocations(skill) {
|
|
41
|
+
return invocations.filter((i) => i.skill === skill);
|
|
42
|
+
},
|
|
43
|
+
getSkillsUsed() {
|
|
44
|
+
return [...new Set(invocations.map((i) => i.skill))];
|
|
45
|
+
},
|
|
46
|
+
getStats() {
|
|
47
|
+
const bySkill = new Map();
|
|
48
|
+
for (const inv of invocations) {
|
|
49
|
+
const existing = bySkill.get(inv.skill) ?? [];
|
|
50
|
+
existing.push(inv);
|
|
51
|
+
bySkill.set(inv.skill, existing);
|
|
52
|
+
}
|
|
53
|
+
const stats = [];
|
|
54
|
+
for (const [skill, skillInvocations] of bySkill) {
|
|
55
|
+
const successCount = skillInvocations.filter((i) => i.success).length;
|
|
56
|
+
const failureCount = skillInvocations.length - successCount;
|
|
57
|
+
const durations = skillInvocations
|
|
58
|
+
.map((i) => i.durationMs)
|
|
59
|
+
.filter((d) => d !== undefined);
|
|
60
|
+
const avgDurationMs = durations.length > 0
|
|
61
|
+
? Math.round(durations.reduce((a, b) => a + b, 0) / durations.length)
|
|
62
|
+
: undefined;
|
|
63
|
+
const operations = [
|
|
64
|
+
...new Set(skillInvocations
|
|
65
|
+
.map((i) => i.operation)
|
|
66
|
+
.filter((op) => op !== undefined)),
|
|
67
|
+
];
|
|
68
|
+
stats.push({
|
|
69
|
+
skill,
|
|
70
|
+
count: skillInvocations.length,
|
|
71
|
+
successCount,
|
|
72
|
+
failureCount,
|
|
73
|
+
firstUsedAt: skillInvocations[0].timestamp,
|
|
74
|
+
lastUsedAt: skillInvocations[skillInvocations.length - 1].timestamp,
|
|
75
|
+
avgDurationMs,
|
|
76
|
+
operations,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return stats;
|
|
80
|
+
},
|
|
81
|
+
getSummary() {
|
|
82
|
+
return {
|
|
83
|
+
sessionId,
|
|
84
|
+
totalInvocations: invocations.length,
|
|
85
|
+
skillsUsed: this.getSkillsUsed(),
|
|
86
|
+
stats: this.getStats(),
|
|
87
|
+
invocations: this.getInvocations(),
|
|
88
|
+
startedAt,
|
|
89
|
+
updatedAt: new Date().toISOString(),
|
|
90
|
+
};
|
|
91
|
+
},
|
|
92
|
+
reset() {
|
|
93
|
+
invocations = [];
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Create a SkillTrackerRegistry for managing per-session trackers
|
|
99
|
+
*/
|
|
100
|
+
export function createSkillTrackerRegistry() {
|
|
101
|
+
const trackers = new Map();
|
|
102
|
+
return {
|
|
103
|
+
get size() {
|
|
104
|
+
return trackers.size;
|
|
105
|
+
},
|
|
106
|
+
getOrCreate(sessionId, agentId) {
|
|
107
|
+
let tracker = trackers.get(sessionId);
|
|
108
|
+
if (!tracker) {
|
|
109
|
+
tracker = createSkillTracker({ sessionId, agentId });
|
|
110
|
+
trackers.set(sessionId, tracker);
|
|
111
|
+
}
|
|
112
|
+
return tracker;
|
|
113
|
+
},
|
|
114
|
+
get(sessionId) {
|
|
115
|
+
return trackers.get(sessionId) ?? null;
|
|
116
|
+
},
|
|
117
|
+
remove(sessionId) {
|
|
118
|
+
const tracker = trackers.get(sessionId);
|
|
119
|
+
if (!tracker)
|
|
120
|
+
return null;
|
|
121
|
+
const summary = tracker.getSummary();
|
|
122
|
+
trackers.delete(sessionId);
|
|
123
|
+
return summary;
|
|
124
|
+
},
|
|
125
|
+
getAllSummaries() {
|
|
126
|
+
return Array.from(trackers.values()).map((t) => t.getSummary());
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=skill-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-tracker.js","sourceRoot":"","sources":["../../src/tracking/skill-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transcript Extractor Orchestrator
|
|
3
|
+
*
|
|
4
|
+
* Fetches Entire session transcripts, dispatches to the correct parser,
|
|
5
|
+
* runs categorization/reconstruction/plan-mode tracking, and backfills
|
|
6
|
+
* the SkillTrackerRegistry before session finalization.
|
|
7
|
+
*
|
|
8
|
+
* Best-effort: errors are caught and logged, never blocking the linker.
|
|
9
|
+
*/
|
|
10
|
+
import type { AgentType, TokenUsage } from 'agent-session-parser';
|
|
11
|
+
import { type ExtractedToolCall, type ToolCategory } from './claude-tool-categorizer.js';
|
|
12
|
+
import type { SkillTrackerRegistry } from './skill-tracker.js';
|
|
13
|
+
import type { EntireSessionEvent } from '../daemon/entire-watcher.js';
|
|
14
|
+
export interface TranscriptExtractorConfig {
|
|
15
|
+
/** Skill tracker registry for backfilling tool usage */
|
|
16
|
+
skillTrackerRegistry?: SkillTrackerRegistry;
|
|
17
|
+
/** Git repo path to resolve transcript from (defaults to cwd) */
|
|
18
|
+
repoPath?: string;
|
|
19
|
+
/** Override git command execution (for testing) */
|
|
20
|
+
execGit?: (args: string) => string;
|
|
21
|
+
}
|
|
22
|
+
export interface TranscriptExtractionResult {
|
|
23
|
+
sessionId: string;
|
|
24
|
+
agentType: AgentType | 'unknown';
|
|
25
|
+
/** All extracted tool calls, chronological */
|
|
26
|
+
toolCalls: ExtractedToolCall[];
|
|
27
|
+
/** Tool call counts by category */
|
|
28
|
+
toolCategories: Record<ToolCategory, number>;
|
|
29
|
+
/** Token usage (from agent-session-parser) */
|
|
30
|
+
tokenUsage?: TokenUsage;
|
|
31
|
+
/** Spawned subagent IDs (agentId → toolUseId) */
|
|
32
|
+
subagentIds?: Record<string, string>;
|
|
33
|
+
}
|
|
34
|
+
export interface TranscriptExtractor {
|
|
35
|
+
/** Extract tool usage from a session's transcript on session end */
|
|
36
|
+
extract(event: EntireSessionEvent): Promise<TranscriptExtractionResult | null>;
|
|
37
|
+
}
|
|
38
|
+
export declare function createTranscriptExtractor(config: TranscriptExtractorConfig): TranscriptExtractor;
|
|
39
|
+
//# sourceMappingURL=transcript-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-extractor.d.ts","sourceRoot":"","sources":["../../src/tracking/transcript-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAoB,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC3G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAMtE,MAAM,WAAW,yBAAyB;IACxC,wDAAwD;IACxD,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAE5C,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,mDAAmD;IACnD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IAEjC,8CAA8C;IAC9C,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAE/B,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAE7C,8CAA8C;IAC9C,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,mBAAmB;IAClC,oEAAoE;IACpE,OAAO,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAAC;CAChF;AAiED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,yBAAyB,GAAG,mBAAmB,CAmFhG"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transcript Extractor Orchestrator
|
|
3
|
+
*
|
|
4
|
+
* Fetches Entire session transcripts, dispatches to the correct parser,
|
|
5
|
+
* runs categorization/reconstruction/plan-mode tracking, and backfills
|
|
6
|
+
* the SkillTrackerRegistry before session finalization.
|
|
7
|
+
*
|
|
8
|
+
* Best-effort: errors are caught and logged, never blocking the linker.
|
|
9
|
+
*/
|
|
10
|
+
import { execSync } from 'node:child_process';
|
|
11
|
+
import { claude, detectAgentTypeFromContent } from 'agent-session-parser';
|
|
12
|
+
import { extractToolCalls } from './claude-tool-categorizer.js';
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// Helpers
|
|
15
|
+
// ============================================================================
|
|
16
|
+
function defaultExecGit(args, repoPath) {
|
|
17
|
+
const opts = repoPath ? { cwd: repoPath } : {};
|
|
18
|
+
return execSync(`git ${args}`, { ...opts, encoding: 'utf-8', timeout: 10000 });
|
|
19
|
+
}
|
|
20
|
+
function countByCategory(toolCalls) {
|
|
21
|
+
const counts = {
|
|
22
|
+
'claude-native': 0,
|
|
23
|
+
'mcp-sudocode': 0,
|
|
24
|
+
'mcp-other': 0,
|
|
25
|
+
'unknown': 0,
|
|
26
|
+
};
|
|
27
|
+
for (const call of toolCalls) {
|
|
28
|
+
counts[call.category]++;
|
|
29
|
+
}
|
|
30
|
+
return counts;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Fetch transcript and metadata from git for a checkpoint.
|
|
34
|
+
*
|
|
35
|
+
* Path format: sessionlog/checkpoints/v1:<shard>/<rest>/1/full.jsonl
|
|
36
|
+
* where shard = id.slice(0, 2), rest = id.slice(2)
|
|
37
|
+
*/
|
|
38
|
+
function fetchTranscriptFromGit(checkpointId, execGit) {
|
|
39
|
+
const shard = checkpointId.slice(0, 2);
|
|
40
|
+
const rest = checkpointId.slice(2);
|
|
41
|
+
const basePath = `${shard}/${rest}/1`;
|
|
42
|
+
try {
|
|
43
|
+
const metadataRaw = execGit(`show sessionlog/checkpoints/v1:${basePath}/metadata.json`);
|
|
44
|
+
const transcript = execGit(`show sessionlog/checkpoints/v1:${basePath}/full.jsonl`);
|
|
45
|
+
const metadata = JSON.parse(metadataRaw);
|
|
46
|
+
return { transcript, metadata };
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function resolveAgentType(metadata, transcript) {
|
|
53
|
+
const metaAgent = metadata.agent;
|
|
54
|
+
if (metaAgent === 'Claude Code')
|
|
55
|
+
return 'Claude Code';
|
|
56
|
+
if (metaAgent === 'Gemini CLI')
|
|
57
|
+
return 'Gemini CLI';
|
|
58
|
+
// Fallback: auto-detect from content
|
|
59
|
+
const detected = detectAgentTypeFromContent(transcript);
|
|
60
|
+
return detected ?? 'unknown';
|
|
61
|
+
}
|
|
62
|
+
// ============================================================================
|
|
63
|
+
// Implementation
|
|
64
|
+
// ============================================================================
|
|
65
|
+
export function createTranscriptExtractor(config) {
|
|
66
|
+
const { skillTrackerRegistry, repoPath } = config;
|
|
67
|
+
const execGit = config.execGit ?? ((args) => defaultExecGit(args, repoPath));
|
|
68
|
+
return {
|
|
69
|
+
async extract(event) {
|
|
70
|
+
if (event.type !== 'ended')
|
|
71
|
+
return null;
|
|
72
|
+
const { sessionId, session } = event;
|
|
73
|
+
const checkpoints = session.checkpoints;
|
|
74
|
+
if (!checkpoints || checkpoints.length === 0)
|
|
75
|
+
return null;
|
|
76
|
+
// Use the last checkpoint (most complete transcript)
|
|
77
|
+
const lastCheckpointId = checkpoints[checkpoints.length - 1];
|
|
78
|
+
const fetched = fetchTranscriptFromGit(lastCheckpointId, execGit);
|
|
79
|
+
if (!fetched)
|
|
80
|
+
return null;
|
|
81
|
+
const { transcript, metadata } = fetched;
|
|
82
|
+
const agentType = resolveAgentType(metadata, transcript);
|
|
83
|
+
// Only Claude Code extraction is supported in v1
|
|
84
|
+
if (agentType !== 'Claude Code') {
|
|
85
|
+
return {
|
|
86
|
+
sessionId,
|
|
87
|
+
agentType,
|
|
88
|
+
toolCalls: [],
|
|
89
|
+
toolCategories: countByCategory([]),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
// Parse transcript
|
|
93
|
+
const lines = claude.parseFromString(transcript);
|
|
94
|
+
// Extract tool calls
|
|
95
|
+
const toolCalls = extractToolCalls(lines);
|
|
96
|
+
const toolCategories = countByCategory(toolCalls);
|
|
97
|
+
// Token usage
|
|
98
|
+
let tokenUsage;
|
|
99
|
+
try {
|
|
100
|
+
tokenUsage = claude.calculateTokenUsage(lines);
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// Token calculation is best-effort
|
|
104
|
+
}
|
|
105
|
+
// Spawned subagent IDs
|
|
106
|
+
let subagentIds;
|
|
107
|
+
try {
|
|
108
|
+
const subagentMap = claude.extractSpawnedAgentIds(lines);
|
|
109
|
+
if (subagentMap.size > 0) {
|
|
110
|
+
subagentIds = Object.fromEntries(subagentMap);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
// Best-effort
|
|
115
|
+
}
|
|
116
|
+
const result = {
|
|
117
|
+
sessionId,
|
|
118
|
+
agentType,
|
|
119
|
+
toolCalls,
|
|
120
|
+
toolCategories,
|
|
121
|
+
tokenUsage,
|
|
122
|
+
subagentIds,
|
|
123
|
+
};
|
|
124
|
+
// Backfill SkillTracker
|
|
125
|
+
if (skillTrackerRegistry) {
|
|
126
|
+
const tracker = skillTrackerRegistry.getOrCreate(sessionId);
|
|
127
|
+
for (const call of toolCalls) {
|
|
128
|
+
tracker.record({
|
|
129
|
+
skill: call.toolName,
|
|
130
|
+
success: call.success,
|
|
131
|
+
operation: call.category,
|
|
132
|
+
targets: extractTargets(call),
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return result;
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Extract meaningful target IDs from a tool call for SkillTracker recording.
|
|
142
|
+
*/
|
|
143
|
+
function extractTargets(call) {
|
|
144
|
+
const targets = [];
|
|
145
|
+
// MCP sudocode: extract spec/issue IDs
|
|
146
|
+
if (call.category === 'mcp-sudocode') {
|
|
147
|
+
const input = call.input;
|
|
148
|
+
if (typeof input.spec_id === 'string')
|
|
149
|
+
targets.push(input.spec_id);
|
|
150
|
+
if (typeof input.issue_id === 'string')
|
|
151
|
+
targets.push(input.issue_id);
|
|
152
|
+
if (typeof input.from_id === 'string')
|
|
153
|
+
targets.push(input.from_id);
|
|
154
|
+
if (typeof input.to_id === 'string')
|
|
155
|
+
targets.push(input.to_id);
|
|
156
|
+
}
|
|
157
|
+
// Claude native: extract task IDs
|
|
158
|
+
if (call.category === 'claude-native') {
|
|
159
|
+
const input = call.input;
|
|
160
|
+
if (typeof input.taskId === 'string')
|
|
161
|
+
targets.push(input.taskId);
|
|
162
|
+
}
|
|
163
|
+
return targets.length > 0 ? targets : undefined;
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=transcript-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-extractor.js","sourceRoot":"","sources":["../../src/tracking/transcript-extractor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opentasks",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "Universal task graph data structure",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
"@types/better-sqlite3": "^7.6.13",
|
|
51
51
|
"@types/node": "^25.0.10",
|
|
52
52
|
"@types/proper-lockfile": "^4.1.4",
|
|
53
|
+
"acp-factory": "^0.1.12",
|
|
53
54
|
"eslint": "^9.39.2",
|
|
54
55
|
"eslint-config-prettier": "^10.1.8",
|
|
55
56
|
"husky": "^9.1.7",
|
|
@@ -67,12 +68,14 @@
|
|
|
67
68
|
"url": "git+https://github.com/alexngai/opentasks.git"
|
|
68
69
|
},
|
|
69
70
|
"dependencies": {
|
|
71
|
+
"agent-session-parser": "^0.1.0",
|
|
70
72
|
"better-sqlite3": "^12.6.2",
|
|
71
73
|
"chokidar": "^5.0.0",
|
|
72
74
|
"graphology": "^0.26.0",
|
|
73
75
|
"graphology-shortest-path": "^2.1.0",
|
|
74
76
|
"graphology-traversal": "^0.3.1",
|
|
75
77
|
"proper-lockfile": "^4.1.2",
|
|
78
|
+
"sessionlog": "^0.0.5",
|
|
76
79
|
"zod": "^4.3.6"
|
|
77
80
|
}
|
|
78
81
|
}
|