@crewx/dreaming 0.1.0-rc.2 → 0.1.0-rc.200
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/SKILL.md +93 -47
- package/dist/cli.d.ts +5 -1
- package/dist/cli.js +28 -120
- package/dist/src/analyzer.d.ts +11 -4
- package/dist/src/analyzer.js +1 -414
- package/dist/src/renderer.d.ts +13 -3
- package/dist/src/renderer.js +4 -147
- package/dist/src/scrub.d.ts +4 -0
- package/dist/src/scrub.js +1 -0
- package/dist/src/types.d.ts +45 -1
- package/dist/src/types.js +1 -3
- package/package.json +3 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/src/analyzer.d.ts.map +0 -1
- package/dist/src/analyzer.js.map +0 -1
- package/dist/src/renderer.d.ts.map +0 -1
- package/dist/src/renderer.js.map +0 -1
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js.map +0 -1
package/SKILL.md
CHANGED
|
@@ -1,97 +1,143 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: crewx/dreaming
|
|
3
3
|
description: >
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
Essential retrospective skill invoked selectively. A first-class self-reflection
|
|
5
|
+
tool for reviewing agent behavior at the task/conversation level. On par with
|
|
6
|
+
memory/doc/search — the agent judges the situation and calls it proactively.
|
|
6
7
|
metadata:
|
|
7
8
|
version: 0.1.0
|
|
8
9
|
built-in: true
|
|
9
10
|
---
|
|
10
11
|
|
|
11
|
-
# Dreaming —
|
|
12
|
+
# Dreaming — Essential Retrospective Skill
|
|
12
13
|
|
|
13
|
-
**dreaming
|
|
14
|
-
memory(
|
|
15
|
-
|
|
14
|
+
**dreaming is the agent's first-class self-reflection tool.**
|
|
15
|
+
On par with memory (store/search memories), doc (explore design docs), and search (search code),
|
|
16
|
+
the agent judges the situation and **calls it on its own** — it doesn't wait for a manual request.
|
|
16
17
|
|
|
17
|
-
##
|
|
18
|
+
## Two Views
|
|
18
19
|
|
|
19
|
-
|
|
|
20
|
+
| Command | View | When to use |
|
|
20
21
|
|--------|------|---------|
|
|
21
|
-
| `crewx dreaming --task=tsk_xxx` |
|
|
22
|
-
| `crewx dreaming --thread=thd_xxx --recent=N` |
|
|
22
|
+
| `crewx dreaming --task=tsk_xxx` | Magnifier | Deep dive into one task — action timeline, struggle patterns, efficiency patterns, skill usage |
|
|
23
|
+
| `crewx dreaming --thread=thd_xxx --recent=N` | Map | List of the last N tasks in the conversation + each one's end status |
|
|
24
|
+
| `crewx dreaming --thread=thd_xxx --agent=self --continue` | Continue | Detail on my most recent task + rule-based summary of the N before it |
|
|
23
25
|
|
|
24
|
-
##
|
|
26
|
+
## When To Call It (Agent Judgment Criteria)
|
|
25
27
|
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
28
|
+
- **Before starting work**: Check whether a task was just interrupted → check the `--thread` list
|
|
29
|
+
- **Retrying a failed task**: See where it stopped last time → check the timeline with `--task`
|
|
30
|
+
- **Understanding conversation context**: Get a list of what was asked in this conversation → `--thread --recent=5`
|
|
31
|
+
- **Self-check after a task**: Check for struggle patterns / efficiency patterns → retrospect with `--task`
|
|
30
32
|
|
|
31
|
-
##
|
|
33
|
+
## Usage
|
|
32
34
|
|
|
33
35
|
```bash
|
|
34
|
-
#
|
|
36
|
+
# Deep retrospective on one task
|
|
35
37
|
crewx dreaming --task=tsk_abc123
|
|
36
38
|
|
|
37
|
-
#
|
|
39
|
+
# List of the last 5 in the conversation (default)
|
|
38
40
|
crewx dreaming --thread=thd_xyz789
|
|
39
41
|
|
|
40
|
-
#
|
|
42
|
+
# See more
|
|
41
43
|
crewx dreaming --thread=thd_xyz789 --recent=20
|
|
42
44
|
|
|
43
|
-
#
|
|
45
|
+
# Drill down into a specific task
|
|
44
46
|
crewx dreaming --task=tsk_abc123 --json
|
|
45
47
|
```
|
|
46
48
|
|
|
47
|
-
##
|
|
49
|
+
## Output Example — --task Mode
|
|
48
50
|
|
|
49
51
|
```
|
|
50
52
|
━━━ Dreaming: task tsk_abc123 ━━━
|
|
51
53
|
Agent: core_dev (acp/claude) | Status: success | Duration: 312s | Tools: 47 calls
|
|
52
|
-
📋
|
|
53
|
-
📝
|
|
54
|
+
📋 Instruction: promote dreaming to a built-in skill
|
|
55
|
+
📝 Conclusion: packages/built-in/dreaming/ created successfully
|
|
54
56
|
|
|
55
|
-
[
|
|
57
|
+
[Timeline]
|
|
56
58
|
1. Read packages/built-in/memory/package.json
|
|
57
59
|
2. Read packages/built-in/doc/tsconfig.json
|
|
58
60
|
3. Edit packages/built-in/dreaming/package.json
|
|
59
61
|
...
|
|
60
62
|
41. Bash npx tsc --noEmit → ❌ error TS2345
|
|
61
|
-
42. Edit packages/built-in/dreaming/src/analyzer.ts ←
|
|
63
|
+
42. Edit packages/built-in/dreaming/src/analyzer.ts ← re-edited the same file
|
|
62
64
|
43. Bash npx tsc --noEmit → ✅ pass
|
|
63
|
-
💡
|
|
65
|
+
💡 Struggle: edited analyzer.ts twice (41→43) — type mismatch
|
|
64
66
|
|
|
65
|
-
[
|
|
66
|
-
crewx/memory
|
|
67
|
-
crewx/doc
|
|
67
|
+
[Skill Usage]
|
|
68
|
+
crewx/memory 3x (index, find, save)
|
|
69
|
+
crewx/doc 2x (toc, section)
|
|
68
70
|
|
|
69
|
-
[
|
|
70
|
-
⚠️
|
|
71
|
-
💡
|
|
72
|
-
🔍
|
|
71
|
+
[Retrospective Summary]
|
|
72
|
+
⚠️ Struggle pattern: repeated edits to the same file, 1 case (analyzer.ts x2)
|
|
73
|
+
💡 Insight: most errors were type mismatches (1 case)
|
|
74
|
+
🔍 Used code analysis — tsserver called 5x
|
|
73
75
|
```
|
|
74
76
|
|
|
75
|
-
##
|
|
77
|
+
## Output Example — --thread Mode
|
|
76
78
|
|
|
77
79
|
```
|
|
78
|
-
━━━ Dreaming: thread thd_xyz789 —
|
|
79
|
-
|
|
80
|
+
━━━ Dreaming: thread thd_xyz789 — last 5 ━━━
|
|
81
|
+
Task list: 5
|
|
80
82
|
|
|
81
|
-
1. ✅ tsk_abc123 | core_dev | success | 312s | dreaming
|
|
82
|
-
2. ❌ tsk_def456 | core_dev | failed | 45s | tsc
|
|
83
|
-
3. ✅ tsk_ghi789 | ui_lead | completed | 180s | UI
|
|
84
|
-
4. ✅ tsk_jkl012 | core_dev | success | 240s | SDK
|
|
85
|
-
5. ✅ tsk_mno345 | core_dev | success | 90s | CLI registry
|
|
83
|
+
1. ✅ tsk_abc123 | core_dev | success | 312s | promote dreaming to a built-in skill
|
|
84
|
+
2. ❌ tsk_def456 | core_dev | failed | 45s | tsc build verification
|
|
85
|
+
3. ✅ tsk_ghi789 | ui_lead | completed | 180s | UI component review
|
|
86
|
+
4. ✅ tsk_jkl012 | core_dev | success | 240s | apply SDK repository pattern
|
|
87
|
+
5. ✅ tsk_mno345 | core_dev | success | 90s | register CLI registry
|
|
86
88
|
|
|
87
|
-
|
|
89
|
+
Drill down: crewx dreaming --task=<id>
|
|
88
90
|
```
|
|
89
91
|
|
|
92
|
+
## Output Example — --continue Mode (Continue My Previous Work)
|
|
93
|
+
|
|
94
|
+
Within the same thread, this picks out only the **current agent's own** previous work, showing the most recent one in detail plus rule-based one-line summaries of the ones before it. The summaries are based on tool count / status / duration / files, not an LLM.
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
━━━ Continue My Previous Work ━━━
|
|
98
|
+
Thread: thd_xyz789 | Agent: core_lead
|
|
99
|
+
|
|
100
|
+
[Most Recent Task]
|
|
101
|
+
|
|
102
|
+
━━━ Dreaming: task tsk_123 ━━━
|
|
103
|
+
... detailed activity log (timeline capped at 30, remove with --full) ...
|
|
104
|
+
|
|
105
|
+
[Previous Task Summary]
|
|
106
|
+
- tsk_122 | ✅ success | 120s | Bash 3x, Read 4x, Edit 0x
|
|
107
|
+
- tsk_121 | ❌ failed | 45s | Bash 2x | ⚠️ struggle
|
|
108
|
+
|
|
109
|
+
━━━ Next Actions ━━━
|
|
110
|
+
Full activity log:
|
|
111
|
+
crewx dreaming --task=tsk_122 --full
|
|
112
|
+
Detailed task log JSON:
|
|
113
|
+
crewx dreaming --task=tsk_122 --json
|
|
114
|
+
Task list for this conversation:
|
|
115
|
+
crewx dreaming --thread=thd_xyz789 --agent=core_lead
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# Continue the current agent's own previous work
|
|
120
|
+
crewx dreaming --thread=thd_xyz789 --agent=self --continue
|
|
121
|
+
|
|
122
|
+
# Explicit agent + last 3 (most recent 1 detailed + previous 2 summarized)
|
|
123
|
+
crewx dreaming --thread=thd_xyz789 --agent=core_lead --continue --recent=3
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
> `--agent=self` resolves the current agent via the `CREWX_AGENT_ID` environment variable. If the variable isn't set, you must specify an explicit agent id.
|
|
127
|
+
|
|
90
128
|
## Options
|
|
91
129
|
|
|
92
|
-
|
|
|
130
|
+
| Option | Default | Description |
|
|
93
131
|
|------|--------|------|
|
|
94
|
-
| `--task=ID` | — |
|
|
95
|
-
| `--thread=ID` | — |
|
|
96
|
-
| `--
|
|
97
|
-
| `--
|
|
132
|
+
| `--task=ID` | — | Task ID (tsk_xxx) |
|
|
133
|
+
| `--thread=ID` | — | Thread ID (thd_xxx) |
|
|
134
|
+
| `--agent=ID` | — | Only this agent within the thread (`self` → current agent) |
|
|
135
|
+
| `--continue` | false | Continue my previous work (most recent 1 detailed + previous N rule-based summary) |
|
|
136
|
+
| `--recent=N` | list 5 / continue 3 | Last N items |
|
|
137
|
+
| `--full` | false | Remove the timeline cap + include raw fields in JSON |
|
|
138
|
+
| `--json` | false | Pure JSON output (no CAL footer) |
|
|
139
|
+
|
|
140
|
+
## CAL "Next Actions"
|
|
141
|
+
|
|
142
|
+
A CAL footer guiding the next action is appended to the bottom of human-readable output (`--full`, `--json`, thread drill-down).
|
|
143
|
+
**The `--json` output has no footer and can be parsed as a single JSON value.** Without `--full`, the raw input/result fields are excluded from the JSON.
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { TaskRepository } from '@crewx/sdk';
|
|
3
|
+
import type { TaskLogEntry } from '@crewx/sdk/repository';
|
|
4
|
+
export declare const DEFAULT_ACTIVITY_LOG_BUDGET = 8000;
|
|
5
|
+
export declare function readCanonicalTaskLogs(taskRepo: Pick<TaskRepository, 'readLogs'>, taskId: string): TaskLogEntry[];
|
|
2
6
|
export declare function main(inputArgs?: string[]): Promise<void>;
|
|
3
|
-
|
|
7
|
+
|
package/dist/cli.js
CHANGED
|
@@ -1,130 +1,38 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
exports.main = main;
|
|
5
|
-
const sdk_1 = require("@crewx/sdk");
|
|
6
|
-
const analyzer_js_1 = require("./src/analyzer.js");
|
|
7
|
-
const renderer_js_1 = require("./src/renderer.js");
|
|
8
|
-
function parseFlags(argv) {
|
|
9
|
-
const flags = {
|
|
10
|
-
task: null,
|
|
11
|
-
thread: null,
|
|
12
|
-
agent: null,
|
|
13
|
-
days: 1,
|
|
14
|
-
recent: null,
|
|
15
|
-
json: false,
|
|
16
|
-
all: false,
|
|
17
|
-
};
|
|
18
|
-
for (const a of argv) {
|
|
19
|
-
if (a === '--json')
|
|
20
|
-
flags.json = true;
|
|
21
|
-
else if (a === '--all')
|
|
22
|
-
flags.all = true;
|
|
23
|
-
else if (a.startsWith('--task='))
|
|
24
|
-
flags.task = a.slice('--task='.length);
|
|
25
|
-
else if (a.startsWith('--thread='))
|
|
26
|
-
flags.thread = a.slice('--thread='.length);
|
|
27
|
-
else if (a.startsWith('--agent='))
|
|
28
|
-
flags.agent = a.slice('--agent='.length);
|
|
29
|
-
else if (a.startsWith('--days='))
|
|
30
|
-
flags.days = parseInt(a.slice('--days='.length), 10);
|
|
31
|
-
else if (a.startsWith('--recent='))
|
|
32
|
-
flags.recent = parseInt(a.slice('--recent='.length), 10);
|
|
33
|
-
else if (a === '--help' || a === '-h') {
|
|
34
|
-
printUsage();
|
|
35
|
-
process.exit(0);
|
|
36
|
-
}
|
|
37
|
-
else if (a.startsWith('--')) {
|
|
38
|
-
console.error(`Unknown option: ${a}\nRun with --help for usage.`);
|
|
39
|
-
process.exit(1);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return flags;
|
|
43
|
-
}
|
|
44
|
-
function printUsage() {
|
|
45
|
-
console.log(`crewx dreaming — 선별 실행하는 필수 회고 스킬
|
|
2
|
+
"use strict";var j=exports&&exports.__createBinding||(Object.create?(function(r,t,e,n){if(n===void 0)n=e;var s=Object.getOwnPropertyDescriptor(t,e);if(!s||("get"in s?!t.__esModule:s.writable||s.configurable)){s={enumerable:true,get:function(){return t[e]}}}Object.defineProperty(r,n,s)}):(function(r,t,e,n){if(n===void 0)n=e;r[n]=t[e]}));var E=exports&&exports.__setModuleDefault||(Object.create?(function(r,t){Object.defineProperty(r,"default",{enumerable:true,value:t})}):function(r,t){r["default"]=t});var T=exports&&exports.__importStar||(function(){var r=function(t){r=Object.getOwnPropertyNames||function(e){var n=[];for(var s in e)if(Object.prototype.hasOwnProperty.call(e,s))n[n.length]=s;return n};return r(t)};return function(t){if(t&&t.__esModule)return t;var e={};if(t!=null){for(var n=r(t),s=0;s<n.length;s++)if(n[s]!=="default")j(e,t,n[s])}E(e,t);return e}})();Object.defineProperty(exports,"__esModule",{value:true});exports.DEFAULT_ACTIVITY_LOG_BUDGET=void 0;exports.readCanonicalTaskLogs=D;exports.main=A;const b=require("@crewx/sdk");const I=T(require("fs"));const L=T(require("path"));const k=require("./src/analyzer.js");const N=require("./src/scrub.js");const d=require("./src/renderer.js");exports.DEFAULT_ACTIVITY_LOG_BUDGET=8e3;const O=60;const S=30;function C(r){const t={task:null,thread:null,agent:null,days:1,recent:null,json:false,all:false,continue:false,full:false,lookback:3,activityLog:false};for(const e of r){if(e==="--json")t.json=true;else if(e==="--all")t.all=true;else if(e==="--full")t.full=true;else if(e==="--continue")t.continue=true;else if(e==="--activity-log")t.activityLog=true;else if(e.startsWith("--task="))t.task=e.slice("--task=".length);else if(e.startsWith("--thread="))t.thread=e.slice("--thread=".length);else if(e.startsWith("--agent="))t.agent=e.slice("--agent=".length);else if(e.startsWith("--days="))t.days=parseInt(e.slice("--days=".length),10);else if(e.startsWith("--recent="))t.recent=parseInt(e.slice("--recent=".length),10);else if(e.startsWith("--lookback="))t.lookback=parseInt(e.slice("--lookback=".length),10);else if(e==="--help"||e==="-h"){y();process.exit(0)}else if(e.startsWith("--")){console.error(`Unknown option: ${e}
|
|
3
|
+
Run with --help for usage.`);process.exit(1)}}return t}function y(){console.log(`crewx dreaming \u2014 Selective reflection skill
|
|
46
4
|
|
|
47
|
-
|
|
48
|
-
memory/doc/search
|
|
5
|
+
A first-class reflection tool agents call before/after work or during retries to recover context.
|
|
6
|
+
Use it proactively alongside memory/doc/search when the situation calls for it.
|
|
49
7
|
|
|
50
8
|
Usage:
|
|
51
|
-
crewx dreaming --task=TASK_ID
|
|
52
|
-
crewx dreaming --thread=THREAD_ID [--recent=N]
|
|
9
|
+
crewx dreaming --task=TASK_ID [--full] [--json]
|
|
10
|
+
crewx dreaming --thread=THREAD_ID [--agent=AGENT_ID] [--recent=N]
|
|
11
|
+
crewx dreaming --thread=THREAD_ID --agent=AGENT_ID --continue [--recent=N] [--full] [--json]
|
|
12
|
+
crewx dreaming --thread=THREAD_ID --agent=AGENT_ID --activity-log [--lookback=N] [--json]
|
|
53
13
|
|
|
54
14
|
Options:
|
|
55
|
-
--task=ID
|
|
56
|
-
--thread=ID
|
|
57
|
-
--
|
|
58
|
-
--
|
|
59
|
-
--
|
|
15
|
+
--task=ID Deep reflection for one task (timeline + skill usage + struggle/efficiency summary)
|
|
16
|
+
--thread=ID List the last N tasks in a conversation with each end status
|
|
17
|
+
--agent=ID Restrict thread view to one agent (--agent=self means current agent)
|
|
18
|
+
--continue Continue previous work: latest task details plus rule-based summary of prior tasks
|
|
19
|
+
--activity-log Output precomputed <activity_log> XML of read-only results from previous N tasks
|
|
20
|
+
--lookback=N N-back depth for --activity-log (default: 3, 0 = disabled, max recommended: 5)
|
|
21
|
+
--recent=N Last N items (list default: 5 / continue default: 3)
|
|
22
|
+
--full Show the full timeline and include raw fields in JSON
|
|
23
|
+
--json Pure JSON output without a CAL footer
|
|
24
|
+
--help, -h Show help
|
|
60
25
|
|
|
61
|
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
26
|
+
When to call:
|
|
27
|
+
- Before starting: check whether there is an interrupted task
|
|
28
|
+
- Before retrying after failure: recover where the previous attempt stopped
|
|
29
|
+
- To understand conversation context: use --thread to list tasks in this conversation
|
|
30
|
+
- Continue previous work: --thread --agent --continue
|
|
31
|
+
- SDK prompt assembly: --activity-log to inject precomputed read-only results
|
|
66
32
|
|
|
67
33
|
Examples:
|
|
68
|
-
crewx dreaming --task=tsk_abc123
|
|
34
|
+
crewx dreaming --task=tsk_abc123 --full
|
|
69
35
|
crewx dreaming --thread=thd_xyz789 --recent=5
|
|
70
|
-
crewx dreaming --thread=thd_xyz789 --
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
async function main(inputArgs) {
|
|
74
|
-
const args = inputArgs ?? process.argv.slice(2);
|
|
75
|
-
if (!args.length || args[0] === '--help' || args[0] === '-h') {
|
|
76
|
-
printUsage();
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
const flags = parseFlags(args);
|
|
80
|
-
if (!flags.task && !flags.thread) {
|
|
81
|
-
console.error('Error: --task=<id> or --thread=<id> is required.\nRun crewx dreaming --help for usage.');
|
|
82
|
-
process.exit(1);
|
|
83
|
-
}
|
|
84
|
-
const taskRepo = new sdk_1.TaskRepository();
|
|
85
|
-
const spanRepo = new sdk_1.SpanRepository();
|
|
86
|
-
if (flags.task) {
|
|
87
|
-
const row = taskRepo.getTask(flags.task);
|
|
88
|
-
if (!row) {
|
|
89
|
-
console.log(`No task found: ${flags.task}`);
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
const spans = spanRepo.findByTaskId(flags.task);
|
|
93
|
-
const result = (0, analyzer_js_1.analyzeTask)(row, spans);
|
|
94
|
-
if (flags.json) {
|
|
95
|
-
process.stdout.write(JSON.stringify(result, null, 2) + '\n');
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
console.log((0, renderer_js_1.renderTaskFull)(result));
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
if (flags.thread) {
|
|
102
|
-
const recent = flags.recent ?? 5;
|
|
103
|
-
const allTasks = taskRepo.findTasksByThread(flags.thread);
|
|
104
|
-
const topLevel = allTasks
|
|
105
|
-
.filter((t) => !t.parent_task_id)
|
|
106
|
-
.sort((a, b) => (b.started_at > a.started_at ? 1 : -1))
|
|
107
|
-
.slice(0, recent);
|
|
108
|
-
const summaryRows = topLevel.map((t) => ({
|
|
109
|
-
taskId: t.id,
|
|
110
|
-
agentId: t.agent_id,
|
|
111
|
-
status: t.status,
|
|
112
|
-
promptSummary: t.prompt ? t.prompt.split('\n')[0].slice(0, 100) : null,
|
|
113
|
-
startedAt: t.started_at,
|
|
114
|
-
duration: t.duration_ms != null ? Math.round(t.duration_ms / 1000) : null,
|
|
115
|
-
}));
|
|
116
|
-
if (flags.json) {
|
|
117
|
-
process.stdout.write(JSON.stringify(summaryRows, null, 2) + '\n');
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
console.log((0, renderer_js_1.renderThreadTaskList)(summaryRows, flags.thread, recent));
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
if (require.main === module) {
|
|
125
|
-
main().catch((e) => {
|
|
126
|
-
console.error(e.message);
|
|
127
|
-
process.exit(1);
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
//# sourceMappingURL=cli.js.map
|
|
36
|
+
crewx dreaming --thread=thd_xyz789 --agent=core_lead --continue
|
|
37
|
+
crewx dreaming --thread=thd_xyz789 --agent=core_lead --activity-log --lookback=2
|
|
38
|
+
`)}function R(){const r=L.join(__dirname,"..","SKILL.md");if(I.existsSync(r)){process.stdout.write(I.readFileSync(r,"utf-8"))}else{y()}}function U(r){if(r!=="self")return r;const t=process.env.CREWX_AGENT_ID;if(!t){console.error("Error: --agent=self requires CREWX_AGENT_ID in the environment.\nPass an explicit agent id instead, e.g. --agent=core_lead.");process.exit(1)}return t}function x(r,t){if(t)return r;return{...r,timeline:r.timeline.map(e=>{const{input:n,resultPreview:s,...g}=e;return g})}}function p(r){process.stdout.write(JSON.stringify((0,N.scrubSecrets)(r),null,2)+"\n")}function v(r,t){return r.findTasksByThread(t).filter(e=>!e.parent_task_id).sort((e,n)=>n.started_at>e.started_at?1:-1)}function D(r,t){try{return r.readLogs(t)?.entries??[]}catch{return[]}}function w(r,t,e){return(0,k.analyzeTask)(e,t.findByTaskId(e.id),D(r,e.id))}async function A(r){const t=r??process.argv.slice(2);if(t[0]==="usage"){R();return}if(!t.length||t[0]==="--help"||t[0]==="-h"){y();return}const e=C(t);const n=U(e.agent);if(!e.task&&!e.thread){console.error("Error: --task=<id> or --thread=<id> is required.\nRun crewx dreaming --help for usage.");process.exit(1)}const s=new b.TaskRepository;const g=new b.SpanRepository;if(e.task){const l=s.getTask(e.task);if(!l){console.log(`No task found: ${e.task}`);return}const a=w(s,g,l);if(e.json){p(x(a,e.full));return}const u=(0,d.renderTaskFull)(a,{maxTimeline:e.full?null:O});const i=[];if(!e.full){i.push({label:"Full activity log",cmd:`crewx dreaming --task=${a.taskId} --full`})}i.push({label:"Detailed task log JSON",cmd:`crewx dreaming --task=${a.taskId} --json`});console.log(u+"\n"+(0,d.buildCalFooter)(i));return}if(e.thread&&e.activityLog){if(!n){console.error("Error: --activity-log requires --agent=<id> (or --agent=self).");process.exit(1)}const l=e.lookback;if(l===0){if(e.json){p({mode:"activity-log",lookback:0,entries:[],truncated:false,xml:""})}else{process.stdout.write("")}return}const a=v(s,e.thread).filter(c=>c.agent_id===n).slice(0,Math.min(l,5));const u=a.map(c=>w(s,g,c));const i=(0,k.buildActivityLog)(u,e.thread,n,l,exports.DEFAULT_ACTIVITY_LOG_BUDGET);if(e.json){p({mode:"activity-log",...i,xml:(0,d.renderActivityLogXml)(i)});return}process.stdout.write((0,d.renderActivityLogXml)(i)+"\n");return}if(e.thread&&e.continue){if(!n){console.error("Error: --continue requires --agent=<id> (or --agent=self).");process.exit(1)}const l=e.recent??3;const a=v(s,e.thread).filter(_=>_.agent_id===n).slice(0,l+1);const u=a.map(_=>w(s,g,_));const i=u[0]??null;const c=u.slice(1).map(k.summarizeAnalysis);const f={mode:"continue",thread:e.thread,agent:n,latest:i,previous:c};if(e.json){p({...f,latest:i?x(i,e.full):null});return}const o=(0,d.renderContinue)(f,{maxTimeline:e.full?null:S});const h=[];const m=c[0]?.taskId??i?.taskId;if(m){h.push({label:"Full activity log",cmd:`crewx dreaming --task=${m} --full`});h.push({label:"Detailed task log JSON",cmd:`crewx dreaming --task=${m} --json`})}h.push({label:"Task list for this conversation",cmd:`crewx dreaming --thread=${e.thread} --agent=${n}`});console.log(o+(h.length?"\n"+(0,d.buildCalFooter)(h):""));return}if(e.thread){const l=e.recent??5;let a=v(s,e.thread);if(n)a=a.filter(o=>o.agent_id===n);a=a.slice(0,l);const u=a.map(o=>({taskId:o.id,agentId:o.agent_id,status:o.status,promptSummary:o.prompt?o.prompt.split("\n")[0].slice(0,100):null,startedAt:o.started_at,duration:o.duration_ms!=null?Math.round(o.duration_ms/1e3):null}));if(e.json){p(u);return}const i=(0,d.renderThreadTaskList)(u,e.thread,l);const c=[];const f=u[0];if(f){const o=n??f.agentId;c.push({label:"Continue previous work",cmd:`crewx dreaming --thread=${e.thread} --agent=${o} --continue`});c.push({label:"Task drilldown",cmd:`crewx dreaming --task=${f.taskId} --full`})}console.log(i+(c.length?"\n"+(0,d.buildCalFooter)(c):""));return}}if(require.main===module){A().catch(r=>{console.error(r.message);process.exit(1)})}
|
package/dist/src/analyzer.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SpanRow, TaskRow } from '@crewx/sdk';
|
|
2
|
-
import type { TaskAnalysis } from './types.js';
|
|
2
|
+
import type { TaskAnalysis, TaskActivitySummary, ActivityLogEntry, ActivityLog } from './types.js';
|
|
3
3
|
export declare function normalizeToolName(name: string | null | undefined): string;
|
|
4
4
|
interface RawToolCall {
|
|
5
5
|
toolUseId: string | null;
|
|
@@ -8,7 +8,14 @@ interface RawToolCall {
|
|
|
8
8
|
isError: boolean | null;
|
|
9
9
|
resultPreview: string | null;
|
|
10
10
|
}
|
|
11
|
-
export declare function extractToolCallsFromLogs(logs: unknown[]): RawToolCall[];
|
|
12
|
-
export declare function analyzeTask(row: TaskRow, spans: SpanRow[]): TaskAnalysis;
|
|
11
|
+
export declare function extractToolCallsFromLogs(logs: unknown[], metaProvider?: string): RawToolCall[];
|
|
12
|
+
export declare function analyzeTask(row: TaskRow, spans: SpanRow[], logs?: unknown[]): TaskAnalysis;
|
|
13
|
+
export declare const READ_ONLY_TOOLS: Set<string>;
|
|
14
|
+
export declare const READ_ONLY_BASH_PREFIXES: string[];
|
|
15
|
+
export declare function isReadOnlyToolCall(name: string, input: string | null): boolean;
|
|
16
|
+
export declare function checkFileStaleness(filePath: string, taskCompletedAt?: string | null): 'ok' | 'stale' | 'unknown';
|
|
17
|
+
export declare function extractActivityLogEntries(analyses: TaskAnalysis[]): ActivityLogEntry[];
|
|
18
|
+
export declare function buildActivityLog(analyses: TaskAnalysis[], threadId: string, agentId: string, lookback: number, tokenBudget: number): ActivityLog;
|
|
19
|
+
export declare function summarizeAnalysis(a: TaskAnalysis): TaskActivitySummary;
|
|
13
20
|
export {};
|
|
14
|
-
|
|
21
|
+
|
package/dist/src/analyzer.js
CHANGED
|
@@ -1,414 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.normalizeToolName = normalizeToolName;
|
|
4
|
-
exports.extractToolCallsFromLogs = extractToolCallsFromLogs;
|
|
5
|
-
exports.analyzeTask = analyzeTask;
|
|
6
|
-
const sdk_1 = require("@crewx/sdk");
|
|
7
|
-
const VERIFY_COMMANDS = [
|
|
8
|
-
'tsc', 'npm test', 'npm run test', 'npm run lint', 'eslint',
|
|
9
|
-
'prettier', 'jest', 'vitest', 'biome', 'npx tsc',
|
|
10
|
-
];
|
|
11
|
-
const BASH_ERROR_PATTERNS = [
|
|
12
|
-
/error/i, /failed/i, /exit code [^0]/, /cannot find/i,
|
|
13
|
-
/does not exist/i, /FAILED/, /✗/, /ERR!/,
|
|
14
|
-
];
|
|
15
|
-
const ERROR_CATEGORIES = [
|
|
16
|
-
[/Type .+ is not assignable to type/i, '타입 불일치'],
|
|
17
|
-
[/Cannot find module/i, '모듈 경로 오류'],
|
|
18
|
-
[/Property .+ does not exist/i, '존재하지 않는 프로퍼티'],
|
|
19
|
-
[/Expected \d+ arguments/i, '인자 수 불일치'],
|
|
20
|
-
[/Cannot find name/i, '미선언 변수/함수'],
|
|
21
|
-
[/has no exported member/i, 'export 누락'],
|
|
22
|
-
[/FAIL|AssertionError|expect\(/i, '테스트 실패'],
|
|
23
|
-
[/SyntaxError|Unexpected token/i, '구문 오류'],
|
|
24
|
-
];
|
|
25
|
-
const FILE_PLACEHOLDERS = new Set(['Read File', 'Edit File', 'Write File', 'Terminal', '{}', '']);
|
|
26
|
-
function normalizeToolName(name) {
|
|
27
|
-
if (!name)
|
|
28
|
-
return '';
|
|
29
|
-
const lower = name.toLowerCase();
|
|
30
|
-
if (lower === 'bash' || lower === 'terminal')
|
|
31
|
-
return 'Bash';
|
|
32
|
-
if (lower === 'read' || lower === 'view')
|
|
33
|
-
return 'Read';
|
|
34
|
-
if (lower === 'edit' || lower === 'apply_patch')
|
|
35
|
-
return 'Edit';
|
|
36
|
-
if (lower === 'write')
|
|
37
|
-
return 'Write';
|
|
38
|
-
if (lower === 'grep' || lower === 'rg')
|
|
39
|
-
return 'Grep';
|
|
40
|
-
if (lower === 'glob' || lower === 'find')
|
|
41
|
-
return 'Find';
|
|
42
|
-
return name;
|
|
43
|
-
}
|
|
44
|
-
function shortenPath(p) {
|
|
45
|
-
const segments = p.replace(/\\/g, '/').split('/').filter(Boolean);
|
|
46
|
-
const keep = segments.length <= 3 ? segments : segments.slice(-3);
|
|
47
|
-
return keep.join('/');
|
|
48
|
-
}
|
|
49
|
-
function extractFilePath(toolName, input) {
|
|
50
|
-
const normalized = normalizeToolName(toolName);
|
|
51
|
-
if (normalized !== 'Read' && normalized !== 'Edit' && normalized !== 'Write')
|
|
52
|
-
return null;
|
|
53
|
-
if (!input)
|
|
54
|
-
return null;
|
|
55
|
-
if (FILE_PLACEHOLDERS.has(input))
|
|
56
|
-
return null;
|
|
57
|
-
if (input.includes('*** Update File:') || input.includes('*** Add File:')) {
|
|
58
|
-
const paths = [];
|
|
59
|
-
for (const m of input.matchAll(/\*\*\*\s+(?:Update|Add)\s+File:\s*(.+)/g)) {
|
|
60
|
-
const fp = m[1].trim();
|
|
61
|
-
if (fp)
|
|
62
|
-
paths.push(shortenPath(fp));
|
|
63
|
-
}
|
|
64
|
-
return paths.length ? paths : null;
|
|
65
|
-
}
|
|
66
|
-
let cleaned = input;
|
|
67
|
-
if (/^(Read|Edit|Write|View)\s+/.test(cleaned)) {
|
|
68
|
-
cleaned = cleaned.replace(/^(Read|Edit|Write|View)\s+/, '');
|
|
69
|
-
}
|
|
70
|
-
if (/[*?{}]/.test(cleaned))
|
|
71
|
-
return null;
|
|
72
|
-
if (cleaned.length > 300)
|
|
73
|
-
return null;
|
|
74
|
-
if (!/\.\w+$/.test(cleaned) && !cleaned.includes('/'))
|
|
75
|
-
return null;
|
|
76
|
-
if (cleaned.startsWith('/') || /^[A-Za-z]:[\\/]/.test(cleaned)) {
|
|
77
|
-
return shortenPath(cleaned);
|
|
78
|
-
}
|
|
79
|
-
return cleaned;
|
|
80
|
-
}
|
|
81
|
-
function detectProvider(stdoutLines) {
|
|
82
|
-
const types = new Set();
|
|
83
|
-
for (const line of stdoutLines) {
|
|
84
|
-
try {
|
|
85
|
-
const p = JSON.parse(line);
|
|
86
|
-
if (p.type)
|
|
87
|
-
types.add(p.type);
|
|
88
|
-
}
|
|
89
|
-
catch { }
|
|
90
|
-
}
|
|
91
|
-
if (types.has('turn.started') || types.has('turn.failed') || types.has('thread.started'))
|
|
92
|
-
return 'codex';
|
|
93
|
-
if (types.has('assistant.message_delta') || types.has('tool.execution_complete'))
|
|
94
|
-
return 'copilot';
|
|
95
|
-
if (types.has('step_start') && types.has('step_finish'))
|
|
96
|
-
return 'opencode';
|
|
97
|
-
if (types.has('system') && types.has('result'))
|
|
98
|
-
return 'claude';
|
|
99
|
-
if (types.has('init') && types.has('message'))
|
|
100
|
-
return 'gemini';
|
|
101
|
-
if (types.has('result') && types.has('assistant'))
|
|
102
|
-
return 'claude';
|
|
103
|
-
return null;
|
|
104
|
-
}
|
|
105
|
-
function extractToolCallsFromLogs(logs) {
|
|
106
|
-
if (!Array.isArray(logs))
|
|
107
|
-
return [];
|
|
108
|
-
const logEntries = logs;
|
|
109
|
-
const stdoutLines = logEntries
|
|
110
|
-
.filter((e) => e.level === 'stdout' && e.message)
|
|
111
|
-
.map((e) => e.message);
|
|
112
|
-
const provider = detectProvider(stdoutLines);
|
|
113
|
-
const allEntries = [];
|
|
114
|
-
for (const entry of logEntries) {
|
|
115
|
-
if (entry.level === 'info' && entry.message) {
|
|
116
|
-
allEntries.push(...(0, sdk_1.defaultParseEvent)(entry.message, entry.timestamp));
|
|
117
|
-
}
|
|
118
|
-
else if (entry.level === 'stdout' && entry.message && provider) {
|
|
119
|
-
allEntries.push(...(0, sdk_1.parseStdoutEvent)('', entry.message, provider));
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
if (!allEntries.length)
|
|
123
|
-
return [];
|
|
124
|
-
const toolUseMap = new Map();
|
|
125
|
-
const toolUseOrder = [];
|
|
126
|
-
for (const e of allEntries) {
|
|
127
|
-
if (e.type === 'tool_use') {
|
|
128
|
-
const tc = {
|
|
129
|
-
toolUseId: e.toolUseId ?? null,
|
|
130
|
-
name: normalizeToolName(e.toolName),
|
|
131
|
-
input: e.toolInput ?? null,
|
|
132
|
-
isError: null,
|
|
133
|
-
resultPreview: null,
|
|
134
|
-
};
|
|
135
|
-
const id = tc.toolUseId;
|
|
136
|
-
if (id) {
|
|
137
|
-
if (toolUseMap.has(id)) {
|
|
138
|
-
toolUseMap.get(id).input = tc.input;
|
|
139
|
-
continue;
|
|
140
|
-
}
|
|
141
|
-
toolUseMap.set(id, tc);
|
|
142
|
-
}
|
|
143
|
-
toolUseOrder.push(tc);
|
|
144
|
-
}
|
|
145
|
-
else if (e.type === 'tool_result') {
|
|
146
|
-
const resultE = e;
|
|
147
|
-
if (resultE.toolUseId && toolUseMap.has(resultE.toolUseId)) {
|
|
148
|
-
const tc = toolUseMap.get(resultE.toolUseId);
|
|
149
|
-
tc.isError = resultE.isError === true;
|
|
150
|
-
tc.resultPreview = resultE.resultPreview ?? null;
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
for (let i = toolUseOrder.length - 1; i >= 0; i--) {
|
|
154
|
-
const tc2 = toolUseOrder[i];
|
|
155
|
-
if (tc2.resultPreview === null) {
|
|
156
|
-
tc2.isError = resultE.isError === true;
|
|
157
|
-
tc2.resultPreview = resultE.resultPreview ?? null;
|
|
158
|
-
break;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
return toolUseOrder;
|
|
165
|
-
}
|
|
166
|
-
function normalizeSkillName(spanName) {
|
|
167
|
-
const bracket = spanName.match(/^\[skill:([^\]]+)\]/);
|
|
168
|
-
if (bracket) {
|
|
169
|
-
const raw = bracket[1];
|
|
170
|
-
if (raw === 'memory-v2')
|
|
171
|
-
return 'crewx/memory';
|
|
172
|
-
return raw;
|
|
173
|
-
}
|
|
174
|
-
if (spanName.startsWith('skill:'))
|
|
175
|
-
return spanName.slice(6);
|
|
176
|
-
return spanName;
|
|
177
|
-
}
|
|
178
|
-
function extractSkillSubCmd(skillName, input) {
|
|
179
|
-
if (!input)
|
|
180
|
-
return null;
|
|
181
|
-
const tokens = input.trim().split(/\s+/);
|
|
182
|
-
const stripMap = {
|
|
183
|
-
'crewx/memory': 'memory', 'crewx/doc': 'doc', 'crewx/skill': 'skill',
|
|
184
|
-
'crewx/workflow': 'workflow', 'tsserver': 'tsserver',
|
|
185
|
-
};
|
|
186
|
-
if (skillName === 'crewx/search')
|
|
187
|
-
return null;
|
|
188
|
-
let i = 0;
|
|
189
|
-
const prefix = stripMap[skillName];
|
|
190
|
-
if (prefix && tokens[0] === prefix)
|
|
191
|
-
i++;
|
|
192
|
-
const sub = tokens[i];
|
|
193
|
-
if (!sub || sub.startsWith('-') || sub.startsWith('/'))
|
|
194
|
-
return null;
|
|
195
|
-
return sub;
|
|
196
|
-
}
|
|
197
|
-
function aggregateSpans(spans) {
|
|
198
|
-
const bySkill = {};
|
|
199
|
-
for (const s of spans) {
|
|
200
|
-
if (s.input && s.input.includes('summarize-dirty'))
|
|
201
|
-
continue;
|
|
202
|
-
const skill = normalizeSkillName(s.name);
|
|
203
|
-
if (!bySkill[skill])
|
|
204
|
-
bySkill[skill] = { count: 0, subCmds: {} };
|
|
205
|
-
bySkill[skill].count++;
|
|
206
|
-
const sub = extractSkillSubCmd(skill, s.input ?? null);
|
|
207
|
-
if (sub)
|
|
208
|
-
bySkill[skill].subCmds[sub] = (bySkill[skill].subCmds[sub] ?? 0) + 1;
|
|
209
|
-
}
|
|
210
|
-
return bySkill;
|
|
211
|
-
}
|
|
212
|
-
function classifyBashCmd(cmd) {
|
|
213
|
-
if (!cmd)
|
|
214
|
-
return null;
|
|
215
|
-
for (const v of VERIFY_COMMANDS) {
|
|
216
|
-
if (cmd.includes(v))
|
|
217
|
-
return v;
|
|
218
|
-
}
|
|
219
|
-
return null;
|
|
220
|
-
}
|
|
221
|
-
function isBashFailed(tc) {
|
|
222
|
-
if (tc.isError === true)
|
|
223
|
-
return true;
|
|
224
|
-
if (!tc.resultPreview)
|
|
225
|
-
return false;
|
|
226
|
-
return BASH_ERROR_PATTERNS.some((p) => p.test(tc.resultPreview));
|
|
227
|
-
}
|
|
228
|
-
function categorizeError(msg) {
|
|
229
|
-
if (!msg)
|
|
230
|
-
return null;
|
|
231
|
-
for (const [pattern, cat] of ERROR_CATEGORIES) {
|
|
232
|
-
if (pattern.test(msg))
|
|
233
|
-
return cat;
|
|
234
|
-
}
|
|
235
|
-
return null;
|
|
236
|
-
}
|
|
237
|
-
function buildTimeline(toolCalls) {
|
|
238
|
-
const fileEditCounts = {};
|
|
239
|
-
return toolCalls.map((tc) => {
|
|
240
|
-
const name = normalizeToolName(tc.name);
|
|
241
|
-
const entry = {
|
|
242
|
-
name,
|
|
243
|
-
input: tc.input,
|
|
244
|
-
isError: tc.isError,
|
|
245
|
-
resultPreview: tc.resultPreview,
|
|
246
|
-
filePath: null,
|
|
247
|
-
bashCmd: null,
|
|
248
|
-
bashResult: null,
|
|
249
|
-
bashErrorMsg: null,
|
|
250
|
-
errorCategory: null,
|
|
251
|
-
isVerify: false,
|
|
252
|
-
editCount: null,
|
|
253
|
-
};
|
|
254
|
-
if (name === 'Read' || name === 'Edit' || name === 'Write') {
|
|
255
|
-
entry.filePath = extractFilePath(tc.name, tc.input);
|
|
256
|
-
}
|
|
257
|
-
if ((name === 'Edit' || name === 'Write') && entry.filePath) {
|
|
258
|
-
const paths = Array.isArray(entry.filePath) ? entry.filePath : [entry.filePath];
|
|
259
|
-
for (const p of paths)
|
|
260
|
-
fileEditCounts[p] = (fileEditCounts[p] ?? 0) + 1;
|
|
261
|
-
entry.editCount = fileEditCounts[paths[0]] ?? null;
|
|
262
|
-
}
|
|
263
|
-
if (name === 'Bash') {
|
|
264
|
-
entry.bashCmd = tc.input ? tc.input.split('\n')[0].slice(0, 150) : '';
|
|
265
|
-
entry.isVerify = !!classifyBashCmd(entry.bashCmd);
|
|
266
|
-
const failed = isBashFailed(tc);
|
|
267
|
-
entry.bashResult = failed ? 'fail' : 'pass';
|
|
268
|
-
if (failed && tc.resultPreview) {
|
|
269
|
-
entry.bashErrorMsg = tc.resultPreview.trim().split('\n')[0].slice(0, 100);
|
|
270
|
-
entry.errorCategory = categorizeError(tc.resultPreview);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
return entry;
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
|
-
function detectPatterns(timeline) {
|
|
277
|
-
const struggles = [];
|
|
278
|
-
const efficients = [];
|
|
279
|
-
for (let i = 0; i < timeline.length; i++) {
|
|
280
|
-
const e = timeline[i];
|
|
281
|
-
if (e.name !== 'Bash' || !e.isVerify || e.bashResult !== 'pass')
|
|
282
|
-
continue;
|
|
283
|
-
const verifyType = classifyBashCmd(e.bashCmd);
|
|
284
|
-
const failIndices = [];
|
|
285
|
-
let j = i - 1;
|
|
286
|
-
while (j >= 0) {
|
|
287
|
-
const prev = timeline[j];
|
|
288
|
-
if (prev.name === 'Bash' && prev.isVerify) {
|
|
289
|
-
if (classifyBashCmd(prev.bashCmd) === verifyType && prev.bashResult === 'fail') {
|
|
290
|
-
failIndices.unshift(j);
|
|
291
|
-
}
|
|
292
|
-
else if (prev.bashResult === 'pass') {
|
|
293
|
-
break;
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
j--;
|
|
297
|
-
}
|
|
298
|
-
if (failIndices.length >= 1) {
|
|
299
|
-
const startI = failIndices[0];
|
|
300
|
-
const editFiles = {};
|
|
301
|
-
const errors = [];
|
|
302
|
-
for (let k = startI; k <= i; k++) {
|
|
303
|
-
const t = timeline[k];
|
|
304
|
-
if ((t.name === 'Edit' || t.name === 'Write') && t.filePath) {
|
|
305
|
-
const paths = Array.isArray(t.filePath) ? t.filePath : [t.filePath];
|
|
306
|
-
for (const p of paths)
|
|
307
|
-
editFiles[p] = (editFiles[p] ?? 0) + 1;
|
|
308
|
-
}
|
|
309
|
-
if (t.name === 'Bash' && t.bashResult === 'fail' && t.bashErrorMsg) {
|
|
310
|
-
errors.push(t.bashErrorMsg);
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
const errorCategories = errors.map(categorizeError).filter((c) => c !== null);
|
|
314
|
-
struggles.push({
|
|
315
|
-
startIdx: startI,
|
|
316
|
-
endIdx: i,
|
|
317
|
-
failCount: failIndices.length,
|
|
318
|
-
editFiles,
|
|
319
|
-
errors: [...new Set(errors)].slice(0, 3),
|
|
320
|
-
errorCategories: [...new Set(errorCategories)],
|
|
321
|
-
verifyCmd: verifyType,
|
|
322
|
-
});
|
|
323
|
-
}
|
|
324
|
-
else {
|
|
325
|
-
let editCount = 0, readCount = 0, k = i - 1;
|
|
326
|
-
while (k >= 0) {
|
|
327
|
-
const prev = timeline[k];
|
|
328
|
-
if (prev.name === 'Edit' || prev.name === 'Write')
|
|
329
|
-
editCount++;
|
|
330
|
-
else if (prev.name === 'Read' || prev.name === 'Grep' || prev.name === 'Find')
|
|
331
|
-
readCount++;
|
|
332
|
-
else
|
|
333
|
-
break;
|
|
334
|
-
k--;
|
|
335
|
-
}
|
|
336
|
-
if (editCount > 0) {
|
|
337
|
-
efficients.push({ startIdx: k + 1, endIdx: i, readCount, editCount });
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
return { struggles, efficients };
|
|
342
|
-
}
|
|
343
|
-
function analyzeTask(row, spans) {
|
|
344
|
-
let logs = [];
|
|
345
|
-
try {
|
|
346
|
-
const parsed = JSON.parse(row.logs ?? '[]');
|
|
347
|
-
if (Array.isArray(parsed))
|
|
348
|
-
logs = parsed;
|
|
349
|
-
}
|
|
350
|
-
catch { }
|
|
351
|
-
const toolCalls = extractToolCallsFromLogs(logs);
|
|
352
|
-
const duration = row.duration_ms != null ? Math.round(row.duration_ms / 1000) : null;
|
|
353
|
-
let metaProvider = null;
|
|
354
|
-
if (row.metadata) {
|
|
355
|
-
try {
|
|
356
|
-
metaProvider = JSON.parse(row.metadata).provider ?? null;
|
|
357
|
-
}
|
|
358
|
-
catch { }
|
|
359
|
-
}
|
|
360
|
-
const timeline = buildTimeline(toolCalls);
|
|
361
|
-
const patterns = detectPatterns(timeline);
|
|
362
|
-
const readFiles = new Set();
|
|
363
|
-
const editFiles = new Set();
|
|
364
|
-
let bashCount = 0, verifyRuns = 0;
|
|
365
|
-
for (const e of timeline) {
|
|
366
|
-
const paths = e.filePath
|
|
367
|
-
? (Array.isArray(e.filePath) ? e.filePath : [e.filePath])
|
|
368
|
-
: [];
|
|
369
|
-
if (e.name === 'Read')
|
|
370
|
-
paths.forEach((p) => readFiles.add(p));
|
|
371
|
-
else if (e.name === 'Edit' || e.name === 'Write')
|
|
372
|
-
paths.forEach((p) => editFiles.add(p));
|
|
373
|
-
else if (e.name === 'Bash') {
|
|
374
|
-
bashCount++;
|
|
375
|
-
if (e.isVerify)
|
|
376
|
-
verifyRuns++;
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
const skills = aggregateSpans(spans);
|
|
380
|
-
const hasEdits = editFiles.size > 0;
|
|
381
|
-
const hasDoc = !!(skills['crewx/doc'] && skills['crewx/doc'].count > 0);
|
|
382
|
-
const hasMemory = !!(skills['crewx/memory'] && skills['crewx/memory'].count > 0);
|
|
383
|
-
const hasTsserver = !!(skills['tsserver'] && skills['tsserver'].count > 0);
|
|
384
|
-
const hasSearch = !!(skills['crewx/search'] && skills['crewx/search'].count > 0);
|
|
385
|
-
const promptSummary = row.prompt ? row.prompt.split('\n')[0].slice(0, 120) : null;
|
|
386
|
-
const resultSummary = row.result ? row.result.split('\n')[0].slice(0, 120) : null;
|
|
387
|
-
return {
|
|
388
|
-
taskId: row.id,
|
|
389
|
-
agentId: row.agent_id,
|
|
390
|
-
metaProvider,
|
|
391
|
-
status: row.status,
|
|
392
|
-
promptSummary,
|
|
393
|
-
resultSummary,
|
|
394
|
-
duration,
|
|
395
|
-
toolCount: toolCalls.length,
|
|
396
|
-
timeline,
|
|
397
|
-
patterns,
|
|
398
|
-
behavior: {
|
|
399
|
-
readFiles: [...readFiles],
|
|
400
|
-
editFiles: [...editFiles],
|
|
401
|
-
bashCount,
|
|
402
|
-
},
|
|
403
|
-
metrics: {
|
|
404
|
-
struggles: patterns.struggles.length,
|
|
405
|
-
total_retries: patterns.struggles.reduce((s, r) => s + r.failCount, 0),
|
|
406
|
-
efficients: patterns.efficients.length,
|
|
407
|
-
verify_runs: verifyRuns,
|
|
408
|
-
},
|
|
409
|
-
skills,
|
|
410
|
-
skillInsights: { hasEdits, hasDoc, hasMemory, hasTsserver, hasSearch },
|
|
411
|
-
hasStruggles: patterns.struggles.length > 0,
|
|
412
|
-
};
|
|
413
|
-
}
|
|
414
|
-
//# sourceMappingURL=analyzer.js.map
|
|
1
|
+
"use strict";var T=exports&&exports.__createBinding||(Object.create?(function(t,e,s,r){if(r===void 0)r=s;var n=Object.getOwnPropertyDescriptor(e,s);if(!n||("get"in n?!e.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return e[s]}}}Object.defineProperty(t,r,n)}):(function(t,e,s,r){if(r===void 0)r=s;t[r]=e[s]}));var k=exports&&exports.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:true,value:e})}):function(t,e){t["default"]=e});var L=exports&&exports.__importStar||(function(){var t=function(e){t=Object.getOwnPropertyNames||function(s){var r=[];for(var n in s)if(Object.prototype.hasOwnProperty.call(s,n))r[r.length]=n;return r};return t(e)};return function(e){if(e&&e.__esModule)return e;var s={};if(e!=null){for(var r=t(e),n=0;n<r.length;n++)if(r[n]!=="default")T(s,e,r[n])}k(s,e);return s}})();Object.defineProperty(exports,"__esModule",{value:true});exports.READ_ONLY_BASH_PREFIXES=exports.READ_ONLY_TOOLS=void 0;exports.normalizeToolName=p;exports.extractToolCallsFromLogs=P;exports.analyzeTask=J;exports.isReadOnlyToolCall=S;exports.checkFileStaleness=x;exports.extractActivityLogEntries=R;exports.buildActivityLog=$;exports.summarizeAnalysis=Q;const M=L(require("fs"));const b=require("@crewx/sdk");const B=["tsc","npm test","npm run test","npm run lint","eslint","prettier","jest","vitest","biome","npx tsc"];const N=[/error/i,/failed/i,/exit code [^0]/,/cannot find/i,/does not exist/i,/FAILED/,/✗/,/ERR!/];const U=[[/Type .+ is not assignable to type/i,"Type mismatch"],[/Cannot find module/i,"Module path error"],[/Property .+ does not exist/i,"Missing property"],[/Expected \d+ arguments/i,"Argument count mismatch"],[/Cannot find name/i,"Undeclared variable/function"],[/has no exported member/i,"Missing export"],[/FAIL|AssertionError|expect\(/i,"Test failure"],[/SyntaxError|Unexpected token/i,"Syntax error"]];const z=new Set(["Read File","Edit File","Write File","Terminal","{}",""]);function p(t){if(!t)return"";const e=t.toLowerCase();if(e==="bash"||e==="terminal")return"Bash";if(e==="read"||e==="view")return"Read";if(e==="edit"||e==="apply_patch")return"Edit";if(e==="write")return"Write";if(e==="grep"||e==="rg")return"Grep";if(e==="glob"||e==="find")return"Find";return t}function w(t){const e=t.replace(/\\/g,"/").split("/").filter(Boolean);const s=e.length<=3?e:e.slice(-3);return s.join("/")}function D(t,e){const s=p(t);if(s!=="Read"&&s!=="Edit"&&s!=="Write")return null;if(!e)return null;if(z.has(e))return null;if(e.includes("*** Update File:")||e.includes("*** Add File:")){const n=[];for(const o of e.matchAll(/\*\*\*\s+(?:Update|Add)\s+File:\s*(.+)/g)){const l=o[1].trim();if(l)n.push(w(l))}return n.length?n:null}let r=e;if(/^(Read|Edit|Write|View)\s+/.test(r)){r=r.replace(/^(Read|Edit|Write|View)\s+/,"")}if(/[*?{}]/.test(r))return null;if(r.length>300)return null;if(!/\.\w+$/.test(r)&&!r.includes("/"))return null;if(r.startsWith("/")||/^[A-Za-z]:[\\/]/.test(r)){return w(r)}return r}function W(t){const e=new Set;for(const s of t){try{const r=JSON.parse(s);if(r.type)e.add(r.type)}catch{}}if(e.has("turn.started")||e.has("turn.failed")||e.has("thread.started"))return"codex";if(e.has("assistant.message_delta")||e.has("tool.execution_complete"))return"copilot";if(e.has("step_start")&&e.has("step_finish"))return"opencode";if(e.has("system")&&e.has("result"))return"claude";if(e.has("init")&&e.has("message"))return"gemini";if(e.has("result")&&e.has("assistant"))return"claude";return null}function j(t,e){const s=t?.split("/").pop();if(s&&s in b.BUILTIN_ADAPTERS)return s;return W(e)}function P(t,e){if(!Array.isArray(t))return[];const s=t;const r=s.filter(i=>i.level==="stdout"&&i.message).map(i=>i.message);const n=j(e,r);const o=[];for(const i of s){if(i.level==="info"&&i.message){o.push(...(0,b.defaultParseEvent)(i.message,i.timestamp))}else if(i.level==="stdout"&&i.message){o.push(...(0,b.parseStdoutEvent)("",i.message,n??void 0))}}if(!o.length)return[];const l=new Map;const c=[];for(const i of o){if(i.type==="tool_use"){const a={toolUseId:i.toolUseId??null,name:p(i.toolName),input:i.toolInput??null,isError:null,resultPreview:null};const u=a.toolUseId;if(u){if(l.has(u)){l.get(u).input=a.input;continue}l.set(u,a)}c.push(a)}else if(i.type==="tool_result"){const a=i;if(a.toolUseId&&l.has(a.toolUseId)){const u=l.get(a.toolUseId);u.isError=a.isError===true;u.resultPreview=a.resultPreview??null}else{for(let u=c.length-1;u>=0;u--){const d=c[u];if(d.resultPreview===null){d.isError=a.isError===true;d.resultPreview=a.resultPreview??null;break}}}}}return c}function V(t){const e=t.match(/^\[skill:([^\]]+)\]/);if(e){const s=e[1];if(s==="memory-v2")return"crewx/memory";return s}if(t.startsWith("skill:"))return t.slice(6);return t}function Y(t,e){if(!e)return null;const s=e.trim().split(/\s+/);const r={"crewx/memory":"memory","crewx/doc":"doc","crewx/skill":"skill","crewx/workflow":"workflow","tsserver":"tsserver"};if(t==="crewx/search")return null;let n=0;const o=r[t];if(o&&s[0]===o)n++;const l=s[n];if(!l||l.startsWith("-")||l.startsWith("/"))return null;return l}function G(t){const e={};for(const s of t){if(s.input&&s.input.includes("summarize-dirty"))continue;const r=V(s.name);if(!e[r])e[r]={count:0,subCmds:{}};e[r].count++;const n=Y(r,s.input??null);if(n)e[r].subCmds[n]=(e[r].subCmds[n]??0)+1}return e}function _(t){if(!t)return null;for(const e of B){if(t.includes(e))return e}return null}function H(t){if(t.isError===true)return true;if(!t.resultPreview)return false;return N.some(e=>e.test(t.resultPreview))}function A(t){if(!t)return null;for(const[e,s]of U){if(e.test(t))return s}return null}function X(t){const e={};return t.map(s=>{const r=p(s.name);const n={name:r,input:s.input,isError:s.isError,resultPreview:s.resultPreview,filePath:null,bashCmd:null,bashResult:null,bashErrorMsg:null,errorCategory:null,isVerify:false,editCount:null};if(r==="Read"||r==="Edit"||r==="Write"){n.filePath=D(s.name,s.input)}if((r==="Edit"||r==="Write")&&n.filePath){const o=Array.isArray(n.filePath)?n.filePath:[n.filePath];for(const l of o)e[l]=(e[l]??0)+1;n.editCount=e[o[0]]??null}if(r==="Bash"){n.bashCmd=s.input?s.input.split("\n")[0].slice(0,150):"";n.isVerify=!!_(n.bashCmd);const o=H(s);n.bashResult=o?"fail":"pass";if(o&&s.resultPreview){n.bashErrorMsg=s.resultPreview.trim().split("\n")[0].slice(0,100);n.errorCategory=A(s.resultPreview)}}return n})}function q(t){const e=[];const s=[];for(let r=0;r<t.length;r++){const n=t[r];if(n.name!=="Bash"||!n.isVerify||n.bashResult!=="pass")continue;const o=_(n.bashCmd);const l=[];let c=r-1;while(c>=0){const i=t[c];if(i.name==="Bash"&&i.isVerify){if(_(i.bashCmd)===o&&i.bashResult==="fail"){l.unshift(c)}else if(i.bashResult==="pass"){break}}c--}if(l.length>=1){const i=l[0];const a={};const u=[];for(let f=i;f<=r;f++){const h=t[f];if((h.name==="Edit"||h.name==="Write")&&h.filePath){const v=Array.isArray(h.filePath)?h.filePath:[h.filePath];for(const g of v)a[g]=(a[g]??0)+1}if(h.name==="Bash"&&h.bashResult==="fail"&&h.bashErrorMsg){u.push(h.bashErrorMsg)}}const d=u.map(A).filter(f=>f!==null);e.push({startIdx:i,endIdx:r,failCount:l.length,editFiles:a,errors:[...new Set(u)].slice(0,3),errorCategories:[...new Set(d)],verifyCmd:o})}else{let i=0,a=0,u=r-1;while(u>=0){const d=t[u];if(d.name==="Edit"||d.name==="Write")i++;else if(d.name==="Read"||d.name==="Grep"||d.name==="Find")a++;else break;u--}if(i>0){s.push({startIdx:u+1,endIdx:r,readCount:a,editCount:i})}}}return{struggles:e,efficients:s}}function J(t,e,s=[]){let r=null;if(t.metadata){try{r=JSON.parse(t.metadata).provider??null}catch{}}const n=P(s,r??void 0);const o=t.duration_ms!=null?Math.round(t.duration_ms/1e3):null;const l=X(n);const c=q(l);const i=new Set;const a=new Set;let u=0,d=0;for(const m of l){const y=m.filePath?Array.isArray(m.filePath)?m.filePath:[m.filePath]:[];if(m.name==="Read")y.forEach(E=>i.add(E));else if(m.name==="Edit"||m.name==="Write")y.forEach(E=>a.add(E));else if(m.name==="Bash"){u++;if(m.isVerify)d++}}const f=G(e);const h=a.size>0;const v=!!(f["crewx/doc"]&&f["crewx/doc"].count>0);const g=!!(f["crewx/memory"]&&f["crewx/memory"].count>0);const C=!!(f["tsserver"]&&f["tsserver"].count>0);const O=!!(f["crewx/search"]&&f["crewx/search"].count>0);const F=t.prompt?t.prompt.split("\n")[0].slice(0,120):null;const I=t.result?(0,b.sanitizeLegacyUiCardText)(t.result).split("\n")[0].slice(0,120):null;return{taskId:t.id,agentId:t.agent_id,metaProvider:r,status:t.status,promptSummary:F,resultSummary:I,duration:o,startedAt:t.started_at??null,completedAt:t.completed_at??null,durationMs:t.duration_ms??null,toolCount:n.length,timeline:l,patterns:c,behavior:{readFiles:[...i],editFiles:[...a],bashCount:u},metrics:{struggles:c.struggles.length,total_retries:c.struggles.reduce((m,y)=>m+y.failCount,0),efficients:c.efficients.length,verify_runs:d},skills:f,skillInsights:{hasEdits:h,hasDoc:v,hasMemory:g,hasTsserver:C,hasSearch:O},hasStruggles:c.struggles.length>0}}exports.READ_ONLY_TOOLS=new Set(["Read","Grep","Find","Glob"]);exports.READ_ONLY_BASH_PREFIXES=["git status","git log","git branch","git diff --stat","git show","git remote","git rev-parse","git ls-files","pwd","ls ","ls\n","echo ","cat ","head ","tail ","npx skill tsserver find","npx skill tsserver refs","npx skill tsserver type","crewx memory index","crewx memory find","crewx memory get","crewx doc toc","crewx doc section","crewx doc status","crewx search","crewx agent ls","crewx agent list","crewx wbs status"];const K=[/\bgit\s+(commit|push|pull|merge|rebase|reset|checkout|switch|add|rm)\b/,/\bnpm\s+(install|ci|publish|run\s+(test|lint|build))\b/,/\bnpx\s+tsc\b/,/\bpnpm\s+(install|run)\b/,/\bvitest\b/,/\bjest\b/];function S(t,e){const s=p(t);if(exports.READ_ONLY_TOOLS.has(s))return true;if(s!=="Bash")return false;if(!e)return false;const r=e.split("\n")[0].trimStart();if(K.some(n=>n.test(r)))return false;return exports.READ_ONLY_BASH_PREFIXES.some(n=>r.startsWith(n))}function x(t,e){try{const s=M.statSync(t);if(e){const r=Date.parse(e);if(!Number.isNaN(r)&&s.mtimeMs>r)return"stale"}return"ok"}catch{return"unknown"}}function Z(t,e){if(!S(t.name,t.input))return null;if(t.isError)return null;let s=null;let r="ok";if(t.name==="Read"&&t.filePath){const o=Array.isArray(t.filePath)?t.filePath[0]??null:t.filePath;s=o;if(o)r=x(o,e)}const n=t.name==="Bash"?t.bashCmd??t.input?.slice(0,150)??null:t.input?.slice(0,150)??null;return{tool:t.name,cmd:n,result:t.resultPreview??null,filePath:s,status:r}}function R(t){const e=[];for(const s of t){for(const r of s.timeline){const n=Z(r,s.completedAt);if(n)e.push(n)}}return e}function $(t,e,s,r,n){const o=R(t);const l=[];let c=0;let i=false;for(const a of o){const u=(a.result?.length??0)+(a.cmd?.length??0)+80;if(c+u>n&&l.length>0){i=true;break}l.push(a);c+=u}return{threadId:e,agentId:s,lookback:r,totalEntries:o.length,entries:l,truncated:i,budgetUsed:c}}function Q(t){const e={};for(const s of t.timeline){const r=s.name||"?";e[r]=(e[r]??0)+1}return{taskId:t.taskId,agentId:t.agentId,status:t.status,duration:t.duration,startedAt:t.startedAt,completedAt:t.completedAt,toolCount:t.toolCount,toolCounts:e,editFiles:t.behavior.editFiles,readFiles:t.behavior.readFiles,hasStruggles:t.hasStruggles,promptSummary:t.promptSummary}}
|
package/dist/src/renderer.d.ts
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
import type { TaskAnalysis, TaskSummaryRow } from './types.js';
|
|
2
|
-
export
|
|
1
|
+
import type { ActivityLog, ContinueResult, TaskAnalysis, TaskSummaryRow } from './types.js';
|
|
2
|
+
export interface RenderDetailOptions {
|
|
3
|
+
maxTimeline?: number | null;
|
|
4
|
+
}
|
|
5
|
+
export declare function renderTaskFull(r: TaskAnalysis, opts?: RenderDetailOptions): string;
|
|
3
6
|
export declare function renderThreadTaskList(rows: TaskSummaryRow[], threadId: string, recent: number): string;
|
|
4
|
-
|
|
7
|
+
export declare function renderContinue(result: ContinueResult, opts?: RenderDetailOptions): string;
|
|
8
|
+
export declare function renderActivityLogXml(log: ActivityLog): string;
|
|
9
|
+
export interface CalAction {
|
|
10
|
+
label: string;
|
|
11
|
+
cmd: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function buildCalFooter(actions: CalAction[]): string;
|
|
14
|
+
|
package/dist/src/renderer.js
CHANGED
|
@@ -1,147 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
function renderTimelineEntry(e, numWidth, num) {
|
|
6
|
-
const n = String(num).padStart(numWidth);
|
|
7
|
-
if (e.name === 'Read' || e.name === 'Grep' || e.name === 'Find') {
|
|
8
|
-
const fp = Array.isArray(e.filePath) ? e.filePath.join(', ') : (e.filePath ?? e.input?.slice(0, 50) ?? '');
|
|
9
|
-
return ` ${n}. ${e.name.padEnd(5)} ${fp}`;
|
|
10
|
-
}
|
|
11
|
-
if (e.name === 'Edit' || e.name === 'Write') {
|
|
12
|
-
const fp = Array.isArray(e.filePath) ? e.filePath.join(', ') : (e.filePath ?? '');
|
|
13
|
-
let suffix = '';
|
|
14
|
-
if (e.editCount === 2)
|
|
15
|
-
suffix = ' ← 같은 파일 재수정';
|
|
16
|
-
else if ((e.editCount ?? 0) > 2)
|
|
17
|
-
suffix = ` ← 같은 파일 ${e.editCount}번째 수정`;
|
|
18
|
-
return ` ${n}. ${e.name.padEnd(5)} ${fp}${suffix}`;
|
|
19
|
-
}
|
|
20
|
-
if (e.name === 'Bash') {
|
|
21
|
-
const cmd = e.bashCmd ?? '';
|
|
22
|
-
const display = cmd.length > 72 ? cmd.slice(0, 71) + '…' : cmd.padEnd(72);
|
|
23
|
-
if (e.bashResult === 'fail') {
|
|
24
|
-
return ` ${n}. Bash ${display} → ❌ ${(e.bashErrorMsg ?? 'failed').slice(0, 80)}`;
|
|
25
|
-
}
|
|
26
|
-
return ` ${n}. Bash ${display} → ✅ pass`;
|
|
27
|
-
}
|
|
28
|
-
const hint = e.input ? e.input.slice(0, 80) : '';
|
|
29
|
-
return ` ${n}. ${(e.name || '?').padEnd(5)} ${hint}`;
|
|
30
|
-
}
|
|
31
|
-
function renderTaskFull(r) {
|
|
32
|
-
const out = [];
|
|
33
|
-
out.push(`\n━━━ Dreaming: task ${r.taskId} ━━━`);
|
|
34
|
-
const pTag = r.metaProvider ? ` (${r.metaProvider})` : '';
|
|
35
|
-
out.push(`Agent: ${r.agentId}${pTag} | Status: ${r.status} | Duration: ${r.duration != null ? r.duration + 's' : '-'} | Tools: ${r.toolCount} calls`);
|
|
36
|
-
if (r.promptSummary)
|
|
37
|
-
out.push(`📋 지시: ${r.promptSummary}`);
|
|
38
|
-
if (r.resultSummary)
|
|
39
|
-
out.push(`📝 결론: ${r.resultSummary}`);
|
|
40
|
-
if (!r.timeline.length) {
|
|
41
|
-
out.push('\n (tool call 데이터 없음)');
|
|
42
|
-
return out.join('\n');
|
|
43
|
-
}
|
|
44
|
-
const anno = {};
|
|
45
|
-
for (const s of r.patterns.struggles) {
|
|
46
|
-
const top = Object.entries(s.editFiles).sort((a, b) => b[1] - a[1])[0];
|
|
47
|
-
const file = top ? top[0] : '(unknown)';
|
|
48
|
-
const errHint = s.errorCategories[0] ?? (s.errors[0] ? s.errors[0].slice(0, 50) : '');
|
|
49
|
-
const cause = errHint ? ` — ${errHint}` : '';
|
|
50
|
-
anno[s.endIdx] = `💡 삽질: ${file} ${s.failCount + 1}회 수정 (${s.startIdx + 1}→${s.endIdx + 1})${cause}`;
|
|
51
|
-
}
|
|
52
|
-
for (const e of r.patterns.efficients) {
|
|
53
|
-
const parts = [];
|
|
54
|
-
if (e.readCount > 0)
|
|
55
|
-
parts.push(`Read ${e.readCount}개`);
|
|
56
|
-
parts.push(`Edit ${e.editCount}개`);
|
|
57
|
-
parts.push('검증 한방 통과');
|
|
58
|
-
anno[e.endIdx] = `💡 효율: ${parts.join(' → ')}`;
|
|
59
|
-
}
|
|
60
|
-
out.push('\n[타임라인]');
|
|
61
|
-
const nw = String(r.timeline.length).length;
|
|
62
|
-
for (let i = 0; i < r.timeline.length; i++) {
|
|
63
|
-
out.push(renderTimelineEntry(r.timeline[i], nw, i + 1));
|
|
64
|
-
if (anno[i] !== undefined)
|
|
65
|
-
out.push(` ${anno[i]}`);
|
|
66
|
-
}
|
|
67
|
-
const skillEntries = Object.entries(r.skills).sort((a, b) => b[1].count - a[1].count);
|
|
68
|
-
if (skillEntries.length > 0) {
|
|
69
|
-
out.push('\n[스킬 사용]');
|
|
70
|
-
for (const [name, data] of skillEntries) {
|
|
71
|
-
const subs = Object.entries(data.subCmds).sort((a, b) => b[1] - a[1]).map(([s]) => s);
|
|
72
|
-
const subStr = subs.length > 0 ? ` (${subs.join(', ')})` : '';
|
|
73
|
-
out.push(` ${name.padEnd(16)} ${String(data.count).padStart(2)}회${subStr}`);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
out.push('\n[회고 요약]');
|
|
77
|
-
if (r.patterns.efficients.length > 0) {
|
|
78
|
-
out.push(` ✅ 효율 패턴: Read→Edit→검증 한방 통과 ${r.patterns.efficients.length}건`);
|
|
79
|
-
}
|
|
80
|
-
if (r.patterns.struggles.length > 0) {
|
|
81
|
-
const details = r.patterns.struggles.map((s) => {
|
|
82
|
-
const top = Object.entries(s.editFiles).sort((a, b) => b[1] - a[1])[0];
|
|
83
|
-
return top ? `${top[0]} ${top[1]}회` : null;
|
|
84
|
-
}).filter((x) => x !== null).join(', ');
|
|
85
|
-
out.push(` ⚠️ 삽질 패턴: 같은 파일 반복 수정 ${r.patterns.struggles.length}건 (${details})`);
|
|
86
|
-
const cats = {};
|
|
87
|
-
for (const s of r.patterns.struggles) {
|
|
88
|
-
for (const c of s.errorCategories)
|
|
89
|
-
cats[c] = (cats[c] ?? 0) + 1;
|
|
90
|
-
}
|
|
91
|
-
const topCat = Object.entries(cats).sort((a, b) => b[1] - a[1])[0];
|
|
92
|
-
if (topCat)
|
|
93
|
-
out.push(` 💡 인사이트: 에러 대부분 ${topCat[0]} (${topCat[1]}건)`);
|
|
94
|
-
}
|
|
95
|
-
if (!r.patterns.efficients.length && !r.patterns.struggles.length) {
|
|
96
|
-
out.push(' 📊 특이 패턴 없음 — 일반적인 작업 흐름');
|
|
97
|
-
}
|
|
98
|
-
const si = r.skillInsights;
|
|
99
|
-
if (si.hasEdits && !si.hasDoc) {
|
|
100
|
-
out.push(' 📚 설계서 미참조 — doc 호출 없이 Edit 시작 (설계서 먼저 확인하면 삽질 줄일 수 있음)');
|
|
101
|
-
}
|
|
102
|
-
if (!si.hasMemory) {
|
|
103
|
-
out.push(' 🧠 메모리 미확인 — 과거 기록 확인 없이 작업 (이전 결정과 충돌 가능)');
|
|
104
|
-
}
|
|
105
|
-
if (si.hasTsserver) {
|
|
106
|
-
const tsCount = r.skills['tsserver']?.count ?? 0;
|
|
107
|
-
out.push(` 🔍 코드 분석 활용 — tsserver ${tsCount}회 사용`);
|
|
108
|
-
}
|
|
109
|
-
if (si.hasSearch) {
|
|
110
|
-
const sCount = r.skills['crewx/search']?.count ?? 0;
|
|
111
|
-
out.push(` 🔎 검색 활용 — crewx/search ${sCount}회 사용`);
|
|
112
|
-
}
|
|
113
|
-
return out.join('\n');
|
|
114
|
-
}
|
|
115
|
-
function statusEmoji(status) {
|
|
116
|
-
if (status === 'success' || status === 'completed' || status === 'done')
|
|
117
|
-
return '✅';
|
|
118
|
-
if (status === 'failed')
|
|
119
|
-
return '❌';
|
|
120
|
-
if (status === 'running')
|
|
121
|
-
return '🔄';
|
|
122
|
-
return '⏸';
|
|
123
|
-
}
|
|
124
|
-
function renderThreadTaskList(rows, threadId, recent) {
|
|
125
|
-
const out = [];
|
|
126
|
-
out.push(`\n━━━ Dreaming: thread ${threadId} — 최근 ${recent}건 ━━━`);
|
|
127
|
-
out.push(`태스크 목록: ${rows.length}건`);
|
|
128
|
-
out.push('');
|
|
129
|
-
if (!rows.length) {
|
|
130
|
-
out.push(' (태스크 없음)');
|
|
131
|
-
return out.join('\n');
|
|
132
|
-
}
|
|
133
|
-
const idW = Math.max(...rows.map((r) => r.taskId.length));
|
|
134
|
-
const agentW = Math.max(...rows.map((r) => r.agentId.length));
|
|
135
|
-
for (let i = 0; i < rows.length; i++) {
|
|
136
|
-
const r = rows[i];
|
|
137
|
-
const num = String(i + 1).padStart(String(rows.length).length);
|
|
138
|
-
const icon = statusEmoji(r.status);
|
|
139
|
-
const dur = r.duration != null ? `${r.duration}s` : ' -';
|
|
140
|
-
const prompt = r.promptSummary ? r.promptSummary.slice(0, 55) : '';
|
|
141
|
-
out.push(` ${num}. ${icon} ${r.taskId.padEnd(idW)} | ${r.agentId.padEnd(agentW)} | ${r.status.padEnd(9)} | ${dur.padStart(5)} | ${prompt}`);
|
|
142
|
-
}
|
|
143
|
-
out.push('');
|
|
144
|
-
out.push(` 드릴다운: crewx dreaming --task=<id>`);
|
|
145
|
-
return out.join('\n');
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=renderer.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.renderTaskFull=b;exports.renderThreadTaskList=T;exports.renderContinue=w;exports.renderActivityLogXml=x;exports.buildCalFooter=_;const A=require("@crewx/sdk");function C(t,n=Date.now()){if(!t)return null;const s=Date.parse(t);if(Number.isNaN(s))return null;const e=Math.floor((n-s)/1e3);if(e<=0)return"just now";if(e<60)return`${e}s ago`;const a=Math.floor(e/60);if(a<60)return`${a}m ago`;const i=Math.floor(a/60);if(i<24)return`${i}h ago`;return`${Math.floor(i/24)}d ago`}function j(t){const n=[];if(t.startedAt)n.push(`started_at: ${t.startedAt}`);if(t.completedAt)n.push(`completed_at: ${t.completedAt}`);if(t.duration!=null)n.push(`duration: ${t.duration}s`);const s=C(t.completedAt??t.startedAt);if(s)n.push(`relative_time: ${s}`);return n.length?n.join(" | "):null}function E(t,n,s){const e=String(s).padStart(n);if(t.name==="Read"||t.name==="Grep"||t.name==="Find"){const i=Array.isArray(t.filePath)?t.filePath.join(", "):t.filePath??t.input?.slice(0,50)??"";return` ${e}. ${t.name.padEnd(5)} ${i}`}if(t.name==="Edit"||t.name==="Write"){const i=Array.isArray(t.filePath)?t.filePath.join(", "):t.filePath??"";let o="";if(t.editCount===2)o=" \u2190 same file edited again";else if((t.editCount??0)>2)o=` \u2190 same file ${t.editCount}th edit`;return` ${e}. ${t.name.padEnd(5)} ${i}${o}`}if(t.name==="Bash"){const i=t.bashCmd??"";const o=i.length>72?i.slice(0,71)+"\u2026":i.padEnd(72);if(t.bashResult==="fail"){return` ${e}. Bash ${o} \u2192 \u274C ${(t.bashErrorMsg??"failed").slice(0,80)}`}return` ${e}. Bash ${o} \u2192 \u2705 pass`}const a=t.input?t.input.slice(0,80):"";return` ${e}. ${(t.name||"?").padEnd(5)} ${a}`}function I(t,n){if(n==null||n<=0||t<=n){return{indices:Array.from({length:t},(i,o)=>o),omittedAt:null,omittedCount:0}}const s=Math.ceil(n/2);const e=Math.floor(n/2);const a=[];for(let i=0;i<s;i++)a.push(i);for(let i=t-e;i<t;i++)a.push(i);return{indices:a,omittedAt:t-e,omittedCount:t-s-e}}function b(t,n){const s=n?.maxTimeline??null;const e=[];e.push(`
|
|
2
|
+
\u2501\u2501\u2501 Dreaming: task ${t.taskId} \u2501\u2501\u2501`);const a=t.metaProvider?` (${t.metaProvider})`:"";e.push(`Agent: ${t.agentId}${a} | Status: ${t.status} | Duration: ${t.duration!=null?t.duration+"s":"-"} | Tools: ${t.toolCount} calls`);const i=j(t);if(i)e.push(i);if(t.promptSummary)e.push(`\u{1F4CB} Instruction: ${t.promptSummary}`);if(t.resultSummary)e.push(`\u{1F4DD} Result: ${(0,A.sanitizeLegacyUiCardText)(t.resultSummary)}`);if(!t.timeline.length){e.push("\n (No task activity recorded - logs may have been cleaned up or no tool calls were captured)");return e.join("\n")}const o={};for(const r of t.patterns.struggles){const u=Object.entries(r.editFiles).sort((g,S)=>S[1]-g[1])[0];const p=u?u[0]:"(unknown)";const d=r.errorCategories[0]??(r.errors[0]?r.errors[0].slice(0,50):"");const l=d?` \u2014 ${d}`:"";o[r.endIdx]=`\u{1F4A1} Struggle: ${p} ${r.failCount+1} edits (${r.startIdx+1}\u2192${r.endIdx+1})${l}`}for(const r of t.patterns.efficients){const u=[];if(r.readCount>0)u.push(`Read ${r.readCount} items`);u.push(`Edit ${r.editCount} items`);u.push("verification passed on first try");o[r.endIdx]=`\u{1F4A1} Efficiency: ${u.join(" \u2192 ")}`}e.push("\n[Timeline]");const c=String(t.timeline.length).length;const{indices:f,omittedAt:m,omittedCount:h}=I(t.timeline.length,s);for(const r of f){if(r===m&&h>0){e.push(` ... ${h} omitted (view all: --full) ...`)}e.push(E(t.timeline[r],c,r+1));if(o[r]!==void 0)e.push(` ${o[r]}`)}const k=Object.entries(t.skills).sort((r,u)=>u[1].count-r[1].count);if(k.length>0){e.push("\n[Skill Usage]");for(const[r,u]of k){const p=Object.entries(u.subCmds).sort((l,g)=>g[1]-l[1]).map(([l])=>l);const d=p.length>0?` (${p.join(", ")})`:"";e.push(` ${r.padEnd(16)} ${String(u.count).padStart(2)} calls${d}`)}}e.push("\n[Reflection Summary]");if(t.patterns.efficients.length>0){e.push(` \u2705 Efficient patterns: Read\u2192Edit\u2192verification passed on first try ${t.patterns.efficients.length} items`)}if(t.patterns.struggles.length>0){const r=t.patterns.struggles.map(d=>{const l=Object.entries(d.editFiles).sort((g,S)=>S[1]-g[1])[0];return l?`${l[0]} ${l[1]} edits`:null}).filter(d=>d!==null).join(", ");e.push(` \u26A0\uFE0F Struggle pattern: repeated edits to the same file ${t.patterns.struggles.length} items (${r})`);const u={};for(const d of t.patterns.struggles){for(const l of d.errorCategories)u[l]=(u[l]??0)+1}const p=Object.entries(u).sort((d,l)=>l[1]-d[1])[0];if(p)e.push(` \u{1F4A1} Insight: most errors are ${p[0]} (${p[1]} items)`)}if(!t.patterns.efficients.length&&!t.patterns.struggles.length){e.push(" \u{1F4CA} No unusual patterns; typical work flow")}const $=t.skillInsights;if($.hasEdits&&!$.hasDoc){e.push(" \u{1F4DA} Design doc not referenced; editing began without doc calls")}if(!$.hasMemory){e.push(" \u{1F9E0} Memory not checked; prior decisions may have been missed")}if($.hasTsserver){const r=t.skills["tsserver"]?.count??0;e.push(` \u{1F50D} Code analysis used: tsserver ${r} calls`)}if($.hasSearch){const r=t.skills["crewx/search"]?.count??0;e.push(` \u{1F50E} Search used: crewx/search ${r} calls`)}return e.join("\n")}function v(t){if(t==="success"||t==="completed"||t==="done")return"\u2705";if(t==="failed")return"\u274C";if(t==="running")return"\u{1F504}";return"\u23F8"}function T(t,n,s){const e=[];e.push(`
|
|
3
|
+
\u2501\u2501\u2501 Dreaming: thread ${n} \u2014 last ${s} items \u2501\u2501\u2501`);e.push(`Task list: ${t.length} items`);e.push("");if(!t.length){e.push(" (No tasks)");return e.join("\n")}const a=Math.max(...t.map(o=>o.taskId.length));const i=Math.max(...t.map(o=>o.agentId.length));for(let o=0;o<t.length;o++){const c=t[o];const f=String(o+1).padStart(String(t.length).length);const m=v(c.status);const h=c.duration!=null?`${c.duration}s`:" -";const k=c.promptSummary?c.promptSummary.slice(0,55):"";e.push(` ${f}. ${m} ${c.taskId.padEnd(a)} | ${c.agentId.padEnd(i)} | ${c.status.padEnd(9)} | ${h.padStart(5)} | ${k}`)}e.push("");e.push(` Drilldown: crewx dreaming --task=<id>`);return e.join("\n")}function M(t){const n=v(t.status);const s=["Bash","Read","Edit","Write","Grep","Find"];const e=new Set(s);const a=[...s.filter(h=>t.toolCounts[h]),...Object.keys(t.toolCounts).filter(h=>!e.has(h))];const i=a.length?a.map(h=>`${h} ${t.toolCounts[h]} calls`).join(", "):"no tool calls";const o=t.duration!=null?` | ${t.duration}s`:"";const c=C(t.completedAt??t.startedAt);const f=c?` | ${c}`:"";const m=t.hasStruggles?" | \u26A0\uFE0F struggle":"";return` - ${t.taskId} | ${n} ${t.status}${o}${f} | ${i}${m}`}function w(t,n){const s=[];s.push(`
|
|
4
|
+
\u2501\u2501\u2501 Continue previous work \u2501\u2501\u2501`);s.push(`Thread: ${t.thread} | Agent: ${t.agent}`);if(!t.latest){s.push("\n (No previous work - no completed task for this agent was found in this thread)");return s.join("\n")}s.push("\n[Latest Task]");s.push(b(t.latest,n));if(t.previous.length>0){s.push("\n[Previous Task Summary]");for(const e of t.previous){s.push(M(e))}}return s.join("\n")}function y(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function x(t){if(t.lookback===0)return"";if(!t.entries.length&&t.totalEntries===0)return"";const n=[];n.push(`<activity_log thread_id="${y(t.threadId)}" agent_id="${y(t.agentId)}" lookback="${t.lookback}">`);if(!t.entries.length){n.push(" <!-- no reusable read-only results found in previous tasks -->")}else{n.push(" <!-- read-only results from previous tasks \u2014 use these; do not re-run unless marked stale -->");for(const s of t.entries){const e=`tool="${y(s.tool)}"`;const a=s.cmd?` cmd="${y(s.cmd)}"`:"";const i=s.status==="stale"?' reused="stale"':' reused="ok"';if(s.status==="stale"){n.push(` <entry ${e}${a}${i}>\u26A0\uFE0F changed since \u2014 re-read</entry>`)}else if(s.result){n.push(` <entry ${e}${a}${i}>`);n.push(y(s.result));n.push(` </entry>`)}else{n.push(` <entry ${e}${a}${i} />`)}}if(t.truncated){const s=t.totalEntries-t.entries.length;n.push(` <!-- ${s} more entries omitted \u2014 token budget reached (${t.budgetUsed} chars used) -->`)}}n.push("</activity_log>");return n.join("\n")}function _(t){if(!t.length)return"";const n=[];n.push("\n\u2501\u2501\u2501 Next Actions \u2501\u2501\u2501");for(const s of t){n.push(`${s.label}:`);n.push(` ${s.cmd}`)}return n.join("\n")}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.DEFAULT_MAX_STRING=exports.MASK=void 0;exports.scrubSecrets=t;exports.MASK="***REDACTED***";exports.DEFAULT_MAX_STRING=4e3;const S=[{re:/(authorization)(\s*[:=]\s*)[^\r\n]+/gi,replace:`$1$2${exports.MASK}`},{re:/(set-cookie|cookie)(\s*[:=]\s*)[^\r\n]+/gi,replace:`$1$2${exports.MASK}`},{re:/(bearer\s+)[A-Za-z0-9._\-]+/gi,replace:`$1${exports.MASK}`},{re:/-----BEGIN [^-]*PRIVATE KEY-----[\s\S]*?-----END [^-]*PRIVATE KEY-----/gi,replace:`-----BEGIN PRIVATE KEY----- ${exports.MASK} -----END PRIVATE KEY-----`},{re:/\b(?:sk|pk|rk)-[A-Za-z0-9]{16,}\b/g,replace:exports.MASK},{re:/\bgh[pousr]_[A-Za-z0-9]{16,}\b/g,replace:exports.MASK},{re:/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g,replace:exports.MASK},{re:/\bAKIA[0-9A-Z]{16}\b/g,replace:exports.MASK},{re:/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{4,}\b/g,replace:exports.MASK}];const s={re:/\b([A-Za-z0-9_]*(?:TOKEN|SECRET|PASSWORD|PASSWD|API[_-]?KEY|ACCESS[_-]?KEY|PRIVATE[_-]?KEY|SESSION[_-]?ID|AUTH)[A-Za-z0-9_]*)(\s*[:=]\s*)(["']?)([^\s"']+)\3/gi,replace:`$1$2$3${exports.MASK}$3`};function E(r){let e=r;for(const{re:A,replace:c}of S)e=e.replace(A,c);e=e.replace(s.re,s.replace);return e}function n(r,e){const A=E(r);if(e>0&&A.length>e){return A.slice(0,e)+`\u2026[truncated ${A.length-e} chars]`}return A}function t(r,e=exports.DEFAULT_MAX_STRING){if(typeof r==="string"){return n(r,e)}if(Array.isArray(r)){return r.map(A=>t(A,e))}if(r&&typeof r==="object"){const A={};for(const[c,o]of Object.entries(r)){A[c]=t(o,e)}return A}return r}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -34,6 +34,9 @@ export interface TaskAnalysis {
|
|
|
34
34
|
promptSummary: string | null;
|
|
35
35
|
resultSummary: string | null;
|
|
36
36
|
duration: number | null;
|
|
37
|
+
startedAt: string | null;
|
|
38
|
+
completedAt: string | null;
|
|
39
|
+
durationMs: number | null;
|
|
37
40
|
toolCount: number;
|
|
38
41
|
timeline: TimelineEntry[];
|
|
39
42
|
patterns: {
|
|
@@ -72,6 +75,43 @@ export interface TaskSummaryRow {
|
|
|
72
75
|
startedAt: string | null;
|
|
73
76
|
duration: number | null;
|
|
74
77
|
}
|
|
78
|
+
export interface TaskActivitySummary {
|
|
79
|
+
taskId: string;
|
|
80
|
+
agentId: string;
|
|
81
|
+
status: string;
|
|
82
|
+
duration: number | null;
|
|
83
|
+
startedAt: string | null;
|
|
84
|
+
completedAt: string | null;
|
|
85
|
+
toolCount: number;
|
|
86
|
+
toolCounts: Record<string, number>;
|
|
87
|
+
editFiles: string[];
|
|
88
|
+
readFiles: string[];
|
|
89
|
+
hasStruggles: boolean;
|
|
90
|
+
promptSummary: string | null;
|
|
91
|
+
}
|
|
92
|
+
export interface ContinueResult {
|
|
93
|
+
mode: 'continue';
|
|
94
|
+
thread: string;
|
|
95
|
+
agent: string;
|
|
96
|
+
latest: TaskAnalysis | null;
|
|
97
|
+
previous: TaskActivitySummary[];
|
|
98
|
+
}
|
|
99
|
+
export interface ActivityLogEntry {
|
|
100
|
+
tool: string;
|
|
101
|
+
cmd: string | null;
|
|
102
|
+
result: string | null;
|
|
103
|
+
filePath: string | null;
|
|
104
|
+
status: 'ok' | 'stale' | 'unknown';
|
|
105
|
+
}
|
|
106
|
+
export interface ActivityLog {
|
|
107
|
+
threadId: string;
|
|
108
|
+
agentId: string;
|
|
109
|
+
lookback: number;
|
|
110
|
+
totalEntries: number;
|
|
111
|
+
entries: ActivityLogEntry[];
|
|
112
|
+
truncated: boolean;
|
|
113
|
+
budgetUsed: number;
|
|
114
|
+
}
|
|
75
115
|
export interface DreamingFlags {
|
|
76
116
|
task: string | null;
|
|
77
117
|
thread: string | null;
|
|
@@ -80,5 +120,9 @@ export interface DreamingFlags {
|
|
|
80
120
|
recent: number | null;
|
|
81
121
|
json: boolean;
|
|
82
122
|
all: boolean;
|
|
123
|
+
continue: boolean;
|
|
124
|
+
full: boolean;
|
|
125
|
+
lookback: number;
|
|
126
|
+
activityLog: boolean;
|
|
83
127
|
}
|
|
84
|
-
|
|
128
|
+
|
package/dist/src/types.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crewx/dreaming",
|
|
3
|
-
"version": "0.1.0-rc.
|
|
3
|
+
"version": "0.1.0-rc.200",
|
|
4
4
|
"description": "Dreaming — mandatory retrospection skill for CrewX agents (task/thread review)",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "dist/cli.js",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
],
|
|
32
32
|
"license": "MIT",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@crewx/sdk": "0.
|
|
35
|
-
"@crewx/shared": "0.0.
|
|
34
|
+
"@crewx/sdk": "0.9.0-rc.174",
|
|
35
|
+
"@crewx/shared": "0.0.6-rc.89"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@types/node": "^20.0.0",
|
package/dist/cli.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";AAoEA,wBAAsB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkE9D"}
|
package/dist/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/analyzer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAIV,YAAY,EACb,MAAM,YAAY,CAAC;AA6BpB,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAUzE;AAyDD,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CA6DvE;AAoLD,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,YAAY,CAmExE"}
|
package/dist/src/analyzer.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAiB,MAAM,YAAY,CAAC;AA+B9E,wBAAgB,cAAc,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAwFtD;AAWD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA0BrG"}
|
package/dist/src/renderer.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/renderer.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|