@mindfoldhq/trellis 0.6.0-beta.1 → 0.6.0-beta.10
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/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +25 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/channel/adapters/claude.d.ts +38 -0
- package/dist/commands/channel/adapters/claude.d.ts.map +1 -0
- package/dist/commands/channel/adapters/claude.js +209 -0
- package/dist/commands/channel/adapters/claude.js.map +1 -0
- package/dist/commands/channel/adapters/codex.d.ts +70 -0
- package/dist/commands/channel/adapters/codex.d.ts.map +1 -0
- package/dist/commands/channel/adapters/codex.js +462 -0
- package/dist/commands/channel/adapters/codex.js.map +1 -0
- package/dist/commands/channel/adapters/index.d.ts +79 -0
- package/dist/commands/channel/adapters/index.d.ts.map +1 -0
- package/dist/commands/channel/adapters/index.js +109 -0
- package/dist/commands/channel/adapters/index.js.map +1 -0
- package/dist/commands/channel/adapters/types.d.ts +33 -0
- package/dist/commands/channel/adapters/types.d.ts.map +1 -0
- package/dist/commands/channel/adapters/types.js +2 -0
- package/dist/commands/channel/adapters/types.js.map +1 -0
- package/dist/commands/channel/agent-loader.d.ts +32 -0
- package/dist/commands/channel/agent-loader.d.ts.map +1 -0
- package/dist/commands/channel/agent-loader.js +154 -0
- package/dist/commands/channel/agent-loader.js.map +1 -0
- package/dist/commands/channel/context-loader.d.ts +26 -0
- package/dist/commands/channel/context-loader.d.ts.map +1 -0
- package/dist/commands/channel/context-loader.js +290 -0
- package/dist/commands/channel/context-loader.js.map +1 -0
- package/dist/commands/channel/create.d.ts +20 -0
- package/dist/commands/channel/create.d.ts.map +1 -0
- package/dist/commands/channel/create.js +110 -0
- package/dist/commands/channel/create.js.map +1 -0
- package/dist/commands/channel/dev-parse-trace.d.ts +14 -0
- package/dist/commands/channel/dev-parse-trace.d.ts.map +1 -0
- package/dist/commands/channel/dev-parse-trace.js +70 -0
- package/dist/commands/channel/dev-parse-trace.js.map +1 -0
- package/dist/commands/channel/index.d.ts +3 -0
- package/dist/commands/channel/index.d.ts.map +1 -0
- package/dist/commands/channel/index.js +310 -0
- package/dist/commands/channel/index.js.map +1 -0
- package/dist/commands/channel/kill.d.ts +6 -0
- package/dist/commands/channel/kill.d.ts.map +1 -0
- package/dist/commands/channel/kill.js +118 -0
- package/dist/commands/channel/kill.js.map +1 -0
- package/dist/commands/channel/list.d.ts +16 -0
- package/dist/commands/channel/list.d.ts.map +1 -0
- package/dist/commands/channel/list.js +223 -0
- package/dist/commands/channel/list.js.map +1 -0
- package/dist/commands/channel/messages.d.ts +13 -0
- package/dist/commands/channel/messages.d.ts.map +1 -0
- package/dist/commands/channel/messages.js +209 -0
- package/dist/commands/channel/messages.js.map +1 -0
- package/dist/commands/channel/rm.d.ts +25 -0
- package/dist/commands/channel/rm.d.ts.map +1 -0
- package/dist/commands/channel/rm.js +206 -0
- package/dist/commands/channel/rm.js.map +1 -0
- package/dist/commands/channel/run.d.ts +31 -0
- package/dist/commands/channel/run.d.ts.map +1 -0
- package/dist/commands/channel/run.js +137 -0
- package/dist/commands/channel/run.js.map +1 -0
- package/dist/commands/channel/send.d.ts +10 -0
- package/dist/commands/channel/send.d.ts.map +1 -0
- package/dist/commands/channel/send.js +38 -0
- package/dist/commands/channel/send.js.map +1 -0
- package/dist/commands/channel/spawn.d.ts +24 -0
- package/dist/commands/channel/spawn.d.ts.map +1 -0
- package/dist/commands/channel/spawn.js +189 -0
- package/dist/commands/channel/spawn.js.map +1 -0
- package/dist/commands/channel/store/events.d.ts +20 -0
- package/dist/commands/channel/store/events.d.ts.map +1 -0
- package/dist/commands/channel/store/events.js +64 -0
- package/dist/commands/channel/store/events.js.map +1 -0
- package/dist/commands/channel/store/lock.d.ts +23 -0
- package/dist/commands/channel/store/lock.d.ts.map +1 -0
- package/dist/commands/channel/store/lock.js +99 -0
- package/dist/commands/channel/store/lock.js.map +1 -0
- package/dist/commands/channel/store/paths.d.ts +56 -0
- package/dist/commands/channel/store/paths.d.ts.map +1 -0
- package/dist/commands/channel/store/paths.js +187 -0
- package/dist/commands/channel/store/paths.js.map +1 -0
- package/dist/commands/channel/store/watch.d.ts +36 -0
- package/dist/commands/channel/store/watch.d.ts.map +1 -0
- package/dist/commands/channel/store/watch.js +176 -0
- package/dist/commands/channel/store/watch.js.map +1 -0
- package/dist/commands/channel/supervisor/inbox.d.ts +25 -0
- package/dist/commands/channel/supervisor/inbox.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/inbox.js +99 -0
- package/dist/commands/channel/supervisor/inbox.js.map +1 -0
- package/dist/commands/channel/supervisor/shutdown.d.ts +66 -0
- package/dist/commands/channel/supervisor/shutdown.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/shutdown.js +143 -0
- package/dist/commands/channel/supervisor/shutdown.js.map +1 -0
- package/dist/commands/channel/supervisor/stdout.d.ts +49 -0
- package/dist/commands/channel/supervisor/stdout.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/stdout.js +107 -0
- package/dist/commands/channel/supervisor/stdout.js.map +1 -0
- package/dist/commands/channel/supervisor.d.ts +47 -0
- package/dist/commands/channel/supervisor.d.ts.map +1 -0
- package/dist/commands/channel/supervisor.js +282 -0
- package/dist/commands/channel/supervisor.js.map +1 -0
- package/dist/commands/channel/wait.d.ts +15 -0
- package/dist/commands/channel/wait.d.ts.map +1 -0
- package/dist/commands/channel/wait.js +75 -0
- package/dist/commands/channel/wait.js.map +1 -0
- package/dist/commands/mem.d.ts +119 -3
- package/dist/commands/mem.d.ts.map +1 -1
- package/dist/commands/mem.js +736 -158
- package/dist/commands/mem.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +10 -110
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/upgrade.d.ts +28 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +84 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/configurators/codex.d.ts.map +1 -1
- package/dist/configurators/codex.js +5 -3
- package/dist/configurators/codex.js.map +1 -1
- package/dist/configurators/shared.js +4 -4
- package/dist/configurators/shared.js.map +1 -1
- package/dist/migrations/manifests/0.5.10.json +9 -0
- package/dist/migrations/manifests/0.5.11.json +16 -0
- package/dist/migrations/manifests/0.5.12.json +9 -0
- package/dist/migrations/manifests/0.5.13.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.10.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.2.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.3.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.4.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.5.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.6.json +16 -0
- package/dist/migrations/manifests/0.6.0-beta.7.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.8.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.9.json +9 -0
- package/dist/templates/claude/agents/trellis-check.md +2 -2
- package/dist/templates/claude/agents/trellis-implement.md +8 -7
- package/dist/templates/claude/settings.json +4 -4
- package/dist/templates/codebuddy/agents/trellis-check.md +2 -2
- package/dist/templates/codebuddy/agents/trellis-implement.md +8 -7
- package/dist/templates/codebuddy/settings.json +4 -4
- package/dist/templates/codex/agents/trellis-check.toml +4 -4
- package/dist/templates/codex/agents/trellis-implement.toml +4 -4
- package/dist/templates/codex/hooks/session-start.py +183 -119
- package/dist/templates/codex/hooks.json +1 -1
- package/dist/templates/codex/skills/before-dev/SKILL.md +12 -6
- package/dist/templates/codex/skills/brainstorm/SKILL.md +69 -457
- package/dist/templates/codex/skills/check/SKILL.md +86 -18
- package/dist/templates/codex/skills/start/SKILL.md +33 -323
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-context-loading.md +7 -4
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-spec-structure.md +1 -1
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-workflow.md +3 -2
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/context-injection.md +5 -5
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/spec-system.md +1 -1
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/task-system.md +8 -6
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/agents.md +5 -4
- package/dist/templates/common/commands/continue.md +6 -5
- package/dist/templates/common/commands/start.md +9 -6
- package/dist/templates/common/skills/before-dev.md +12 -6
- package/dist/templates/common/skills/brainstorm.md +68 -504
- package/dist/templates/common/skills/check.md +7 -1
- package/dist/templates/copilot/hooks/session-start.py +195 -101
- package/dist/templates/copilot/hooks.json +2 -2
- package/dist/templates/copilot/prompts/before-dev.prompt.md +12 -6
- package/dist/templates/copilot/prompts/brainstorm.prompt.md +69 -457
- package/dist/templates/copilot/prompts/check.prompt.md +86 -18
- package/dist/templates/copilot/prompts/parallel.prompt.md +16 -8
- package/dist/templates/copilot/prompts/start.prompt.md +33 -367
- package/dist/templates/cursor/agents/trellis-check.md +2 -2
- package/dist/templates/cursor/agents/trellis-implement.md +8 -7
- package/dist/templates/cursor/hooks.json +2 -2
- package/dist/templates/droid/droids/trellis-check.md +2 -2
- package/dist/templates/droid/droids/trellis-implement.md +8 -7
- package/dist/templates/droid/settings.json +4 -4
- package/dist/templates/gemini/agents/trellis-implement.md +7 -6
- package/dist/templates/gemini/settings.json +2 -2
- package/dist/templates/kiro/agents/trellis-check.json +1 -1
- package/dist/templates/kiro/agents/trellis-implement.json +1 -1
- package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +109 -6
- package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +295 -43
- package/dist/templates/opencode/agents/trellis-check.md +2 -2
- package/dist/templates/opencode/agents/trellis-implement.md +9 -8
- package/dist/templates/opencode/lib/session-utils.js +212 -123
- package/dist/templates/opencode/lib/trellis-context.js +73 -11
- package/dist/templates/opencode/plugins/inject-subagent-context.js +131 -29
- package/dist/templates/opencode/plugins/inject-workflow-state.js +9 -5
- package/dist/templates/opencode/plugins/session-start.js +9 -1
- package/dist/templates/pi/extensions/trellis/index.ts.txt +183 -6
- package/dist/templates/pi/settings.json +9 -0
- package/dist/templates/qoder/agents/trellis-implement.md +7 -6
- package/dist/templates/qoder/settings.json +4 -4
- package/dist/templates/shared-hooks/inject-subagent-context.py +36 -14
- package/dist/templates/shared-hooks/inject-workflow-state.py +18 -42
- package/dist/templates/shared-hooks/session-start.py +197 -163
- package/dist/templates/trellis/config.yaml +18 -0
- package/dist/templates/trellis/index.d.ts +1 -0
- package/dist/templates/trellis/index.d.ts.map +1 -1
- package/dist/templates/trellis/index.js +2 -0
- package/dist/templates/trellis/index.js.map +1 -1
- package/dist/templates/trellis/scripts/add_session.py +50 -24
- package/dist/templates/trellis/scripts/common/config.py +57 -1
- package/dist/templates/trellis/scripts/common/safe_commit.py +255 -0
- package/dist/templates/trellis/scripts/common/session_context.py +384 -137
- package/dist/templates/trellis/scripts/common/task_context.py +3 -3
- package/dist/templates/trellis/scripts/common/task_store.py +80 -12
- package/dist/templates/trellis/scripts/common/workflow_phase.py +7 -10
- package/dist/templates/trellis/scripts/task.py +3 -3
- package/dist/templates/trellis/workflow.md +98 -98
- package/dist/utils/uninstall-scrubbers.d.ts +1 -0
- package/dist/utils/uninstall-scrubbers.d.ts.map +1 -1
- package/dist/utils/uninstall-scrubbers.js +21 -0
- package/dist/utils/uninstall-scrubbers.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.d.ts
CHANGED
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAIhE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -4,10 +4,12 @@ import chalk from "chalk";
|
|
|
4
4
|
import { Command } from "commander";
|
|
5
5
|
import { init } from "../commands/init.js";
|
|
6
6
|
import { update } from "../commands/update.js";
|
|
7
|
+
import { upgrade } from "../commands/upgrade.js";
|
|
7
8
|
import { uninstall } from "../commands/uninstall.js";
|
|
8
9
|
import { runMem } from "../commands/mem.js";
|
|
10
|
+
import { registerChannelCommand } from "../commands/channel/index.js";
|
|
9
11
|
import { DIR_NAMES } from "../constants/paths.js";
|
|
10
|
-
import {
|
|
12
|
+
import { PACKAGE_NAME, VERSION } from "../constants/version.js";
|
|
11
13
|
import { compareVersions } from "../utils/compare-versions.js";
|
|
12
14
|
// Re-export for backwards compatibility (consumers should prefer constants/version.js)
|
|
13
15
|
export { VERSION, PACKAGE_NAME };
|
|
@@ -29,7 +31,7 @@ function checkForUpdates(cwd) {
|
|
|
29
31
|
else if (comparison < 0) {
|
|
30
32
|
// CLI is older than project - CLI needs updating
|
|
31
33
|
console.log(chalk.yellow(`\n⚠️ Your CLI (${cliVersion}) is older than project (${projectVersion})`));
|
|
32
|
-
console.log(chalk.gray(` Run:
|
|
34
|
+
console.log(chalk.gray(` Run: trellis upgrade\n`));
|
|
33
35
|
}
|
|
34
36
|
}
|
|
35
37
|
// Check for updates at CLI startup (only if .trellis exists)
|
|
@@ -109,6 +111,26 @@ program
|
|
|
109
111
|
process.exit(1);
|
|
110
112
|
}
|
|
111
113
|
});
|
|
114
|
+
program
|
|
115
|
+
.command("upgrade")
|
|
116
|
+
.description("Upgrade the global Trellis CLI package")
|
|
117
|
+
.option("--tag <tag>", "npm dist-tag or version to install (default follows current channel: latest, beta, or rc)")
|
|
118
|
+
.option("--dry-run", "Print the install command without running it")
|
|
119
|
+
.action(async (options) => {
|
|
120
|
+
try {
|
|
121
|
+
await upgrade({
|
|
122
|
+
tag: options.tag,
|
|
123
|
+
dryRun: options.dryRun,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
console.error(chalk.red("Error:"), error instanceof Error ? error.message : error);
|
|
128
|
+
if (process.env.DEBUG || process.env.TRELLIS_DEBUG) {
|
|
129
|
+
console.error(error instanceof Error ? error.stack : error);
|
|
130
|
+
}
|
|
131
|
+
process.exit(1);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
112
134
|
program
|
|
113
135
|
.command("uninstall")
|
|
114
136
|
.description("Remove all trellis files (managed platform files + .trellis/) from this project")
|
|
@@ -147,5 +169,6 @@ program
|
|
|
147
169
|
process.exit(1);
|
|
148
170
|
}
|
|
149
171
|
});
|
|
172
|
+
registerChannelCommand(program);
|
|
150
173
|
program.parse();
|
|
151
174
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ParseResult } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse one line of Claude stream-json stdout.
|
|
4
|
+
* Returns the channel events to emit + any side effects.
|
|
5
|
+
*
|
|
6
|
+
* Pure function: same input always produces same output. No I/O.
|
|
7
|
+
*/
|
|
8
|
+
export declare function parseClaudeLine(line: string): ParseResult;
|
|
9
|
+
/**
|
|
10
|
+
* Encode a channel user message into Claude stream-json stdin line(s).
|
|
11
|
+
*
|
|
12
|
+
* - Normal `message`: one line, `{type:"user", message:{...}}`
|
|
13
|
+
* - `tag === "interrupt"`: TWO lines —
|
|
14
|
+
* 1. `{type:"control_request", subtype:"interrupt"}`
|
|
15
|
+
* 2. `{type:"user", message:{...}}`
|
|
16
|
+
*
|
|
17
|
+
* The control_request IS accepted by Claude SDK (returns success), but
|
|
18
|
+
* probe tests show it does **not** reliably preempt in-flight LLM
|
|
19
|
+
* response generation — turn 1 still completes fully, then turn 2 picks
|
|
20
|
+
* up the new user message. So effective behavior on Claude is "next-turn
|
|
21
|
+
* redirect" not "mid-stream abort". For hard preempt use `channel kill`.
|
|
22
|
+
*
|
|
23
|
+
* Sending the control_request anyway is harmless and may abort tool
|
|
24
|
+
* calls / partial-message streams; future SDK fixes apply automatically.
|
|
25
|
+
* See research/probe-findings.md for the experimental evidence.
|
|
26
|
+
*/
|
|
27
|
+
export declare function encodeClaudeUserMessage(text: string, tag?: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Build the Claude CLI args for `claude -p` in stream-json mode.
|
|
30
|
+
*/
|
|
31
|
+
export declare function buildClaudeArgs(opts: {
|
|
32
|
+
resumeSessionId?: string;
|
|
33
|
+
model?: string;
|
|
34
|
+
verbose?: boolean;
|
|
35
|
+
/** Appended to Claude's default system prompt (per agent definition body). */
|
|
36
|
+
systemPrompt?: string;
|
|
37
|
+
}): string[];
|
|
38
|
+
//# sourceMappingURL=claude.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/adapters/claude.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,YAAY,CAAC;AA4D5D;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAuCzD;AAyFD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAuB1E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,EAAE,CAkBX"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
function summarizeInput(input, max = 120) {
|
|
2
|
+
if (input === null || input === undefined)
|
|
3
|
+
return "";
|
|
4
|
+
let s;
|
|
5
|
+
try {
|
|
6
|
+
s = typeof input === "string" ? input : JSON.stringify(input);
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
s = String(input);
|
|
10
|
+
}
|
|
11
|
+
return s.length > max ? s.slice(0, max) + "…" : s;
|
|
12
|
+
}
|
|
13
|
+
function isMcpToolName(name) {
|
|
14
|
+
return /^mcp__/.test(name);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Parse one line of Claude stream-json stdout.
|
|
18
|
+
* Returns the channel events to emit + any side effects.
|
|
19
|
+
*
|
|
20
|
+
* Pure function: same input always produces same output. No I/O.
|
|
21
|
+
*/
|
|
22
|
+
export function parseClaudeLine(line) {
|
|
23
|
+
const trimmed = line.trim();
|
|
24
|
+
if (!trimmed)
|
|
25
|
+
return { events: [] };
|
|
26
|
+
let msg;
|
|
27
|
+
try {
|
|
28
|
+
msg = JSON.parse(trimmed);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return {
|
|
32
|
+
events: [
|
|
33
|
+
{
|
|
34
|
+
kind: "error",
|
|
35
|
+
payload: {
|
|
36
|
+
message: "Failed to parse Claude stdout line",
|
|
37
|
+
raw_excerpt: trimmed.slice(0, 200),
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
switch (msg.type) {
|
|
44
|
+
case "system":
|
|
45
|
+
return handleSystem(msg);
|
|
46
|
+
case "assistant":
|
|
47
|
+
return handleAssistant(msg);
|
|
48
|
+
case "user":
|
|
49
|
+
return { events: [] };
|
|
50
|
+
case "rate_limit_event":
|
|
51
|
+
return { events: [] };
|
|
52
|
+
case "result":
|
|
53
|
+
return handleResult(msg);
|
|
54
|
+
case "control_response":
|
|
55
|
+
// Acknowledgement of our outbound control_request (e.g. interrupt).
|
|
56
|
+
// Silently consume — supervisor doesn't need to wait on it.
|
|
57
|
+
return { events: [] };
|
|
58
|
+
default:
|
|
59
|
+
return { events: [] };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function handleSystem(msg) {
|
|
63
|
+
if (msg.subtype === "init" && msg.session_id) {
|
|
64
|
+
return {
|
|
65
|
+
events: [],
|
|
66
|
+
side: { persistSessionId: msg.session_id },
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return { events: [] };
|
|
70
|
+
}
|
|
71
|
+
function handleAssistant(msg) {
|
|
72
|
+
const blocks = msg.message?.content;
|
|
73
|
+
if (!Array.isArray(blocks))
|
|
74
|
+
return { events: [] };
|
|
75
|
+
const events = [];
|
|
76
|
+
for (const b of blocks) {
|
|
77
|
+
switch (b.type) {
|
|
78
|
+
case "text": {
|
|
79
|
+
if (b.text && b.text.length > 0) {
|
|
80
|
+
events.push({ kind: "message", payload: { text: b.text } });
|
|
81
|
+
}
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
case "tool_use": {
|
|
85
|
+
const name = b.name ?? "";
|
|
86
|
+
const payload = {
|
|
87
|
+
detail: {
|
|
88
|
+
tool: name,
|
|
89
|
+
input_summary: summarizeInput(b.input),
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
if (isMcpToolName(name)) {
|
|
93
|
+
const parts = name.split("__");
|
|
94
|
+
payload.detail.kind = "mcp";
|
|
95
|
+
if (parts.length >= 3) {
|
|
96
|
+
payload.detail.server = parts[1];
|
|
97
|
+
payload.detail.tool_name = parts
|
|
98
|
+
.slice(2)
|
|
99
|
+
.join("__");
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
events.push({ kind: "progress", payload });
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
case "thinking":
|
|
106
|
+
// skip in default mode
|
|
107
|
+
break;
|
|
108
|
+
default:
|
|
109
|
+
// unknown block type — skip silently
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return { events };
|
|
114
|
+
}
|
|
115
|
+
function handleResult(msg) {
|
|
116
|
+
if (msg.is_error) {
|
|
117
|
+
return {
|
|
118
|
+
events: [
|
|
119
|
+
{
|
|
120
|
+
kind: "error",
|
|
121
|
+
payload: {
|
|
122
|
+
message: msg.result ?? "Claude reported is_error",
|
|
123
|
+
duration_ms: msg.duration_ms,
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
// Intentionally do NOT copy `msg.result` into `done.text`. Claude already
|
|
130
|
+
// emitted the final text as an `assistant.message.content[].text` block,
|
|
131
|
+
// which we turned into a `kind:message` event above. Repeating it on
|
|
132
|
+
// `done` makes GUI consumers render the answer twice.
|
|
133
|
+
return {
|
|
134
|
+
events: [
|
|
135
|
+
{
|
|
136
|
+
kind: "done",
|
|
137
|
+
payload: {
|
|
138
|
+
duration_ms: msg.duration_ms,
|
|
139
|
+
total_cost_usd: msg.total_cost_usd,
|
|
140
|
+
num_turns: msg.num_turns,
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
],
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Encode a channel user message into Claude stream-json stdin line(s).
|
|
148
|
+
*
|
|
149
|
+
* - Normal `message`: one line, `{type:"user", message:{...}}`
|
|
150
|
+
* - `tag === "interrupt"`: TWO lines —
|
|
151
|
+
* 1. `{type:"control_request", subtype:"interrupt"}`
|
|
152
|
+
* 2. `{type:"user", message:{...}}`
|
|
153
|
+
*
|
|
154
|
+
* The control_request IS accepted by Claude SDK (returns success), but
|
|
155
|
+
* probe tests show it does **not** reliably preempt in-flight LLM
|
|
156
|
+
* response generation — turn 1 still completes fully, then turn 2 picks
|
|
157
|
+
* up the new user message. So effective behavior on Claude is "next-turn
|
|
158
|
+
* redirect" not "mid-stream abort". For hard preempt use `channel kill`.
|
|
159
|
+
*
|
|
160
|
+
* Sending the control_request anyway is harmless and may abort tool
|
|
161
|
+
* calls / partial-message streams; future SDK fixes apply automatically.
|
|
162
|
+
* See research/probe-findings.md for the experimental evidence.
|
|
163
|
+
*/
|
|
164
|
+
export function encodeClaudeUserMessage(text, tag) {
|
|
165
|
+
const lines = [];
|
|
166
|
+
if (tag === "interrupt") {
|
|
167
|
+
lines.push(JSON.stringify({
|
|
168
|
+
type: "control_request",
|
|
169
|
+
request_id: `trellis-int-${Date.now()}-${Math.random()
|
|
170
|
+
.toString(36)
|
|
171
|
+
.slice(2, 8)}`,
|
|
172
|
+
request: { subtype: "interrupt" },
|
|
173
|
+
}));
|
|
174
|
+
}
|
|
175
|
+
lines.push(JSON.stringify({
|
|
176
|
+
type: "user",
|
|
177
|
+
message: {
|
|
178
|
+
role: "user",
|
|
179
|
+
content: [{ type: "text", text }],
|
|
180
|
+
},
|
|
181
|
+
}));
|
|
182
|
+
return lines.join("\n") + "\n";
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Build the Claude CLI args for `claude -p` in stream-json mode.
|
|
186
|
+
*/
|
|
187
|
+
export function buildClaudeArgs(opts) {
|
|
188
|
+
const args = [
|
|
189
|
+
"-p",
|
|
190
|
+
"--input-format",
|
|
191
|
+
"stream-json",
|
|
192
|
+
"--output-format",
|
|
193
|
+
"stream-json",
|
|
194
|
+
"--permission-mode",
|
|
195
|
+
"bypassPermissions",
|
|
196
|
+
"--dangerously-skip-permissions",
|
|
197
|
+
];
|
|
198
|
+
if (opts.verbose !== false)
|
|
199
|
+
args.push("--verbose");
|
|
200
|
+
if (opts.resumeSessionId)
|
|
201
|
+
args.push("--resume", opts.resumeSessionId);
|
|
202
|
+
if (opts.model)
|
|
203
|
+
args.push("--model", opts.model);
|
|
204
|
+
if (opts.systemPrompt?.trim()) {
|
|
205
|
+
args.push("--append-system-prompt", opts.systemPrompt);
|
|
206
|
+
}
|
|
207
|
+
return args;
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=claude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../../src/commands/channel/adapters/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { ParseResult } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Codex `app-server` adapter (JSON-RPC 2.0 over stdio).
|
|
4
|
+
*
|
|
5
|
+
* Wire shape (real data — see research/probes/codex/*.jsonl):
|
|
6
|
+
*
|
|
7
|
+
* Three inbound message kinds:
|
|
8
|
+
* 1. Response to our outgoing request: { id, result } | { id, error }, no method
|
|
9
|
+
* 2. Server-to-client request: { method, id, params } — must reply
|
|
10
|
+
* 3. Notification: { method, params } — fire-and-forget
|
|
11
|
+
*
|
|
12
|
+
* Outbound: initialize → thread/start → turn/start
|
|
13
|
+
*
|
|
14
|
+
* Translated events (per probe-findings.md):
|
|
15
|
+
* thread/start result.thread.id → persistThreadId + persistSessionId (same UUIDv7)
|
|
16
|
+
* item/started commandExecution → progress(tool=shell, cmd, status=inProgress)
|
|
17
|
+
* item/started mcpToolCall → progress(kind=mcp, server, tool, args_summary)
|
|
18
|
+
* item/started dynamicToolCall → progress(kind=dynamic, namespace, tool, args)
|
|
19
|
+
* item/started webSearch → progress(kind=web_search, query)
|
|
20
|
+
* item/started fileChange → progress(kind=file_change)
|
|
21
|
+
* item/completed agentMessage → say(text, phase)
|
|
22
|
+
* item/agentMessage/delta → progress(text_delta)
|
|
23
|
+
* item/completed commandExecution → optional progress(status, exitCode)
|
|
24
|
+
* item/started collabAgentToolCall → error(reason=collab_blocked, recommendation=set features.multi_agent=false)
|
|
25
|
+
* turn/completed → done
|
|
26
|
+
* turn/aborted → error(reason=aborted)
|
|
27
|
+
* warning → progress(kind=warning, message)
|
|
28
|
+
* mcpServer/elicitation/request → reply { action: accept, content: {} } (auto-allow)
|
|
29
|
+
*
|
|
30
|
+
* Notifications we skip silently:
|
|
31
|
+
* remoteControl/status/changed
|
|
32
|
+
* mcpServer/startupStatus/updated
|
|
33
|
+
* mcpServer/oauthLoginCompleted
|
|
34
|
+
* account/rateLimits/updated
|
|
35
|
+
* thread/tokenUsage/updated
|
|
36
|
+
* thread/status/changed
|
|
37
|
+
* thread/started (we record thread id from thread/start result instead)
|
|
38
|
+
* turn/started
|
|
39
|
+
* serverRequest/resolved
|
|
40
|
+
* ItemGuardianApprovalReview* (until channel supports human-in-loop)
|
|
41
|
+
*
|
|
42
|
+
* This module exposes:
|
|
43
|
+
* - parseCodexLine(line, ctx) — pure parser; ctx tracks pending outgoing ids
|
|
44
|
+
* - encodeCodexRequest / encodeCodexUserMessage — outbound framing helpers
|
|
45
|
+
* - buildCodexArgs — CLI args
|
|
46
|
+
* - createCodexCtx — state holder for pending ids
|
|
47
|
+
*/
|
|
48
|
+
export interface CodexCtx {
|
|
49
|
+
/** id → label tracking outgoing requests, so adapter can recognise their responses. */
|
|
50
|
+
pending: Map<number, "initialize" | "thread/start" | "turn/start" | "other">;
|
|
51
|
+
/** Last-known thread id (used to scope future requests). */
|
|
52
|
+
threadId?: string;
|
|
53
|
+
/** Monotonic outbound id allocator. */
|
|
54
|
+
nextId: number;
|
|
55
|
+
}
|
|
56
|
+
export declare function createCodexCtx(): CodexCtx;
|
|
57
|
+
export declare function parseCodexLine(line: string, ctx: CodexCtx): ParseResult;
|
|
58
|
+
export declare function encodeCodexRequest(ctx: CodexCtx, method: string, params: unknown, label?: "initialize" | "thread/start" | "turn/start" | "other"): {
|
|
59
|
+
id: number;
|
|
60
|
+
line: string;
|
|
61
|
+
};
|
|
62
|
+
export declare function encodeCodexUserMessage(ctx: CodexCtx, text: string, tag?: string): {
|
|
63
|
+
id: number;
|
|
64
|
+
line: string;
|
|
65
|
+
};
|
|
66
|
+
export declare function buildCodexArgs(opts: {
|
|
67
|
+
model?: string;
|
|
68
|
+
}): string[];
|
|
69
|
+
export declare function buildCodexThreadStartParams(cwd: string, systemPrompt?: string): Record<string, unknown>;
|
|
70
|
+
//# sourceMappingURL=codex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/adapters/codex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,MAAM,WAAW,QAAQ;IACvB,uFAAuF;IACvF,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc,GAAG,YAAY,GAAG,OAAO,CAAC,CAAC;IAC7E,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,cAAc,IAAI,QAAQ,CAEzC;AAqCD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,WAAW,CAqCvE;AA+WD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,EACf,KAAK,GAAE,YAAY,GAAG,cAAc,GAAG,YAAY,GAAG,OAAiB,GACtE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAK9B;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,GACX;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAqB9B;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,EAAE,CAIjE;AAED,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoBzB"}
|