@gkorepanov/ccodex 0.4.6 → 0.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -4
- package/config/compatibility.json +3 -3
- package/dist/claude/inputMapper.js +13 -3
- package/dist/claude/inputMapper.js.map +1 -1
- package/dist/claude/modelCatalog.d.ts +1 -0
- package/dist/claude/modelCatalog.js +18 -2
- package/dist/claude/modelCatalog.js.map +1 -1
- package/dist/claude/resultClassifier.d.ts +1 -0
- package/dist/claude/resultClassifier.js +10 -1
- package/dist/claude/resultClassifier.js.map +1 -1
- package/dist/claude/service.d.ts +2 -1
- package/dist/claude/service.js +5 -35
- package/dist/claude/service.js.map +1 -1
- package/dist/claude/session/commands.d.ts +8 -0
- package/dist/claude/session/providerFacts.d.ts +2 -0
- package/dist/claude/session/providerFacts.js +27 -1
- package/dist/claude/session/providerFacts.js.map +1 -1
- package/dist/claude/session/session.d.ts +2 -0
- package/dist/claude/session/session.js +39 -5
- package/dist/claude/session/session.js.map +1 -1
- package/dist/claude/skillCatalog.d.ts +18 -0
- package/dist/claude/skillCatalog.js +125 -0
- package/dist/claude/skillCatalog.js.map +1 -0
- package/dist/claude/skillCodec.d.ts +4 -0
- package/dist/claude/skillCodec.js +10 -0
- package/dist/claude/skillCodec.js.map +1 -0
- package/dist/claude/threadSettings.d.ts +4 -0
- package/dist/claude/threadSettings.js +35 -0
- package/dist/claude/threadSettings.js.map +1 -0
- package/dist/claude/toolMapper.d.ts +2 -2
- package/dist/claude/toolMapper.js +13 -5
- package/dist/claude/toolMapper.js.map +1 -1
- package/dist/cli/args.d.ts +3 -0
- package/dist/cli/args.js +4 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/delegate.js +1 -0
- package/dist/cli/delegate.js.map +1 -1
- package/dist/cli/main.js +21 -22
- package/dist/cli/main.js.map +1 -1
- package/dist/config/config.d.ts +1 -0
- package/dist/config/config.js +4 -1
- package/dist/config/config.js.map +1 -1
- package/dist/daemon/daemon.js +5 -4
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/supervisor.d.ts +1 -0
- package/dist/daemon/supervisor.js +13 -3
- package/dist/daemon/supervisor.js.map +1 -1
- package/dist/desktop/launchAgent.d.ts +26 -0
- package/dist/desktop/launchAgent.js +122 -0
- package/dist/desktop/launchAgent.js.map +1 -0
- package/dist/desktop/stdioFrontend.d.ts +9 -0
- package/dist/desktop/stdioFrontend.js +305 -0
- package/dist/desktop/stdioFrontend.js.map +1 -0
- package/dist/gateway/clientConnection.d.ts +2 -1
- package/dist/gateway/clientConnection.js +13 -2
- package/dist/gateway/clientConnection.js.map +1 -1
- package/dist/gateway/server.js +10 -3
- package/dist/gateway/server.js.map +1 -1
- package/dist/gateway/skillList.d.ts +9 -0
- package/dist/gateway/skillList.js +24 -0
- package/dist/gateway/skillList.js.map +1 -0
- package/dist/gateway/subscriptions.d.ts +1 -0
- package/dist/gateway/subscriptions.js +4 -0
- package/dist/gateway/subscriptions.js.map +1 -1
- package/dist/handoff/service.d.ts +1 -1
- package/dist/handoff/service.js +109 -47
- package/dist/handoff/service.js.map +1 -1
- package/dist/handoff/store.d.ts +1 -0
- package/dist/handoff/store.js +13 -1
- package/dist/handoff/store.js.map +1 -1
- package/dist/management/doctor.js +31 -2
- package/dist/management/doctor.js.map +1 -1
- package/dist/management/lifecycle.js +80 -26
- package/dist/management/lifecycle.js.map +1 -1
- package/dist/management/setup.d.ts +3 -0
- package/dist/management/setup.js +75 -94
- package/dist/management/setup.js.map +1 -1
- package/dist/management/shellRouting.d.ts +14 -0
- package/dist/management/shellRouting.js +64 -0
- package/dist/management/shellRouting.js.map +1 -0
- package/dist/management/shims.d.ts +16 -3
- package/dist/management/shims.js +67 -12
- package/dist/management/shims.js.map +1 -1
- package/examples/config.toml +3 -0
- package/legal/LICENSES.md +1 -1
- package/legal/THIRD_PARTY_NOTICES.md +9 -9
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -43,6 +43,8 @@ missing bridge.
|
|
|
43
43
|
a compact context handoff, so your chat doesn't start from zero.
|
|
44
44
|
- ⚡ **Native-feeling Codex features** — threads, turns, tools, approvals, `/compact`,
|
|
45
45
|
Fork, effort and fast-mode settings all work with Claude models like they were built in.
|
|
46
|
+
- 🧩 **Claude skills in `$` autocomplete** — project and user skills appear beside Codex
|
|
47
|
+
skills and invoke Claude's native slash commands.
|
|
46
48
|
- 📊 **Status commands** — `/ccstatus` shows provider health and quotas for ❋ Claude
|
|
47
49
|
and ֎ Codex; `/ccstate` shows the current task's model, context, traffic, cost, and
|
|
48
50
|
session stats.
|
|
@@ -117,16 +119,44 @@ commands to your global Codex installation:
|
|
|
117
119
|
|
|
118
120
|
Setup is deliberately **fail-closed and transactional**: it validates the platform,
|
|
119
121
|
exact runtimes, and provider availability before atomically activating a new version.
|
|
120
|
-
A failed install or update leaves your previous version
|
|
121
|
-
|
|
122
|
+
A failed install or update leaves your previous version running. Setup never interrupts
|
|
123
|
+
an active App session; the new version takes over on the next reconnect.
|
|
124
|
+
|
|
125
|
+
### Local Codex App (same-Mac)
|
|
126
|
+
|
|
127
|
+
Over SSH the App resolves `codex` through your `PATH`, so the shim engages. The **local
|
|
128
|
+
Codex App**, however, launches its bundled `codex app-server` directly and ignores
|
|
129
|
+
`PATH`, so ccodex never sees it and no `claude:*` models appear. On macOS `ccodex setup`
|
|
130
|
+
closes that gap without ever touching the signed `.app` bundle (so Sparkle auto-updates
|
|
131
|
+
keep working):
|
|
132
|
+
|
|
133
|
+
- `ccodex setup` points the App at ccodex automatically via
|
|
134
|
+
`CODEX_CLI_PATH=~/.ccodex/bin/codex` — it runs `launchctl setenv` for the live
|
|
135
|
+
session, installs a one-shot login LaunchAgent (`dev.ccodex.codex-cli-path`) so the GUI
|
|
136
|
+
session re-publishes it on every login/reboot, and exports it in the managed shell
|
|
137
|
+
blocks for terminal-launched instances. The same managed `codex` entrypoint is used
|
|
138
|
+
locally and over SSH. **Fully quit the Codex App (`Cmd+Q`) and relaunch it**
|
|
139
|
+
(or log out and back in) so it picks up the variable.
|
|
140
|
+
- A bare `app-server` launch runs a thin **stdio frontend**: it forwards the App's
|
|
141
|
+
newline-delimited JSON to the existing app-server-control socket, lazily starts the
|
|
142
|
+
gateway when cold, and reconnects after gateway restarts. Provider state and lifecycle
|
|
143
|
+
remain exclusively inside the existing gateway.
|
|
144
|
+
- There is **no extra macOS gateway service**. The same PID-managed gateway used over SSH
|
|
145
|
+
starts lazily when the App connects and stops through the existing daemon contract.
|
|
146
|
+
Setup/update/rollback only switch files and ask you to reconnect; they never restart a
|
|
147
|
+
live gateway underneath a task.
|
|
148
|
+
- `ccodex uninstall` removes the login hook, restores any previous `CODEX_CLI_PATH`,
|
|
149
|
+
strips the managed shell export, and stops only CCodex's own PID-managed gateway.
|
|
150
|
+
Modified files are preserved. `ccodex doctor --deep` reports the entrypoint and login
|
|
151
|
+
hook separately from gateway health.
|
|
122
152
|
|
|
123
153
|
## Technical details
|
|
124
154
|
|
|
125
155
|
| | |
|
|
126
156
|
|---|---|
|
|
127
|
-
| **CCodex** | `0.4.
|
|
157
|
+
| **CCodex** | `0.4.8` |
|
|
128
158
|
| **Embedded Codex CLI** | `0.144.6` (pinned; a newer global Codex never replaces it) |
|
|
129
|
-
| **Claude Agent SDK / Claude Code** | `0.3.
|
|
159
|
+
| **Claude Agent SDK / Claude Code** | `0.3.219` / `2.1.219` |
|
|
130
160
|
| **Runtime** | Node.js `>=22.13 <27`, npm `>=10` |
|
|
131
161
|
| **Platforms** | macOS 11+ (arm64) · Linux arm64 & x64, glibc ≥2.31 (Ubuntu 22.04+, Debian 11+, Fedora/RHEL equivalents). Alpine/musl not supported |
|
|
132
162
|
| **Shells** | Bash, Zsh, Fish |
|
|
@@ -146,6 +176,7 @@ Return only the title.
|
|
|
146
176
|
[features]
|
|
147
177
|
status_command = false # forward /ccstatus and /ccstate to the provider as plain messages
|
|
148
178
|
optimistic_side_startup = true # open `/side` immediately while provider context is prepared
|
|
179
|
+
claude_skills = true # expose Claude skills in the Codex App `$` autocomplete
|
|
149
180
|
```
|
|
150
181
|
|
|
151
182
|
Remove or comment out `rename_prompt` for byte-compatible stock Codex title generation.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"productVersion": "0.4.
|
|
3
|
+
"productVersion": "0.4.8",
|
|
4
4
|
"node": ">=22.13 <27",
|
|
5
5
|
"codexCli": "0.144.6",
|
|
6
6
|
"codexGitRevision": "1e66aaa95b5ab39d3ef3057cd50bdecd576a8356",
|
|
7
|
-
"claudeAgentSdk": "0.3.
|
|
8
|
-
"claudeCode": "2.1.
|
|
7
|
+
"claudeAgentSdk": "0.3.219",
|
|
8
|
+
"claudeCode": "2.1.219",
|
|
9
9
|
"protocolFixture": "codex-0.144.4",
|
|
10
10
|
"relayPackages": {
|
|
11
11
|
"darwin-arm64": "@gkorepanov/ccodex-relay-darwin-arm64",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { readFile, realpath } from "node:fs/promises";
|
|
2
2
|
import { extname, isAbsolute, relative, resolve } from "node:path";
|
|
3
3
|
import { invalidParams } from "../protocol/errors.js";
|
|
4
|
+
import { decodeClaudeSkillChips } from "./skillCodec.js";
|
|
4
5
|
const mediaTypes = {
|
|
5
6
|
".gif": "image/gif",
|
|
6
7
|
".jpeg": "image/jpeg",
|
|
@@ -28,9 +29,13 @@ async function allowedImagePath(path, context) {
|
|
|
28
29
|
}
|
|
29
30
|
export async function mapUserInput(input, uuid, context) {
|
|
30
31
|
const content = [];
|
|
32
|
+
let decodedSkill = false;
|
|
31
33
|
for (const item of input) {
|
|
32
|
-
if (item.type === "text")
|
|
33
|
-
|
|
34
|
+
if (item.type === "text") {
|
|
35
|
+
const decoded = decodeClaudeSkillChips(item.text);
|
|
36
|
+
decodedSkill ||= decoded.decoded;
|
|
37
|
+
content.push({ type: "text", text: decoded.text });
|
|
38
|
+
}
|
|
34
39
|
else if (item.type === "mention") {
|
|
35
40
|
content.push({ type: "text", text: `@${item.name} (${item.path})` });
|
|
36
41
|
}
|
|
@@ -63,7 +68,12 @@ export async function mapUserInput(input, uuid, context) {
|
|
|
63
68
|
parent_tool_use_id: null,
|
|
64
69
|
...(uuid ? { uuid } : {}),
|
|
65
70
|
...(context?.origin === "human" ? { origin: { kind: "human" } } : {}),
|
|
66
|
-
message: {
|
|
71
|
+
message: {
|
|
72
|
+
role: "user",
|
|
73
|
+
content: decodedSkill && content.every((block) => block.type === "text")
|
|
74
|
+
? content.map((block) => block.text).join("")
|
|
75
|
+
: content,
|
|
76
|
+
},
|
|
67
77
|
};
|
|
68
78
|
}
|
|
69
79
|
//# sourceMappingURL=inputMapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputMapper.js","sourceRoot":"","sources":["../../src/claude/inputMapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGnE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"inputMapper.js","sourceRoot":"","sources":["../../src/claude/inputMapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import type { HybridConfig } from "../config/config.js";
|
|
|
4
4
|
import type { Logger } from "../observability/logger.js";
|
|
5
5
|
import { MetricsRegistry } from "../observability/metrics.js";
|
|
6
6
|
export declare function assertClaudeControlSurface(value: unknown): asserts value is Query;
|
|
7
|
+
export declare function claudeModelDisplayName(model: ModelInfo): string;
|
|
7
8
|
export declare function mapClaudeModel(model: ModelInfo, prefix: string): Model;
|
|
8
9
|
export declare class ClaudeModelCatalog {
|
|
9
10
|
private readonly config;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { query } from "@anthropic-ai/claude-agent-sdk";
|
|
2
2
|
import { MetricsRegistry } from "../observability/metrics.js";
|
|
3
|
-
import { modelCatalogValue } from "./modelSelection.js";
|
|
3
|
+
import { modelCatalogValue, normalizeClaudeModelIdentifier } from "./modelSelection.js";
|
|
4
4
|
import { claudeEnvironment } from "./environment.js";
|
|
5
5
|
const effortDescriptions = {
|
|
6
6
|
low: "Faster responses with less reasoning.",
|
|
@@ -24,6 +24,22 @@ function defaultEffort(levels) {
|
|
|
24
24
|
return "medium";
|
|
25
25
|
return levels[0] ?? "medium";
|
|
26
26
|
}
|
|
27
|
+
export function claudeModelDisplayName(model) {
|
|
28
|
+
const resolved = model.resolvedModel && normalizeClaudeModelIdentifier(model.resolvedModel);
|
|
29
|
+
const version = resolved && /^claude-([a-z][a-z0-9]*?)-(\d+)(?:-(\d{1,2})(?=-|$))?/u.exec(resolved);
|
|
30
|
+
if (!version)
|
|
31
|
+
return model.displayName;
|
|
32
|
+
const [, family, major, minor] = version;
|
|
33
|
+
const label = `${family[0].toUpperCase()}${family.slice(1)} ${major}${minor ? `.${minor}` : ""}`;
|
|
34
|
+
if (model.displayName.toLocaleLowerCase().includes(label.toLocaleLowerCase()))
|
|
35
|
+
return model.displayName;
|
|
36
|
+
if (model.displayName.toLocaleLowerCase().startsWith(family)) {
|
|
37
|
+
return `${model.displayName.slice(0, family.length)} ${major}${minor ? `.${minor}` : ""}${model.displayName.slice(family.length)}`;
|
|
38
|
+
}
|
|
39
|
+
return model.displayName.startsWith("Default")
|
|
40
|
+
? `Default (recommended · ${label})`
|
|
41
|
+
: `${model.displayName} · ${label}`;
|
|
42
|
+
}
|
|
27
43
|
export function mapClaudeModel(model, prefix) {
|
|
28
44
|
const efforts = model.supportsEffort ? (model.supportedEffortLevels ?? []) : [];
|
|
29
45
|
const serviceTiers = model.supportsFastMode
|
|
@@ -39,7 +55,7 @@ export function mapClaudeModel(model, prefix) {
|
|
|
39
55
|
upgrade: null,
|
|
40
56
|
upgradeInfo: null,
|
|
41
57
|
availabilityNux: null,
|
|
42
|
-
displayName: model
|
|
58
|
+
displayName: claudeModelDisplayName(model),
|
|
43
59
|
description: model.description,
|
|
44
60
|
hidden: false,
|
|
45
61
|
supportedReasoningEfforts: efforts.map((reasoningEffort) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modelCatalog.js","sourceRoot":"","sources":["../../src/claude/modelCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAmD,MAAM,gCAAgC,CAAC;AAIxG,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"modelCatalog.js","sourceRoot":"","sources":["../../src/claude/modelCatalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ export interface ClaudeResultInput {
|
|
|
10
10
|
readonly result?: string;
|
|
11
11
|
readonly errors?: readonly string[];
|
|
12
12
|
readonly terminal_reason?: string | null;
|
|
13
|
+
readonly api_error_status?: number | null;
|
|
13
14
|
}
|
|
14
15
|
export declare function classifyClaudeRuntimeError(message: string): CodexErrorInfo;
|
|
15
16
|
export declare function classifyClaudeResult(message: ClaudeResultInput, providerError?: string): ClaudeResultClassification;
|
|
@@ -30,6 +30,13 @@ function providerErrorInfo(providerError, message) {
|
|
|
30
30
|
return "badRequest";
|
|
31
31
|
return undefined;
|
|
32
32
|
}
|
|
33
|
+
function httpErrorInfo(status) {
|
|
34
|
+
if (status === 429)
|
|
35
|
+
return "usageLimitExceeded";
|
|
36
|
+
if (status === 529)
|
|
37
|
+
return "serverOverloaded";
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
33
40
|
export function classifyClaudeRuntimeError(message) {
|
|
34
41
|
if (/disconnect|stream.*closed|exited before|eof/i.test(message)) {
|
|
35
42
|
return { responseStreamDisconnected: { httpStatusCode: null } };
|
|
@@ -48,7 +55,9 @@ export function classifyClaudeResult(message, providerError) {
|
|
|
48
55
|
const interrupted = message.terminal_reason === "aborted_tools" || message.terminal_reason === "aborted_streaming" ||
|
|
49
56
|
errors.some((value) => value.toLocaleLowerCase().includes("interrupt") || value.toLocaleLowerCase().includes("abort"));
|
|
50
57
|
const error = errors[0];
|
|
51
|
-
const codexErrorInfo = interrupted
|
|
58
|
+
const codexErrorInfo = interrupted
|
|
59
|
+
? undefined
|
|
60
|
+
: providerErrorInfo(providerError, error) ?? httpErrorInfo(message.api_error_status);
|
|
52
61
|
return {
|
|
53
62
|
status: interrupted ? "interrupted" : "failed",
|
|
54
63
|
...(error ? { error } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resultClassifier.js","sourceRoot":"","sources":["../../src/claude/resultClassifier.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"resultClassifier.js","sourceRoot":"","sources":["../../src/claude/resultClassifier.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AAiBxC,SAAS,iBAAiB,CAAC,aAAiC,EAAE,OAA2B;IACvF,IAAI,aAAa,KAAK,uBAAuB,IAAI,aAAa,KAAK,uBAAuB;QAAE,OAAO,cAAc,CAAC;IAClH,IAAI,aAAa,KAAK,eAAe,IAAI,aAAa,KAAK,YAAY;QAAE,OAAO,oBAAoB,CAAC;IACrG,IAAI,aAAa,KAAK,YAAY;QAAE,OAAO,kBAAkB,CAAC;IAC9D,IAAI,aAAa,KAAK,cAAc;QAAE,OAAO,qBAAqB,CAAC;IACnE,IAAI,aAAa,KAAK,iBAAiB,IAAI,aAAa,KAAK,iBAAiB,IAAI,aAAa,KAAK,mBAAmB;QAAE,OAAO,YAAY,CAAC;IAC7I,IAAI,aAAa,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,OAAO,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,YAAY,CAAC;IAC3G,IAAI,OAAO,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,oBAAoB,CAAC;IACpH,IAAI,OAAO,IAAI,CAAC,GAAG,yBAAyB,EAAE,GAAG,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACtH,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IACtD,IAAI,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,cAAc,CAAC;IACzE,IAAI,yCAAyC,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,oBAAoB,CAAC;IAC5F,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,kBAAkB,CAAC;IAC3D,IAAI,oCAAoC,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,YAAY,CAAC;IAC/E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,MAAiC;IACtD,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,oBAAoB,CAAC;IAChD,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,kBAAkB,CAAC;IAC9C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAe;IACxD,IAAI,8CAA8C,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjE,OAAO,EAAE,0BAA0B,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,CAAC;IAClE,CAAC;IACD,IAAI,4CAA4C,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/D,OAAO,EAAE,oBAAoB,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,CAAC;IAC5D,CAAC;IACD,OAAO,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAA0B,EAC1B,aAAsB;IAEtB,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,aAAa;QAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACzG,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,KAAK,SAAS;QAC1C,CAAC,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpF,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IACzB,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,KAAK,eAAe,IAAI,OAAO,CAAC,eAAe,KAAK,mBAAmB;QAChH,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACzH,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,cAAc,GAAG,WAAW;QAChC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,iBAAiB,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACvF,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ;QAC9C,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9C,CAAC;AACJ,CAAC"}
|
package/dist/claude/service.d.ts
CHANGED
|
@@ -78,6 +78,7 @@ export declare class ClaudeService {
|
|
|
78
78
|
private readonly transcripts;
|
|
79
79
|
private readonly threadAdminEffects;
|
|
80
80
|
private readonly availabilityProbe;
|
|
81
|
+
private readonly skillsChanged?;
|
|
81
82
|
private readonly ephemeralReleases;
|
|
82
83
|
private readonly ephemeralReleaseTimers;
|
|
83
84
|
private readonly removalRetries;
|
|
@@ -92,7 +93,7 @@ export declare class ClaudeService {
|
|
|
92
93
|
private closing;
|
|
93
94
|
private closePromise;
|
|
94
95
|
private standaloneStatusRead;
|
|
95
|
-
constructor(config: HybridConfig, hub: SubscriptionHub, logger: Logger, durableStore?: HybridStore, queryFactory?: ClaudeQueryFactory, modelCatalog?: ModelCatalog | undefined, metrics?: MetricsRegistry, transcripts?: TranscriptBrancher, threadAdminEffects?: ClaudeThreadAdminEffects, shellRunner?: ShellRunner, availabilityProbe?: ProviderAvailabilityProbe);
|
|
96
|
+
constructor(config: HybridConfig, hub: SubscriptionHub, logger: Logger, durableStore?: HybridStore, queryFactory?: ClaudeQueryFactory, modelCatalog?: ModelCatalog | undefined, metrics?: MetricsRegistry, transcripts?: TranscriptBrancher, threadAdminEffects?: ClaudeThreadAdminEffects, shellRunner?: ShellRunner, availabilityProbe?: ProviderAvailabilityProbe, skillsChanged?: ((cwd: string) => void) | undefined);
|
|
96
97
|
ownsThread(threadId: string): boolean;
|
|
97
98
|
ready(): Promise<void>;
|
|
98
99
|
ownsModel(modelId: string): boolean;
|
package/dist/claude/service.js
CHANGED
|
@@ -22,6 +22,7 @@ import { ClaudeSessionRegistry } from "./sessionRegistry.js";
|
|
|
22
22
|
import { validateResponseItems } from "./responseItemValidation.js";
|
|
23
23
|
import { providerUnavailableMessage, } from "../runtime/providerAvailability.js";
|
|
24
24
|
import { isCCodexStateCommand, stateModelName, } from "../state/stateCommand.js";
|
|
25
|
+
import { syncedCollaborationMode, threadSettings } from "./threadSettings.js";
|
|
25
26
|
async function* idleUsagePrompt(signal) {
|
|
26
27
|
if (signal.aborted)
|
|
27
28
|
return;
|
|
@@ -46,13 +47,6 @@ function existingThreadCwd(value) {
|
|
|
46
47
|
}
|
|
47
48
|
throw invalidParams(`Claude thread cwd '${cwd}' does not exist or is not a directory.`);
|
|
48
49
|
}
|
|
49
|
-
function syncedCollaborationMode(value, model, effort) {
|
|
50
|
-
const mode = (value ?? {
|
|
51
|
-
mode: "default",
|
|
52
|
-
settings: { model, reasoning_effort: effort, developer_instructions: null },
|
|
53
|
-
});
|
|
54
|
-
return { ...mode, settings: { ...mode.settings, model, reasoning_effort: effort } };
|
|
55
|
-
}
|
|
56
50
|
function turnReasoningEffort(params) {
|
|
57
51
|
return params.collaborationMode?.settings.reasoning_effort ?? params.effort ?? undefined;
|
|
58
52
|
}
|
|
@@ -78,36 +72,9 @@ function permissionProfileSandboxPolicy(profile, cwd) {
|
|
|
78
72
|
return sandboxPolicy("danger-full-access", cwd);
|
|
79
73
|
throw invalidParams(`Claude threads do not support Codex permission profile '${profile}'.`);
|
|
80
74
|
}
|
|
81
|
-
function activePermissionProfile(policy) {
|
|
82
|
-
if (policy.type === "readOnly")
|
|
83
|
-
return { id: ":read-only", extends: null };
|
|
84
|
-
if (policy.type === "workspaceWrite")
|
|
85
|
-
return { id: ":workspace", extends: null };
|
|
86
|
-
if (policy.type === "dangerFullAccess")
|
|
87
|
-
return { id: ":danger-full-access", extends: null };
|
|
88
|
-
return null;
|
|
89
|
-
}
|
|
90
75
|
function approvalsReviewer(value, fallback = "user") {
|
|
91
76
|
return value ?? fallback;
|
|
92
77
|
}
|
|
93
|
-
function threadSettings(record) {
|
|
94
|
-
const sandboxPolicy = record.sandboxPolicy;
|
|
95
|
-
return {
|
|
96
|
-
cwd: record.thread.cwd,
|
|
97
|
-
approvalPolicy: record.approvalPolicy,
|
|
98
|
-
approvalsReviewer: record.approvalsReviewer,
|
|
99
|
-
sandboxPolicy,
|
|
100
|
-
activePermissionProfile: activePermissionProfile(sandboxPolicy),
|
|
101
|
-
model: record.modelPickerId,
|
|
102
|
-
modelProvider: "claude",
|
|
103
|
-
serviceTier: record.serviceTier,
|
|
104
|
-
effort: record.reasoningEffort,
|
|
105
|
-
summary: record.reasoningSummary,
|
|
106
|
-
collaborationMode: syncedCollaborationMode(record.collaborationMode, record.modelPickerId, record.reasoningEffort),
|
|
107
|
-
multiAgentMode: "explicitRequestOnly",
|
|
108
|
-
personality: record.personality,
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
78
|
function threadResponse(record, includeTurns) {
|
|
112
79
|
const { sandboxPolicy: sandbox, effort: reasoningEffort, summary: _summary, collaborationMode: _collaborationMode, personality: _personality, ...settings } = threadSettings(record);
|
|
113
80
|
return {
|
|
@@ -201,6 +168,7 @@ export class ClaudeService {
|
|
|
201
168
|
transcripts;
|
|
202
169
|
threadAdminEffects;
|
|
203
170
|
availabilityProbe;
|
|
171
|
+
skillsChanged;
|
|
204
172
|
ephemeralReleases = new Map();
|
|
205
173
|
ephemeralReleaseTimers = new Map();
|
|
206
174
|
removalRetries = new Map();
|
|
@@ -218,7 +186,7 @@ export class ClaudeService {
|
|
|
218
186
|
constructor(config, hub, logger, durableStore = new SqliteHybridStore(join(config.dataDir, "state.sqlite")), queryFactory = createClaudeQuery, modelCatalog, metrics = new MetricsRegistry(), transcripts = new SdkTranscriptBrancher(), threadAdminEffects = sdkThreadAdminEffects, shellRunner = new ShellRunner(), availabilityProbe = async () => ({
|
|
219
187
|
provider: "claude",
|
|
220
188
|
state: "ready",
|
|
221
|
-
})) {
|
|
189
|
+
}), skillsChanged) {
|
|
222
190
|
this.config = config;
|
|
223
191
|
this.hub = hub;
|
|
224
192
|
this.logger = logger;
|
|
@@ -228,6 +196,7 @@ export class ClaudeService {
|
|
|
228
196
|
this.transcripts = transcripts;
|
|
229
197
|
this.threadAdminEffects = threadAdminEffects;
|
|
230
198
|
this.availabilityProbe = availabilityProbe;
|
|
199
|
+
this.skillsChanged = skillsChanged;
|
|
231
200
|
this.store = new LayeredHybridStore(durableStore);
|
|
232
201
|
const sessionRepository = new ClaudeSessionRepository(this.store);
|
|
233
202
|
this.sessionOutput = new ClaudeOutputAdapter(hub);
|
|
@@ -239,6 +208,7 @@ export class ClaudeService {
|
|
|
239
208
|
transcripts: this.transcripts,
|
|
240
209
|
rateLimits: this.rateLimits,
|
|
241
210
|
invalidateModelCatalog: () => this.modelCatalog?.invalidate?.(),
|
|
211
|
+
...(this.skillsChanged ? { skillsChanged: this.skillsChanged } : {}),
|
|
242
212
|
isClosing: () => this.closing,
|
|
243
213
|
persistUserSideSessions: this.config.features?.sideChatPromotion ?? true,
|
|
244
214
|
interactiveQuestions: this.config.features?.interactiveQuestions ?? true,
|