autodev-cli 1.4.131 → 1.4.133
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/LICENSE.md +21 -0
- package/media/profile/00b-self-verifiable-work.md +62 -0
- package/media/profile/00c-verifiable-threads.md +78 -0
- package/media/profile/00d-turn-end-retrospective.md +61 -0
- package/media/profile/00e-long-horizon-planning.md +83 -0
- package/out/commands/office.js +4 -0
- package/out/commands/office.js.map +1 -1
- package/out/commands/start.js +1 -1
- package/out/commands/start.js.map +1 -1
- package/out/core/claudeUsage.d.ts +1 -26
- package/out/core/claudeUsage.js +15 -91
- package/out/core/claudeUsage.js.map +1 -1
- package/out/core/modelInfo.d.ts +1 -28
- package/out/core/modelInfo.js +15 -94
- package/out/core/modelInfo.js.map +1 -1
- package/out/core/provider/BaseProvider.d.ts +1 -14
- package/out/core/provider/BaseProvider.js +15 -22
- package/out/core/provider/BaseProvider.js.map +1 -1
- package/out/core/provider/ProviderRegistry.d.ts +1 -12
- package/out/core/provider/ProviderRegistry.js +15 -38
- package/out/core/provider/ProviderRegistry.js.map +1 -1
- package/out/core/provider/contract.d.ts +1 -62
- package/out/core/provider/contract.js +15 -6
- package/out/core/provider/contract.js.map +1 -1
- package/out/core/provider/implementations.d.ts +1 -65
- package/out/core/provider/implementations.js +4 -169
- package/out/core/provider/implementations.js.map +1 -1
- package/out/dispatcher.js +7 -0
- package/out/dispatcher.js.map +1 -1
- package/out/hookEventNormalizer.d.ts +1 -33
- package/out/hookEventNormalizer.js +15 -424
- package/out/hookEventNormalizer.js.map +1 -1
- package/out/profileBuilder.js +32 -0
- package/out/profileBuilder.js.map +1 -1
- package/out/providers/base/BaseProvider.d.ts +14 -0
- package/out/providers/base/BaseProvider.js +25 -0
- package/out/providers/base/BaseProvider.js.map +1 -0
- package/out/providers/base/ProviderEvents.d.ts +12 -0
- package/out/providers/base/ProviderEvents.js +81 -0
- package/out/providers/base/ProviderEvents.js.map +1 -0
- package/out/providers/base/ProviderManager.d.ts +25 -0
- package/out/providers/base/ProviderManager.js +22 -0
- package/out/providers/base/ProviderManager.js.map +1 -0
- package/out/providers/base/ProviderModels.d.ts +28 -0
- package/out/providers/base/ProviderModels.js +89 -0
- package/out/providers/base/ProviderModels.js.map +1 -0
- package/out/providers/base/ProviderNormalizer.d.ts +42 -0
- package/out/providers/base/ProviderNormalizer.js +439 -0
- package/out/providers/base/ProviderNormalizer.js.map +1 -0
- package/out/providers/base/ProviderRegistry.d.ts +12 -0
- package/out/providers/base/ProviderRegistry.js +42 -0
- package/out/providers/base/ProviderRegistry.js.map +1 -0
- package/out/providers/base/ProviderSessions.d.ts +15 -0
- package/out/providers/base/ProviderSessions.js +15 -0
- package/out/providers/base/ProviderSessions.js.map +1 -0
- package/out/providers/base/ProviderState.d.ts +9 -0
- package/out/providers/base/ProviderState.js +16 -0
- package/out/providers/base/ProviderState.js.map +1 -0
- package/out/providers/base/ProviderUsage.d.ts +12 -0
- package/out/providers/base/ProviderUsage.js +33 -0
- package/out/providers/base/ProviderUsage.js.map +1 -0
- package/out/providers/base/contract.d.ts +62 -0
- package/out/providers/base/contract.js +9 -0
- package/out/providers/base/contract.js.map +1 -0
- package/out/providers/base/factories.d.ts +64 -0
- package/out/providers/base/factories.js +265 -0
- package/out/providers/base/factories.js.map +1 -0
- package/out/providers/base/implementations.d.ts +5 -0
- package/out/providers/base/implementations.js +23 -0
- package/out/providers/base/implementations.js.map +1 -0
- package/out/providers/base/index.d.ts +13 -0
- package/out/providers/base/index.js +29 -0
- package/out/providers/base/index.js.map +1 -0
- package/out/providers/base/types.d.ts +30 -0
- package/out/providers/base/types.js +8 -0
- package/out/providers/base/types.js.map +1 -0
- package/out/providers/claude/ProviderEvents.d.ts +5 -0
- package/out/providers/claude/ProviderEvents.js +18 -0
- package/out/providers/claude/ProviderEvents.js.map +1 -0
- package/out/providers/claude/ProviderManager.d.ts +39 -0
- package/out/providers/claude/ProviderManager.js +50 -0
- package/out/providers/claude/ProviderManager.js.map +1 -0
- package/out/providers/claude/ProviderModels.d.ts +8 -0
- package/out/providers/claude/ProviderModels.js +23 -0
- package/out/providers/claude/ProviderModels.js.map +1 -0
- package/out/providers/claude/ProviderNormalizer.d.ts +5 -0
- package/out/providers/claude/ProviderNormalizer.js +10 -0
- package/out/providers/claude/ProviderNormalizer.js.map +1 -0
- package/out/providers/claude/ProviderSessions.d.ts +14 -0
- package/out/providers/claude/ProviderSessions.js +35 -0
- package/out/providers/claude/ProviderSessions.js.map +1 -0
- package/out/providers/claude/ProviderState.d.ts +13 -0
- package/out/providers/claude/ProviderState.js +19 -0
- package/out/providers/claude/ProviderState.js.map +1 -0
- package/out/providers/claude/ProviderUsage.d.ts +13 -0
- package/out/providers/claude/ProviderUsage.js +59 -0
- package/out/providers/claude/ProviderUsage.js.map +1 -0
- package/out/providers/claude/cli.d.ts +95 -0
- package/out/providers/claude/cli.js +674 -0
- package/out/providers/claude/cli.js.map +1 -0
- package/out/providers/claude/index.d.ts +9 -0
- package/out/providers/claude/index.js +26 -0
- package/out/providers/claude/index.js.map +1 -0
- package/out/providers/claude/tui.d.ts +38 -0
- package/out/providers/claude/tui.js +346 -0
- package/out/providers/claude/tui.js.map +1 -0
- package/out/providers/claudeCliProvider.d.ts +1 -95
- package/out/providers/claudeCliProvider.js +4 -660
- package/out/providers/claudeCliProvider.js.map +1 -1
- package/out/providers/claudeTuiProvider.d.ts +1 -38
- package/out/providers/claudeTuiProvider.js +4 -332
- package/out/providers/claudeTuiProvider.js.map +1 -1
- package/out/providers/copilot/ProviderEvents.d.ts +6 -0
- package/out/providers/copilot/ProviderEvents.js +18 -0
- package/out/providers/copilot/ProviderEvents.js.map +1 -0
- package/out/providers/copilot/ProviderManager.d.ts +39 -0
- package/out/providers/copilot/ProviderManager.js +98 -0
- package/out/providers/copilot/ProviderManager.js.map +1 -0
- package/out/providers/copilot/ProviderModels.d.ts +7 -0
- package/out/providers/copilot/ProviderModels.js +18 -0
- package/out/providers/copilot/ProviderModels.js.map +1 -0
- package/out/providers/copilot/ProviderNormalizer.d.ts +5 -0
- package/out/providers/copilot/ProviderNormalizer.js +10 -0
- package/out/providers/copilot/ProviderNormalizer.js.map +1 -0
- package/out/providers/copilot/ProviderSessions.d.ts +12 -0
- package/out/providers/copilot/ProviderSessions.js +39 -0
- package/out/providers/copilot/ProviderSessions.js.map +1 -0
- package/out/providers/copilot/ProviderState.d.ts +11 -0
- package/out/providers/copilot/ProviderState.js +17 -0
- package/out/providers/copilot/ProviderState.js.map +1 -0
- package/out/providers/copilot/ProviderUsage.d.ts +12 -0
- package/out/providers/copilot/ProviderUsage.js +41 -0
- package/out/providers/copilot/ProviderUsage.js.map +1 -0
- package/out/providers/copilot/cli.d.ts +16 -0
- package/out/providers/copilot/cli.js +52 -0
- package/out/providers/copilot/cli.js.map +1 -0
- package/out/providers/copilot/index.d.ts +10 -0
- package/out/providers/copilot/index.js +27 -0
- package/out/providers/copilot/index.js.map +1 -0
- package/out/providers/copilot/sdk.d.ts +22 -0
- package/out/providers/copilot/sdk.js +489 -0
- package/out/providers/copilot/sdk.js.map +1 -0
- package/out/providers/copilot/sessions.d.ts +25 -0
- package/out/providers/copilot/sessions.js +214 -0
- package/out/providers/copilot/sessions.js.map +1 -0
- package/out/providers/copilotCliProvider.d.ts +1 -16
- package/out/providers/copilotCliProvider.js +15 -49
- package/out/providers/copilotCliProvider.js.map +1 -1
- package/out/providers/copilotSdkProvider.d.ts +1 -22
- package/out/providers/copilotSdkProvider.js +4 -475
- package/out/providers/copilotSdkProvider.js.map +1 -1
- package/out/providers/copilotSessions.d.ts +1 -25
- package/out/providers/copilotSessions.js +4 -200
- package/out/providers/copilotSessions.js.map +1 -1
- package/out/providers/dummy/ProviderEvents.d.ts +5 -0
- package/out/providers/dummy/ProviderEvents.js +16 -0
- package/out/providers/dummy/ProviderEvents.js.map +1 -0
- package/out/providers/dummy/ProviderManager.d.ts +31 -0
- package/out/providers/dummy/ProviderManager.js +115 -0
- package/out/providers/dummy/ProviderManager.js.map +1 -0
- package/out/providers/dummy/ProviderModels.d.ts +7 -0
- package/out/providers/dummy/ProviderModels.js +15 -0
- package/out/providers/dummy/ProviderModels.js.map +1 -0
- package/out/providers/dummy/ProviderNormalizer.d.ts +4 -0
- package/out/providers/dummy/ProviderNormalizer.js +9 -0
- package/out/providers/dummy/ProviderNormalizer.js.map +1 -0
- package/out/providers/dummy/ProviderSessions.d.ts +12 -0
- package/out/providers/dummy/ProviderSessions.js +105 -0
- package/out/providers/dummy/ProviderSessions.js.map +1 -0
- package/out/providers/dummy/ProviderState.d.ts +12 -0
- package/out/providers/dummy/ProviderState.js +23 -0
- package/out/providers/dummy/ProviderState.js.map +1 -0
- package/out/providers/dummy/ProviderUsage.d.ts +9 -0
- package/out/providers/dummy/ProviderUsage.js +27 -0
- package/out/providers/dummy/ProviderUsage.js.map +1 -0
- package/out/providers/dummy/commands.d.ts +9 -0
- package/out/providers/dummy/commands.js +48 -0
- package/out/providers/dummy/commands.js.map +1 -0
- package/out/providers/dummy/index.d.ts +10 -0
- package/out/providers/dummy/index.js +27 -0
- package/out/providers/dummy/index.js.map +1 -0
- package/out/providers/dummy/office.d.ts +23 -0
- package/out/providers/dummy/office.js +66 -0
- package/out/providers/dummy/office.js.map +1 -0
- package/out/providers/dummy/traces.d.ts +8 -0
- package/out/providers/dummy/traces.js +174 -0
- package/out/providers/dummy/traces.js.map +1 -0
- package/out/providers/grok/ProviderEvents.d.ts +6 -0
- package/out/providers/grok/ProviderEvents.js +17 -0
- package/out/providers/grok/ProviderEvents.js.map +1 -0
- package/out/providers/grok/ProviderManager.d.ts +42 -0
- package/out/providers/grok/ProviderManager.js +48 -0
- package/out/providers/grok/ProviderManager.js.map +1 -0
- package/out/providers/grok/ProviderModels.d.ts +7 -0
- package/out/providers/grok/ProviderModels.js +16 -0
- package/out/providers/grok/ProviderModels.js.map +1 -0
- package/out/providers/grok/ProviderNormalizer.d.ts +5 -0
- package/out/providers/grok/ProviderNormalizer.js +10 -0
- package/out/providers/grok/ProviderNormalizer.js.map +1 -0
- package/out/providers/grok/ProviderSessions.d.ts +12 -0
- package/out/providers/grok/ProviderSessions.js +27 -0
- package/out/providers/grok/ProviderSessions.js.map +1 -0
- package/out/providers/grok/ProviderState.d.ts +10 -0
- package/out/providers/grok/ProviderState.js +15 -0
- package/out/providers/grok/ProviderState.js.map +1 -0
- package/out/providers/grok/ProviderUsage.d.ts +7 -0
- package/out/providers/grok/ProviderUsage.js +20 -0
- package/out/providers/grok/ProviderUsage.js.map +1 -0
- package/out/providers/grok/index.d.ts +9 -0
- package/out/providers/grok/index.js +26 -0
- package/out/providers/grok/index.js.map +1 -0
- package/out/providers/grok/sessions.d.ts +27 -0
- package/out/providers/grok/sessions.js +246 -0
- package/out/providers/grok/sessions.js.map +1 -0
- package/out/providers/grok/tui.d.ts +38 -0
- package/out/providers/grok/tui.js +1630 -0
- package/out/providers/grok/tui.js.map +1 -0
- package/out/providers/grokSessions.d.ts +1 -27
- package/out/providers/grokSessions.js +4 -232
- package/out/providers/grokSessions.js.map +1 -1
- package/out/providers/grokTuiProvider.d.ts +1 -38
- package/out/providers/grokTuiProvider.js +4 -1616
- package/out/providers/grokTuiProvider.js.map +1 -1
- package/out/providers/opencode/ProviderEvents.d.ts +6 -0
- package/out/providers/opencode/ProviderEvents.js +18 -0
- package/out/providers/opencode/ProviderEvents.js.map +1 -0
- package/out/providers/opencode/ProviderManager.d.ts +39 -0
- package/out/providers/opencode/ProviderManager.js +90 -0
- package/out/providers/opencode/ProviderManager.js.map +1 -0
- package/out/providers/opencode/ProviderModels.d.ts +7 -0
- package/out/providers/opencode/ProviderModels.js +17 -0
- package/out/providers/opencode/ProviderModels.js.map +1 -0
- package/out/providers/opencode/ProviderNormalizer.d.ts +5 -0
- package/out/providers/opencode/ProviderNormalizer.js +10 -0
- package/out/providers/opencode/ProviderNormalizer.js.map +1 -0
- package/out/providers/opencode/ProviderSessions.d.ts +11 -0
- package/out/providers/opencode/ProviderSessions.js +28 -0
- package/out/providers/opencode/ProviderSessions.js.map +1 -0
- package/out/providers/opencode/ProviderState.d.ts +14 -0
- package/out/providers/opencode/ProviderState.js +20 -0
- package/out/providers/opencode/ProviderState.js.map +1 -0
- package/out/providers/opencode/ProviderUsage.d.ts +7 -0
- package/out/providers/opencode/ProviderUsage.js +20 -0
- package/out/providers/opencode/ProviderUsage.js.map +1 -0
- package/out/providers/opencode/cli.d.ts +29 -0
- package/out/providers/opencode/cli.js +199 -0
- package/out/providers/opencode/cli.js.map +1 -0
- package/out/providers/opencode/index.d.ts +9 -0
- package/out/providers/opencode/index.js +26 -0
- package/out/providers/opencode/index.js.map +1 -0
- package/out/providers/opencode/sdk.d.ts +32 -0
- package/out/providers/opencode/sdk.js +610 -0
- package/out/providers/opencode/sdk.js.map +1 -0
- package/out/providers/opencodeCliProvider.d.ts +1 -29
- package/out/providers/opencodeCliProvider.js +15 -196
- package/out/providers/opencodeCliProvider.js.map +1 -1
- package/out/providers/opencodeSdkProvider.d.ts +1 -32
- package/out/providers/opencodeSdkProvider.js +4 -596
- package/out/providers/opencodeSdkProvider.js.map +1 -1
- package/out/providers.d.ts +1 -1
- package/out/providers.js +5 -0
- package/out/providers.js.map +1 -1
- package/out/sdk/index.js +5 -0
- package/out/sdk/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"implementations.js","sourceRoot":"","sources":["../../../src/core/provider/implementations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"implementations.js","sourceRoot":"","sources":["../../../src/core/provider/implementations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uEAAqD"}
|
package/out/dispatcher.js
CHANGED
|
@@ -219,5 +219,12 @@ showOutput) {
|
|
|
219
219
|
}
|
|
220
220
|
return;
|
|
221
221
|
}
|
|
222
|
+
else {
|
|
223
|
+
// Defensive fail-loud gate (matches providerRegistry.get()'s throw-on-unknown
|
|
224
|
+
// style). Today all providers set isCli:true so this is unreachable; a future
|
|
225
|
+
// isCli:false provider would otherwise silently return with no output and no
|
|
226
|
+
// error. Surface it loudly instead of a silent no-op.
|
|
227
|
+
throw new Error(`Provider '${providerId}' has isCli=false but no dispatch path is implemented`);
|
|
228
|
+
}
|
|
222
229
|
}
|
|
223
230
|
//# sourceMappingURL=dispatcher.js.map
|
package/out/dispatcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0EA,
|
|
1
|
+
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
hook_event_name: string;
|
|
3
|
-
event_type?: string;
|
|
4
|
-
provider: string;
|
|
5
|
-
tool_name?: string;
|
|
6
|
-
tool_input?: unknown;
|
|
7
|
-
tool_output?: {
|
|
8
|
-
text: string;
|
|
9
|
-
} | null;
|
|
10
|
-
success?: boolean;
|
|
11
|
-
session_id?: string | null;
|
|
12
|
-
message?: string | null;
|
|
13
|
-
timestamp: string;
|
|
14
|
-
[key: string]: unknown;
|
|
15
|
-
}
|
|
16
|
-
/** Canonical event_type for a hook_event_name (falls back to snake_case-ing the name). */
|
|
17
|
-
export declare function eventTypeFor(hookEventName: string): string;
|
|
18
|
-
export declare function normalizeEvent(provider: string, raw: Record<string, unknown>): HookEvent | null;
|
|
19
|
-
/**
|
|
20
|
-
* Append a normalized event to a JSONL sink file.
|
|
21
|
-
* Creates the directory if it doesn't exist.
|
|
22
|
-
* Silently ignores write errors (non-critical path).
|
|
23
|
-
*/
|
|
24
|
-
export declare function appendHookEvent(jsonlPath: string, provider: string, raw: Record<string, unknown>, fs: {
|
|
25
|
-
mkdirSync: (p: string, opts: {
|
|
26
|
-
recursive: boolean;
|
|
27
|
-
}) => void;
|
|
28
|
-
appendFileSync: (p: string, d: string, opts: BufferEncoding | {
|
|
29
|
-
encoding: BufferEncoding;
|
|
30
|
-
}) => void;
|
|
31
|
-
}, path: {
|
|
32
|
-
dirname: (p: string) => string;
|
|
33
|
-
}, onError?: (err: unknown) => void): void;
|
|
1
|
+
export * from './providers/base/ProviderNormalizer';
|
|
@@ -1,427 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
// timestamp — ISO-8601 (added here) (required)
|
|
16
|
-
//
|
|
17
|
-
// Usage:
|
|
18
|
-
// import { normalizeEvent } from './hookEventNormalizer';
|
|
19
|
-
// const hookEv = normalizeEvent('copilot-sdk', rawSdkEvent);
|
|
20
|
-
// if (hookEv) fs.appendFileSync(jsonlPath, JSON.stringify(hookEv) + '\n');
|
|
21
|
-
// ---------------------------------------------------------------------------
|
|
22
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.eventTypeFor = eventTypeFor;
|
|
24
|
-
exports.normalizeEvent = normalizeEvent;
|
|
25
|
-
exports.appendHookEvent = appendHookEvent;
|
|
26
|
-
// ---------------------------------------------------------------------------
|
|
27
|
-
// Helpers
|
|
28
|
-
// ---------------------------------------------------------------------------
|
|
29
|
-
function safeStr(v) {
|
|
30
|
-
if (v == null) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
if (typeof v === 'string') {
|
|
34
|
-
return v;
|
|
35
|
-
}
|
|
36
|
-
try {
|
|
37
|
-
return JSON.stringify(v);
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
return String(v);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
function safeObj(v) {
|
|
44
|
-
if (v == null) {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
try {
|
|
48
|
-
return JSON.parse(JSON.stringify(v));
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
return String(v);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
function textOut(v, maxLen = 400) {
|
|
55
|
-
if (v == null) {
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
const s = typeof v === 'string' ? v : safeStr(v) ?? '';
|
|
59
|
-
return s.length > 0 ? { text: s.slice(0, maxLen) } : null;
|
|
60
|
-
}
|
|
61
|
-
// ---------------------------------------------------------------------------
|
|
62
|
-
// Provider: 'copilot-sdk'
|
|
63
|
-
//
|
|
64
|
-
// Raw event shape: { type: string; data?: Record<string, unknown>; ephemeral?: boolean }
|
|
65
|
-
// Caller should only pass non-ephemeral events.
|
|
66
|
-
// toolCallId → toolName: populated by tool.execution_start, consumed by
|
|
67
|
-
// tool.execution_complete so we can resolve the tool name even when the SDK
|
|
68
|
-
// doesn't repeat it in the completion payload. Auto-pruned after 500 entries.
|
|
69
|
-
const _toolCallNames = new Map();
|
|
70
|
-
// toolCallId → intentionSummary: populated by assistant.message (toolRequests),
|
|
71
|
-
// consumed by tool.execution_start so PreToolUse carries the agent's stated reasoning.
|
|
72
|
-
const _toolCallIntentions = new Map();
|
|
73
|
-
// ---------------------------------------------------------------------------
|
|
74
|
-
function normalizeCopilotSdk(raw, provider) {
|
|
75
|
-
const type = raw['type'];
|
|
76
|
-
if (!type) {
|
|
77
|
-
return null;
|
|
78
|
-
}
|
|
79
|
-
const d = raw['data'] ?? {};
|
|
80
|
-
const toolName = (d['toolName'] ?? d['name'] ?? d['toolId']);
|
|
81
|
-
// Safe-serialise the raw data payload so pixel-office has all available fields.
|
|
82
|
-
const rawData = safeObj(d);
|
|
83
|
-
// Base event: include safe raw data so nothing is lost, then let mapped
|
|
84
|
-
// fields below override / supplement.
|
|
85
|
-
const base = {
|
|
86
|
-
sdk_type: type,
|
|
87
|
-
data: rawData,
|
|
88
|
-
};
|
|
89
|
-
switch (type) {
|
|
90
|
-
case 'tool.execution_start': {
|
|
91
|
-
const callId = safeStr(d['toolCallId']);
|
|
92
|
-
if (callId && toolName) {
|
|
93
|
-
if (_toolCallNames.size > 500) {
|
|
94
|
-
_toolCallNames.clear();
|
|
95
|
-
}
|
|
96
|
-
_toolCallNames.set(callId, toolName);
|
|
97
|
-
}
|
|
98
|
-
// Look up reasoning from the preceding assistant.message toolRequests
|
|
99
|
-
const reasoning = callId ? (_toolCallIntentions.get(callId) ?? null) : null;
|
|
100
|
-
if (callId) {
|
|
101
|
-
_toolCallIntentions.delete(callId);
|
|
102
|
-
}
|
|
103
|
-
return {
|
|
104
|
-
...base,
|
|
105
|
-
hook_event_name: 'PreToolUse',
|
|
106
|
-
provider,
|
|
107
|
-
tool_name: toolName ?? 'unknown',
|
|
108
|
-
tool_input: safeObj(d['arguments']),
|
|
109
|
-
session_id: callId,
|
|
110
|
-
reasoning,
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
case 'tool.execution_complete': {
|
|
114
|
-
const success = d['success'];
|
|
115
|
-
const result = d['result'];
|
|
116
|
-
const err = d['error'];
|
|
117
|
-
const outRaw = success === false
|
|
118
|
-
? (err?.['message'])
|
|
119
|
-
: (result?.['content'] ?? result?.['detailedContent']);
|
|
120
|
-
// tool name: prefer explicit field, then the start-event cache by toolCallId,
|
|
121
|
-
// then telemetry properties.command (present on failures), else 'unknown'.
|
|
122
|
-
const callId2 = safeStr(d['toolCallId']);
|
|
123
|
-
const telemetry = d['toolTelemetry'];
|
|
124
|
-
const telProps = telemetry?.['properties'];
|
|
125
|
-
const resolvedToolName = toolName
|
|
126
|
-
?? (callId2 ? _toolCallNames.get(callId2) : undefined)
|
|
127
|
-
?? safeStr(telProps?.['command'])
|
|
128
|
-
?? 'unknown';
|
|
129
|
-
if (callId2) {
|
|
130
|
-
_toolCallNames.delete(callId2);
|
|
131
|
-
} // clean up
|
|
132
|
-
// Parse file paths (JSON string in restrictedProperties.filePaths)
|
|
133
|
-
const telRestricted = telemetry?.['restrictedProperties'];
|
|
134
|
-
const fpRaw = telRestricted?.['filePaths'];
|
|
135
|
-
let filePaths = null;
|
|
136
|
-
if (typeof fpRaw === 'string') {
|
|
137
|
-
try {
|
|
138
|
-
const parsed = JSON.parse(fpRaw);
|
|
139
|
-
if (Array.isArray(parsed)) {
|
|
140
|
-
filePaths = parsed.filter((x) => typeof x === 'string');
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
catch { /* ignore */ }
|
|
144
|
-
}
|
|
145
|
-
else if (Array.isArray(fpRaw)) {
|
|
146
|
-
filePaths = fpRaw.filter((x) => typeof x === 'string');
|
|
147
|
-
}
|
|
148
|
-
// Lines added/removed from telemetry metrics
|
|
149
|
-
const telMetrics = telemetry?.['metrics'];
|
|
150
|
-
const linesAdded = typeof telMetrics?.['linesAdded'] === 'number' ? telMetrics['linesAdded'] : null;
|
|
151
|
-
const linesRemoved = typeof telMetrics?.['linesRemoved'] === 'number' ? telMetrics['linesRemoved'] : null;
|
|
152
|
-
return {
|
|
153
|
-
...base,
|
|
154
|
-
hook_event_name: success === false ? 'PostToolUseFailure' : 'PostToolUse',
|
|
155
|
-
provider,
|
|
156
|
-
tool_name: resolvedToolName,
|
|
157
|
-
tool_output: textOut(outRaw),
|
|
158
|
-
success: success ?? true,
|
|
159
|
-
session_id: safeStr(d['toolCallId']),
|
|
160
|
-
model: safeStr(d['model']),
|
|
161
|
-
interaction_id: safeStr(d['interactionId']),
|
|
162
|
-
file_paths: filePaths,
|
|
163
|
-
lines_added: linesAdded,
|
|
164
|
-
lines_removed: linesRemoved,
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
case 'subagent.started':
|
|
168
|
-
return {
|
|
169
|
-
...base,
|
|
170
|
-
hook_event_name: 'SubagentStart',
|
|
171
|
-
provider,
|
|
172
|
-
message: safeStr(d['agentDisplayName'] ?? d['agentName']),
|
|
173
|
-
session_id: safeStr(d['toolCallId']),
|
|
174
|
-
};
|
|
175
|
-
case 'assistant.message': {
|
|
176
|
-
const content = d['content'];
|
|
177
|
-
const tools = d['toolRequests'];
|
|
178
|
-
const outputTokens = typeof d['outputTokens'] === 'number' ? d['outputTokens'] : null;
|
|
179
|
-
const interactionId = safeStr(d['interactionId']);
|
|
180
|
-
if ((!content || content.length === 0) && (!tools || tools.length === 0)) {
|
|
181
|
-
return null;
|
|
182
|
-
}
|
|
183
|
-
// Store intentionSummary per toolCallId so PreToolUse can carry reasoning
|
|
184
|
-
if (tools && tools.length > 0) {
|
|
185
|
-
for (const t of tools) {
|
|
186
|
-
const cid = safeStr(t['toolCallId']);
|
|
187
|
-
const intention = safeStr(t['intentionSummary']);
|
|
188
|
-
if (cid && intention) {
|
|
189
|
-
if (_toolCallIntentions.size > 500) {
|
|
190
|
-
_toolCallIntentions.clear();
|
|
191
|
-
}
|
|
192
|
-
_toolCallIntentions.set(cid, intention);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
// Build message: prefer content text; fall back to intention summaries; then count
|
|
197
|
-
let summary;
|
|
198
|
-
if (content && content.length > 0) {
|
|
199
|
-
summary = content.slice(0, 400);
|
|
200
|
-
}
|
|
201
|
-
else if (tools && tools.length > 0) {
|
|
202
|
-
const intentions = tools
|
|
203
|
-
.map(t => safeStr(t['intentionSummary']))
|
|
204
|
-
.filter((s) => s !== null && s.length > 0)
|
|
205
|
-
.join(' | ');
|
|
206
|
-
summary = intentions || `[${tools.length} tool call(s)]`;
|
|
207
|
-
}
|
|
208
|
-
else {
|
|
209
|
-
summary = '[empty message]';
|
|
210
|
-
}
|
|
211
|
-
return {
|
|
212
|
-
...base,
|
|
213
|
-
hook_event_name: 'AgentMessage',
|
|
214
|
-
provider,
|
|
215
|
-
message: summary,
|
|
216
|
-
session_id: safeStr(d['messageId'] ?? d['interactionId']),
|
|
217
|
-
interaction_id: interactionId,
|
|
218
|
-
output_tokens: outputTokens,
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
case 'session.task_complete':
|
|
222
|
-
return {
|
|
223
|
-
...base,
|
|
224
|
-
hook_event_name: 'Stop',
|
|
225
|
-
provider,
|
|
226
|
-
message: safeStr(d['summary']),
|
|
227
|
-
};
|
|
228
|
-
case 'user.message':
|
|
229
|
-
return {
|
|
230
|
-
...base,
|
|
231
|
-
hook_event_name: 'UserPromptSubmit',
|
|
232
|
-
provider,
|
|
233
|
-
message: safeStr(d['content']),
|
|
234
|
-
session_id: safeStr(d['messageId']),
|
|
235
|
-
};
|
|
236
|
-
case 'assistant.turn_start':
|
|
237
|
-
return { ...base, hook_event_name: 'TurnStart', provider, interaction_id: safeStr(d['interactionId']) };
|
|
238
|
-
case 'assistant.turn_end':
|
|
239
|
-
return { ...base, hook_event_name: 'TurnEnd', provider };
|
|
240
|
-
case 'permission.requested':
|
|
241
|
-
return {
|
|
242
|
-
...base,
|
|
243
|
-
hook_event_name: 'PermissionRequest',
|
|
244
|
-
provider,
|
|
245
|
-
message: safeStr(d['permissionRequest']),
|
|
246
|
-
session_id: safeStr(d['requestId']),
|
|
247
|
-
};
|
|
248
|
-
default:
|
|
249
|
-
return null; // unknown / uninteresting event
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
// ---------------------------------------------------------------------------
|
|
253
|
-
// Provider: 'opencode-sdk'
|
|
254
|
-
//
|
|
255
|
-
// Raw event shape: the outer SSE envelope; relevant data in payload.properties.
|
|
256
|
-
// ---------------------------------------------------------------------------
|
|
257
|
-
function normalizeOpencodeSDK(raw, provider) {
|
|
258
|
-
const payload = (raw['payload'] ?? raw);
|
|
259
|
-
const type = payload['type'];
|
|
260
|
-
const props = payload['properties'];
|
|
261
|
-
if (!type) {
|
|
262
|
-
return null;
|
|
263
|
-
}
|
|
264
|
-
const toolName = (props?.['toolID'] ?? props?.['name'] ?? props?.['tool']);
|
|
265
|
-
const sessionId = safeStr(props?.['sessionID'] ?? props?.['session_id']);
|
|
266
|
-
switch (type) {
|
|
267
|
-
case 'tool.execute.before':
|
|
268
|
-
return {
|
|
269
|
-
hook_event_name: 'PreToolUse',
|
|
270
|
-
provider,
|
|
271
|
-
tool_name: toolName ?? 'unknown',
|
|
272
|
-
tool_input: safeObj(props?.['args'] ?? props?.['input']),
|
|
273
|
-
session_id: sessionId,
|
|
274
|
-
};
|
|
275
|
-
case 'tool.execute.after': {
|
|
276
|
-
const rawOut = props?.['output'] ?? props?.['result'] ?? props?.['text'];
|
|
277
|
-
return {
|
|
278
|
-
hook_event_name: 'PostToolUse',
|
|
279
|
-
provider,
|
|
280
|
-
tool_name: toolName ?? 'unknown',
|
|
281
|
-
tool_input: safeObj(props?.['args'] ?? props?.['input']),
|
|
282
|
-
tool_output: textOut(rawOut),
|
|
283
|
-
session_id: sessionId,
|
|
284
|
-
};
|
|
285
|
-
}
|
|
286
|
-
case 'permission.updated': {
|
|
287
|
-
const permTitle = safeStr(props?.['title']);
|
|
288
|
-
return {
|
|
289
|
-
hook_event_name: 'PermissionReplied',
|
|
290
|
-
provider,
|
|
291
|
-
message: permTitle,
|
|
292
|
-
session_id: sessionId,
|
|
293
|
-
};
|
|
294
|
-
}
|
|
295
|
-
case 'session.compacted':
|
|
296
|
-
return {
|
|
297
|
-
hook_event_name: 'PostCompact',
|
|
298
|
-
provider,
|
|
299
|
-
session_id: sessionId,
|
|
300
|
-
};
|
|
301
|
-
case 'session.idle': {
|
|
302
|
-
// Optional _assistantText injected by opencodeSdkProvider for flush
|
|
303
|
-
const assistantText = props?.['_assistantText'];
|
|
304
|
-
if (assistantText) {
|
|
305
|
-
return {
|
|
306
|
-
hook_event_name: 'AgentMessage',
|
|
307
|
-
provider,
|
|
308
|
-
message: assistantText,
|
|
309
|
-
session_id: sessionId,
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
|
-
return {
|
|
313
|
-
hook_event_name: 'Stop',
|
|
314
|
-
provider,
|
|
315
|
-
session_id: sessionId,
|
|
316
|
-
};
|
|
317
|
-
}
|
|
318
|
-
case 'session.error':
|
|
319
|
-
return {
|
|
320
|
-
hook_event_name: 'StopFailure',
|
|
321
|
-
provider,
|
|
322
|
-
message: safeStr(props?.['error'] ?? props?.['message']),
|
|
323
|
-
session_id: sessionId,
|
|
324
|
-
};
|
|
325
|
-
case 'message.part.delta':
|
|
326
|
-
return null; // streamed text — not forwarded
|
|
327
|
-
default:
|
|
328
|
-
return null;
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
// ---------------------------------------------------------------------------
|
|
332
|
-
// Provider: 'claude-cli' / 'copilot-cli'
|
|
333
|
-
//
|
|
334
|
-
// Raw event = the JSON that was already written by the hook script.
|
|
335
|
-
// It already has hook_event_name + provider; we just ensure timestamp + schema.
|
|
336
|
-
// ---------------------------------------------------------------------------
|
|
337
|
-
function normalizeCliHook(raw, provider) {
|
|
338
|
-
const hookName = raw['hook_event_name'] ?? raw['hook'];
|
|
339
|
-
if (!hookName) {
|
|
340
|
-
return null;
|
|
341
|
-
}
|
|
342
|
-
return {
|
|
343
|
-
...raw,
|
|
344
|
-
hook_event_name: hookName,
|
|
345
|
-
provider: raw['provider'] ?? provider,
|
|
346
|
-
tool_name: raw['tool_name'] ?? raw['tool'],
|
|
347
|
-
session_id: safeStr(raw['session_id'] ?? raw['sessionId']),
|
|
348
|
-
message: safeStr(raw['message'] ?? raw['summary']),
|
|
349
|
-
};
|
|
350
|
-
}
|
|
351
|
-
// ---------------------------------------------------------------------------
|
|
352
|
-
// Public API
|
|
353
|
-
// ---------------------------------------------------------------------------
|
|
354
|
-
/**
|
|
355
|
-
* Normalize a raw provider event into the unified HookEvent schema.
|
|
356
|
-
*
|
|
357
|
-
* @param provider One of: 'copilot-sdk' | 'opencode-sdk' | 'claude-cli' |
|
|
358
|
-
* 'copilot-cli' | or any string for pass-through.
|
|
359
|
-
* @param raw The raw event object from the provider.
|
|
360
|
-
* @returns A HookEvent ready to be JSON-stringified, or null if the
|
|
361
|
-
* event type is not mapped / not interesting.
|
|
362
|
-
*/
|
|
363
|
-
// Canonical hook_event_name (PascalCase) → event_type (snake_case). Mirrors
|
|
364
|
-
// pixel-office's HookEventNormalizer::CLAUDE_CODE_TYPES so the CLI can emit the
|
|
365
|
-
// final event_type itself — the server then trusts it and doesn't have to know
|
|
366
|
-
// every provider (which is what let grok-tui events fall through to "unknown").
|
|
367
|
-
const EVENT_TYPE_MAP = {
|
|
368
|
-
PreToolUse: 'tool_start', PostToolUse: 'tool_end', PostToolUseFailure: 'tool_error',
|
|
369
|
-
SessionStart: 'session_start', SessionEnd: 'session_end', Stop: 'session_end', StopFailure: 'stop_failure',
|
|
370
|
-
SubagentStart: 'subagent_start', SubagentStop: 'subagent_stop', TeammateIdle: 'teammate_idle',
|
|
371
|
-
PermissionRequest: 'permission_request', PermissionDenied: 'permission_denied', PermissionReplied: 'permission_replied',
|
|
372
|
-
UserPromptSubmit: 'user_prompt_submit',
|
|
373
|
-
TaskCreated: 'task_created', TaskCompleted: 'task_completed',
|
|
374
|
-
CwdChanged: 'cwd_changed', FileChanged: 'file_changed', InstructionsLoaded: 'instructions_loaded', ConfigChange: 'config_change',
|
|
375
|
-
PreCompact: 'pre_compact', PostCompact: 'post_compact',
|
|
376
|
-
Elicitation: 'elicitation', ElicitationResult: 'elicitation_result',
|
|
377
|
-
WorktreeCreate: 'worktree_create', WorktreeRemove: 'worktree_remove',
|
|
378
|
-
Notification: 'notification',
|
|
379
|
-
AgentMessage: 'agent_message', TurnStart: 'turn_start', TurnEnd: 'turn_end',
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
380
15
|
};
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
if (EVENT_TYPE_MAP[hookEventName]) {
|
|
384
|
-
return EVENT_TYPE_MAP[hookEventName];
|
|
385
|
-
}
|
|
386
|
-
// Unknown PascalCase name → best-effort snake_case so it's at least descriptive.
|
|
387
|
-
return hookEventName.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toLowerCase();
|
|
388
|
-
}
|
|
389
|
-
function normalizeEvent(provider, raw) {
|
|
390
|
-
let partial = null;
|
|
391
|
-
if (provider === 'copilot-sdk') {
|
|
392
|
-
partial = normalizeCopilotSdk(raw, provider);
|
|
393
|
-
}
|
|
394
|
-
else if (provider === 'opencode-sdk') {
|
|
395
|
-
partial = normalizeOpencodeSDK(raw, provider);
|
|
396
|
-
}
|
|
397
|
-
else {
|
|
398
|
-
// claude-cli, copilot-cli, or any other — treat as already-formatted hook
|
|
399
|
-
partial = normalizeCliHook(raw, provider);
|
|
400
|
-
}
|
|
401
|
-
if (!partial) {
|
|
402
|
-
return null;
|
|
403
|
-
}
|
|
404
|
-
// Emit the canonical event_type alongside hook_event_name so downstream
|
|
405
|
-
// consumers (pixel-office) never have to re-derive it per provider.
|
|
406
|
-
const event_type = eventTypeFor(String(partial.hook_event_name ?? 'unknown'));
|
|
407
|
-
return { ...partial, event_type, timestamp: new Date().toISOString() };
|
|
408
|
-
}
|
|
409
|
-
/**
|
|
410
|
-
* Append a normalized event to a JSONL sink file.
|
|
411
|
-
* Creates the directory if it doesn't exist.
|
|
412
|
-
* Silently ignores write errors (non-critical path).
|
|
413
|
-
*/
|
|
414
|
-
function appendHookEvent(jsonlPath, provider, raw, fs, path, onError) {
|
|
415
|
-
const ev = normalizeEvent(provider, raw);
|
|
416
|
-
if (!ev) {
|
|
417
|
-
return;
|
|
418
|
-
}
|
|
419
|
-
try {
|
|
420
|
-
fs.mkdirSync(path.dirname(jsonlPath), { recursive: true });
|
|
421
|
-
fs.appendFileSync(jsonlPath, JSON.stringify(ev) + '\n', 'utf8');
|
|
422
|
-
}
|
|
423
|
-
catch (e) {
|
|
424
|
-
onError?.(e);
|
|
425
|
-
}
|
|
426
|
-
}
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./providers/base/ProviderNormalizer"), exports);
|
|
427
18
|
//# sourceMappingURL=hookEventNormalizer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hookEventNormalizer.js","sourceRoot":"","sources":["../src/hookEventNormalizer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hookEventNormalizer.js","sourceRoot":"","sources":["../src/hookEventNormalizer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sEAAoD"}
|
package/out/profileBuilder.js
CHANGED
|
@@ -55,6 +55,38 @@ exports.PROFILE_SECTIONS = [
|
|
|
55
55
|
'Discover, then judge — recall before acting, read before touching, use the real tool/graph fact instead of guessing; do not act blindly and do not spam teammates.',
|
|
56
56
|
],
|
|
57
57
|
},
|
|
58
|
+
{
|
|
59
|
+
id: '00b-self-verifiable-work', label: 'Self-Verifiable Work', file: '00b-self-verifiable-work.md',
|
|
60
|
+
keyRules: [
|
|
61
|
+
'Never mark [x] / complete_task / say "done" on a vibe — state the objective, rule-based check you ran and its result (tests green, build 0 errors, script exits 0, endpoint 200, file has expected content, diff applied). "Looks right" is not evidence.',
|
|
62
|
+
'No checker? BUILD one before closing — write a failing test, define measurable acceptance criteria in TODO.md, capture before/after, assert an expected exit-code/HTTP-200/file-exists, or re-run from a clean state.',
|
|
63
|
+
'High stakes or fuzzy check → get a RELATIVE second verification (adversarial self-review, or a teammate over A2A via send_message/check_messages, or an independent re-run) rather than trusting one self-judgment. Verify with real gates: the project tests/build/lint, the verify_and_keep gate (.autodev/CONTROL.md), read_file back your writes.',
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: '00c-verifiable-threads', label: 'Self-Verifying Message Threads & Todos', file: '00c-verifiable-threads.md',
|
|
68
|
+
keyRules: [
|
|
69
|
+
'Assume every recipient is context-degraded (different session, never saw your reasoning) — write each A2A message (send_message) and each task/TODO.md hand-off so an agent who saw NONE of your run could act AND verify: state the goal, the exact artifact (path/command/ticket id/office slug), and the objective acceptance criterion. No "the file"/"that bug"/"as discussed" — those are context-gap tells.',
|
|
70
|
+
'Read as a detector: on check_messages/get_tasks look for the tells of a degraded sender (vague referents, missing acceptance criterion, stale refs). If you spot a gap, recover it (check_messages/get_events/agent_profile) or send ONE clarifying send_message BEFORE acting — never act on a degraded instruction and propagate the error downstream.',
|
|
71
|
+
'Close the loop verifiably: complete_task/status reports the objective result (what changed, where, how checked, pass/fail with command+output) — never a bare "done". A report a fresh reader can verify keeps the thread honest; a vague "done" is the context-gap tell.',
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
id: '00d-turn-end-retrospective', label: 'Turn-End Honest Retrospective & Next Steps', file: '00d-turn-end-retrospective.md',
|
|
76
|
+
keyRules: [
|
|
77
|
+
'End every turn with a CANDID opinion, not spin: what you achieved vs intended and how much is VERIFIED (a check ran) vs merely assumed; what went wrong/shaky/skipped/uncertain, stated plainly; what you\'d do differently plus any HONEST DISAGREEMENT with the approach or task; calibrated confidence. A cheerful "all done ✅" that hides a partial failure or rubber-stamps a bad plan is a failure of this protocol, not politeness.',
|
|
78
|
+
'Follow the verdict with concrete NEXT STEPS: the specific next actions ordered by priority with real handles (file path, task id, command, office slug), blockers + what/who unblocks them, and what you RECOMMEND even if nobody asked ("if I were you I\'d do X next").',
|
|
79
|
+
'Always state it in your closing output; if you are an office/loop agent make it durable — set_status with a terse honest state, a brief send_message to the owner/next agent when there is something to act on, and write next-steps into TODO.md (manage_agent_todos) so the thread survives your context reset. Keep it proportional — a tight paragraph or a few bullets, never a wall of text.',
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
id: '00e-long-horizon-planning', label: 'Long-Horizon Task Planner', file: '00e-long-horizon-planning.md',
|
|
84
|
+
keyRules: [
|
|
85
|
+
'Plan the full arc BEFORE executing: decompose the task end-to-end into an ordered set of COMPLETE milestones, each with its own acceptance criterion, up to one explicit "done for the WHOLE task". Resist the first-slice reflex — a rushed start ships a half-task. Order by dependency (blockers first) and spike the unknown/risky parts before committing the plan.',
|
|
86
|
+
'Define "done" for the whole task, not the first increment: name up front every case/state/path the finished task must cover so "done" can\'t silently shrink to the easy part. Compiles-but-doesn\'t-do-the-job, happy-path-only, or 1-of-N cases is NOT done ([[00b-self-verifiable-work]], graded by [[00d-turn-end-retrospective]]).',
|
|
87
|
+
'The plan persists across turns — write it + remaining steps into TODO.md (manage_agent_todos / get_tasks) so it survives a context reset; carry and update it each turn, never re-derive from scratch. Prefer a thin end-to-end slice over broad half-built sprawl. Reconcile before closing: no complete_task until every planned step is genuinely [x] and verified; else the task stays open with an honest set_status.',
|
|
88
|
+
],
|
|
89
|
+
},
|
|
58
90
|
{
|
|
59
91
|
id: '01-learning', label: 'Session Start Order (SUMMARY.md)', file: '01-learning.md',
|
|
60
92
|
keyRules: [
|