@gkorepanov/ccodex 0.4.13 → 0.4.15
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 +1 -1
- package/config/compatibility.json +3 -3
- package/dist/claude/service.d.ts +1 -0
- package/dist/claude/service.js +102 -22
- package/dist/claude/service.js.map +1 -1
- package/dist/claude/session/commands.d.ts +2 -0
- package/dist/claude/session/providerRuntimeFactory.d.ts +1 -0
- package/dist/claude/session/providerRuntimeFactory.js +5 -0
- package/dist/claude/session/providerRuntimeFactory.js.map +1 -1
- package/dist/claude/session/session.d.ts +2 -0
- package/dist/claude/session/session.js +51 -12
- package/dist/claude/session/session.js.map +1 -1
- package/dist/claude/streamingFilePreview.d.ts +16 -0
- package/dist/claude/streamingFilePreview.js +206 -0
- package/dist/claude/streamingFilePreview.js.map +1 -0
- package/dist/claude/toolMapper.d.ts +1 -0
- package/dist/claude/toolMapper.js +2 -2
- package/dist/claude/toolMapper.js.map +1 -1
- package/dist/codex/generated/ClientRequest.d.ts +5 -0
- package/dist/codex/generated/PathUri.d.ts +3 -2
- package/dist/codex/generated/PlanType.d.ts +1 -1
- package/dist/codex/generated/ResponseItemRuntimeSchema.js +1 -1
- package/dist/codex/generated/v2/AppMetadata.d.ts +0 -1
- package/dist/codex/generated/v2/AppToolSummary.d.ts +3 -0
- package/dist/codex/generated/v2/BrowserUseRequirements.d.ts +3 -0
- package/dist/codex/generated/v2/BrowserUseRequirements.js +3 -0
- package/dist/codex/generated/v2/BrowserUseRequirements.js.map +1 -0
- package/dist/codex/generated/v2/ConfigBatchWriteParams.d.ts +3 -1
- package/dist/codex/generated/v2/ConfigRequirements.d.ts +11 -0
- package/dist/codex/generated/v2/ExternalAgentConfigDetectParams.d.ts +8 -0
- package/dist/codex/generated/v2/ExternalAgentConfigImportHistory.d.ts +1 -0
- package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordParams.d.ts +11 -0
- package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordParams.js +3 -0
- package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordParams.js.map +1 -0
- package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordResponse.d.ts +3 -0
- package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordResponse.js +3 -0
- package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordResponse.js.map +1 -0
- package/dist/codex/generated/v2/ExternalAgentConfigImportParams.d.ts +5 -0
- package/dist/codex/generated/v2/FeedbackRequirements.d.ts +3 -0
- package/dist/codex/generated/v2/FeedbackRequirements.js +3 -0
- package/dist/codex/generated/v2/FeedbackRequirements.js.map +1 -0
- package/dist/codex/generated/v2/PluginListParams.d.ts +4 -0
- package/dist/codex/generated/v2/PluginShareContext.d.ts +1 -0
- package/dist/codex/generated/v2/PluginShareSaveResponse.d.ts +1 -0
- package/dist/codex/generated/v2/SkillInterface.d.ts +8 -0
- package/dist/codex/generated/v2/Thread.d.ts +4 -0
- package/dist/codex/generated/v2/ThreadItem.d.ts +8 -0
- package/dist/codex/generated/v2/ThreadListParams.d.ts +4 -0
- package/dist/codex/generated/v2/ThreadMetadataUpdateParams.d.ts +4 -0
- package/dist/codex/generated/v2/ThreadRealtimeStartParams.d.ts +7 -0
- package/dist/codex/generated/v2/index.d.ts +4 -0
- package/dist/daemon/probe.js +1 -1
- package/dist/gateway/threadList.js +6 -2
- package/dist/gateway/threadList.js.map +1 -1
- package/dist/handoff/lineageStore.d.ts +9 -2
- package/dist/handoff/lineageStore.js +29 -10
- package/dist/handoff/lineageStore.js.map +1 -1
- package/dist/handoff/providerEpochs.js +5 -1
- package/dist/handoff/providerEpochs.js.map +1 -1
- package/dist/handoff/service.js +49 -12
- package/dist/handoff/service.js.map +1 -1
- package/dist/runtime/dependencies.js +1 -1
- package/dist/store/HybridStore.d.ts +2 -0
- package/dist/store/HybridStore.js +4 -0
- package/dist/store/HybridStore.js.map +1 -1
- package/dist/store/sqliteStore.js +11 -1
- package/dist/store/sqliteStore.js.map +1 -1
- package/dist/store/threadFilter.d.ts +1 -0
- package/dist/store/threadFilter.js +14 -2
- package/dist/store/threadFilter.js.map +1 -1
- package/legal/LICENSES.md +1 -1
- package/legal/THIRD_PARTY_NOTICES.md +97 -96
- package/package.json +5 -5
package/dist/handoff/service.js
CHANGED
|
@@ -89,7 +89,7 @@ function explicitPermissionParams(params, permissions) {
|
|
|
89
89
|
const { sandbox: _sandbox, sandboxPolicy: _sandboxPolicy, ...rest } = params;
|
|
90
90
|
return { ...rest, ...permissions };
|
|
91
91
|
}
|
|
92
|
-
function permissionSandbox(permissions, cwd, fallback) {
|
|
92
|
+
function permissionSandbox(permissions, cwd, fallback, runtimeWorkspaceRoots = [cwd]) {
|
|
93
93
|
if (permissions === ":danger-full-access")
|
|
94
94
|
return { type: "dangerFullAccess" };
|
|
95
95
|
if (permissions === ":read-only")
|
|
@@ -97,7 +97,7 @@ function permissionSandbox(permissions, cwd, fallback) {
|
|
|
97
97
|
if (permissions === ":workspace") {
|
|
98
98
|
return {
|
|
99
99
|
type: "workspaceWrite",
|
|
100
|
-
writableRoots: [cwd],
|
|
100
|
+
writableRoots: [...new Set([cwd, ...runtimeWorkspaceRoots])],
|
|
101
101
|
networkAccess: false,
|
|
102
102
|
excludeTmpdirEnvVar: false,
|
|
103
103
|
excludeSlashTmp: false,
|
|
@@ -105,13 +105,15 @@ function permissionSandbox(permissions, cwd, fallback) {
|
|
|
105
105
|
}
|
|
106
106
|
return fallback;
|
|
107
107
|
}
|
|
108
|
-
function canonicalSettings(source, staged, turn, cwd) {
|
|
108
|
+
function canonicalSettings(source, staged, turn, cwd, runtimeWorkspaceRoots) {
|
|
109
109
|
const permissions = explicitPermissions(source, staged, turn);
|
|
110
110
|
const { threadId: _threadId, ...merged } = { ...source, ...staged };
|
|
111
|
-
const sandbox = permissionSandbox(permissions.permissions, cwd, turn.sandboxPolicy ?? staged.sandboxPolicy ?? source.sandboxPolicy ?? source.sandbox);
|
|
111
|
+
const sandbox = permissionSandbox(permissions.permissions, cwd, turn.sandboxPolicy ?? staged.sandboxPolicy ?? source.sandboxPolicy ?? source.sandbox, runtimeWorkspaceRoots);
|
|
112
112
|
return {
|
|
113
113
|
...merged,
|
|
114
114
|
...permissions,
|
|
115
|
+
cwd,
|
|
116
|
+
runtimeWorkspaceRoots,
|
|
115
117
|
sandbox,
|
|
116
118
|
sandboxPolicy: sandbox,
|
|
117
119
|
activePermissionProfile: { id: permissions.permissions, extends: null },
|
|
@@ -400,6 +402,18 @@ export class CrossProviderForks {
|
|
|
400
402
|
const result = await this.withAdminLock(publicThreadId, () => stock.request(method, params));
|
|
401
403
|
return { provider: "stock", result: projectRpcToPublicThread({ result }, owner).result };
|
|
402
404
|
}
|
|
405
|
+
if (method === "thread/metadata/update") {
|
|
406
|
+
const metadata = publicParams;
|
|
407
|
+
const result = await this.withAdminLock(publicThreadId, async () => {
|
|
408
|
+
const response = await stock.request(method, params);
|
|
409
|
+
if (metadata.isPinned !== undefined && metadata.isPinned !== null
|
|
410
|
+
&& !this.lineage.updateTaskPinned(publicThreadId, metadata.isPinned)) {
|
|
411
|
+
throw new Error(`Unknown logical thread '${publicThreadId}'.`);
|
|
412
|
+
}
|
|
413
|
+
return response;
|
|
414
|
+
});
|
|
415
|
+
return { provider: "stock", result: projectRpcToPublicThread({ result }, owner).result };
|
|
416
|
+
}
|
|
403
417
|
if (method === "thread/read" || method === "thread/resume") {
|
|
404
418
|
const result = await stock.request(method, params);
|
|
405
419
|
const resume = method === "thread/resume" ? params : undefined;
|
|
@@ -518,9 +532,17 @@ export class CrossProviderForks {
|
|
|
518
532
|
}
|
|
519
533
|
}
|
|
520
534
|
if (method === "thread/metadata/update") {
|
|
535
|
+
const metadata = publicParams;
|
|
521
536
|
return {
|
|
522
537
|
provider: "claude",
|
|
523
|
-
result: await this.
|
|
538
|
+
result: await this.withAdminLock(publicThreadId, async () => {
|
|
539
|
+
const result = await this.claude.updateThreadMetadata(params);
|
|
540
|
+
if (metadata.isPinned !== undefined && metadata.isPinned !== null
|
|
541
|
+
&& !this.lineage.updateTaskPinned(publicThreadId, metadata.isPinned)) {
|
|
542
|
+
throw new Error(`Unknown logical thread '${publicThreadId}'.`);
|
|
543
|
+
}
|
|
544
|
+
return result;
|
|
545
|
+
}),
|
|
524
546
|
};
|
|
525
547
|
}
|
|
526
548
|
if (method === "thread/archive") {
|
|
@@ -992,7 +1014,7 @@ export class CrossProviderForks {
|
|
|
992
1014
|
: connectionId;
|
|
993
1015
|
const { source, summary, sourceTurns, developerInstructions, targetSettings, permissionSettings } = await this.providerSwitchMaterial(job, stock, workerConnectionId);
|
|
994
1016
|
if (job.targetProvider === "claude") {
|
|
995
|
-
const started = await this.claude.startHiddenThread(this.targetThreadStart(job, source.thread, developerInstructions, permissionSettings));
|
|
1017
|
+
const started = await this.claude.startHiddenThread(this.targetThreadStart(job, source.thread, developerInstructions, permissionSettings, targetSettings));
|
|
996
1018
|
target = { provider: "claude", threadId: started.thread.id };
|
|
997
1019
|
if (!this.store.checkpointProviderSwitchTarget(job.id, {
|
|
998
1020
|
backendThreadId: started.thread.id,
|
|
@@ -1030,7 +1052,7 @@ export class CrossProviderForks {
|
|
|
1030
1052
|
};
|
|
1031
1053
|
this.stockTargetBuilds.set(workerConnectionId, build);
|
|
1032
1054
|
const started = await stock.request("thread/start", {
|
|
1033
|
-
...this.targetThreadStart(job, source.thread, developerInstructions, permissionSettings),
|
|
1055
|
+
...this.targetThreadStart(job, source.thread, developerInstructions, permissionSettings, targetSettings),
|
|
1034
1056
|
threadSource: build.expectedThreadSource,
|
|
1035
1057
|
});
|
|
1036
1058
|
target = { provider: "stock", threadId: started.thread.id };
|
|
@@ -1223,7 +1245,7 @@ export class CrossProviderForks {
|
|
|
1223
1245
|
model: params.model,
|
|
1224
1246
|
modelProvider: params.modelProvider ?? "openai",
|
|
1225
1247
|
cwd: params.cwd ?? source.thread.cwd,
|
|
1226
|
-
...(params.runtimeWorkspaceRoots
|
|
1248
|
+
runtimeWorkspaceRoots: [...(params.runtimeWorkspaceRoots ?? source.runtimeWorkspaceRoots)],
|
|
1227
1249
|
...(params.serviceTier !== undefined ? { serviceTier: params.serviceTier } : {}),
|
|
1228
1250
|
...(params.approvalPolicy !== undefined ? { approvalPolicy: params.approvalPolicy } : {}),
|
|
1229
1251
|
...(params.approvalsReviewer !== undefined ? { approvalsReviewer: params.approvalsReviewer } : {}),
|
|
@@ -1770,7 +1792,10 @@ export class CrossProviderForks {
|
|
|
1770
1792
|
thread: source.thread,
|
|
1771
1793
|
backendTurns: source.turns,
|
|
1772
1794
|
turns: await this.visibleTurns(job.publicThreadId, source.turns, stock),
|
|
1773
|
-
settings:
|
|
1795
|
+
settings: {
|
|
1796
|
+
...source.settings,
|
|
1797
|
+
runtimeWorkspaceRoots: source.runtimeWorkspaceRoots,
|
|
1798
|
+
},
|
|
1774
1799
|
};
|
|
1775
1800
|
}
|
|
1776
1801
|
const [read, resume] = await Promise.all([
|
|
@@ -1795,6 +1820,13 @@ export class CrossProviderForks {
|
|
|
1795
1820
|
const summary = job.summary
|
|
1796
1821
|
?? await this.providerSwitchSummary(job, source.turns, stock, connectionId);
|
|
1797
1822
|
const cwd = job.turnParams.cwd ?? job.settings.cwd ?? source.thread.cwd;
|
|
1823
|
+
const sourceRoots = Array.isArray(source.settings.runtimeWorkspaceRoots)
|
|
1824
|
+
? source.settings.runtimeWorkspaceRoots
|
|
1825
|
+
: [source.thread.cwd];
|
|
1826
|
+
const runtimeWorkspaceRoots = job.turnParams.runtimeWorkspaceRoots !== undefined
|
|
1827
|
+
&& job.turnParams.runtimeWorkspaceRoots !== null
|
|
1828
|
+
? [...new Set(job.turnParams.runtimeWorkspaceRoots)]
|
|
1829
|
+
: [...new Set(sourceRoots.map((root) => root === source.thread.cwd ? cwd : root))];
|
|
1798
1830
|
const permissionSettings = explicitPermissions(source.settings, job.settings, job.turnParams);
|
|
1799
1831
|
const completedAt = Math.floor(Date.now() / 1_000);
|
|
1800
1832
|
const compactTurn = {
|
|
@@ -1814,7 +1846,7 @@ export class CrossProviderForks {
|
|
|
1814
1846
|
],
|
|
1815
1847
|
developerInstructions: handoffInstructions(source.developerInstructions, summary),
|
|
1816
1848
|
targetSettings: {
|
|
1817
|
-
...canonicalSettings(source.settings, job.settings, job.turnParams, cwd),
|
|
1849
|
+
...canonicalSettings(source.settings, job.settings, job.turnParams, cwd, runtimeWorkspaceRoots),
|
|
1818
1850
|
model: job.targetModel,
|
|
1819
1851
|
modelProvider: job.targetProvider === "claude" ? "claude" : "openai",
|
|
1820
1852
|
},
|
|
@@ -1849,13 +1881,18 @@ export class CrossProviderForks {
|
|
|
1849
1881
|
}
|
|
1850
1882
|
return (await this.summarizeStock({ threadId: resolved.epoch.backendThreadId }, turns, resolved.epoch.model, stock, connectionId)).summary;
|
|
1851
1883
|
}
|
|
1852
|
-
targetThreadStart(job, source, developerInstructions, permissionSettings) {
|
|
1884
|
+
targetThreadStart(job, source, developerInstructions, permissionSettings, targetSettings) {
|
|
1853
1885
|
const turn = job.turnParams;
|
|
1854
1886
|
const settings = job.settings;
|
|
1855
1887
|
return {
|
|
1856
1888
|
model: job.targetModel,
|
|
1857
1889
|
modelProvider: job.targetProvider === "claude" ? "claude" : "openai",
|
|
1858
|
-
cwd:
|
|
1890
|
+
cwd: typeof targetSettings.cwd === "string"
|
|
1891
|
+
? targetSettings.cwd
|
|
1892
|
+
: turn.cwd ?? settings.cwd ?? source.cwd,
|
|
1893
|
+
runtimeWorkspaceRoots: Array.isArray(targetSettings.runtimeWorkspaceRoots)
|
|
1894
|
+
? targetSettings.runtimeWorkspaceRoots
|
|
1895
|
+
: [source.cwd],
|
|
1859
1896
|
developerInstructions,
|
|
1860
1897
|
...permissionSettings,
|
|
1861
1898
|
...(turn.serviceTier !== undefined
|