@platless/axom-cli 0.5.9 → 0.6.52
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 +25 -6
- package/dist/axom-patch/cli/README.md +129 -12
- package/dist/axom-patch/cli/account-limits/generate.py +15 -12
- package/dist/axom-patch/cli/account-limits/kimi-proxy.mjs +20 -3
- package/dist/axom-patch/cli/claude-account-limits.json +9 -9
- package/dist/axom-patch/cli/claude-replay-lifecycle.json +16 -0
- package/dist/axom-patch/cli/codex-account-limits.json +11 -11
- package/dist/axom-patch/cli/codex-terminal-output.json +16 -0
- package/dist/axom-patch/cli/commandcode-account-limits.json +9 -9
- package/dist/axom-patch/cli/kimi-quota.mjs +12 -0
- package/dist/axom-patch/cli/kimi-subagents.mjs +173 -0
- package/dist/axom-patch/cli/nightly-task.md +55 -13
- package/dist/axom-patch/cli/probes/claude-replay-lifecycle.mjs +31 -0
- package/dist/axom-patch/cli/probes/codex-terminal-output.mjs +33 -0
- package/dist/axom-patch/cli/probes/kimi-subagent-subwork.mjs +82 -0
- package/dist/axom-patch/cli/probes/zcode-env-account.mjs +81 -0
- package/dist/axom-patch/cli/probes/zcode-subagent-subwork.mjs +7 -0
- package/dist/axom-patch/cli/qoder/dist/axom-acp-compat.mjs +1687 -0
- package/dist/axom-patch/cli/qoder/releases/1.1.75.json +277 -0
- package/dist/axom-patch/cli/qoder-background-terminal.md +13 -6
- package/dist/axom-patch/cli/qoder-foreground-output.md +14 -8
- package/dist/axom-patch/cli/qoder-native-acp.json +227 -0
- package/dist/axom-patch/cli/qoder-steering.md +20 -25
- package/dist/axom-patch/cli/qoder-subagent-subwork.md +17 -68
- package/dist/axom-patch/cli/runtime.json +19 -19
- package/dist/axom-patch/cli/zcode/env-account.mjs +13 -0
- package/dist/axom-patch/cli/zcode/generate-env-account.py +52 -0
- package/dist/axom-patch/cli/zcode-account-limits.json +10 -11
- package/dist/axom-patch/cli/zcode-env-account.json +58 -0
- package/dist/axom-patch/cli/zcode-models.json +9 -10
- package/dist/axom-patch/cli/zcode-subagent-subwork.json +10 -11
- package/dist/cli.js +11 -45
- package/dist/commands/auth.js +4 -1
- package/dist/commands/knowledge.js +47 -0
- package/dist/commands/update.js +126 -3
- package/dist/commands/workstation.js +101 -164
- package/dist/commands/workstationRegistrations.js +116 -0
- package/dist/credentialBroker.js +13 -2
- package/dist/credentials.js +16 -0
- package/dist/install/claude/commands.js +15 -15
- package/dist/keepers/terminal/keeper.mjs +1089 -673
- package/dist/keepers/terminal/manifest.json +4 -4
- package/dist/mcp.js +1 -1
- package/dist/native/darwin-x64/axom-quic +0 -0
- package/dist/workstation/acp/acpAgents.js +113 -102
- package/dist/workstation/acp/acpClient.js +26 -0
- package/dist/workstation/acp/builds/install/npm.js +99 -10
- package/dist/workstation/acp/initializeResponse.js +6 -1
- package/dist/workstation/acp/managedPatches.js +189 -25
- package/dist/workstation/acp/managedRuntime.js +314 -0
- package/dist/workstation/acp/outbox.js +12 -5
- package/dist/workstation/acp/patchAssets.js +40 -0
- package/dist/workstation/acp/permission.js +2 -2
- package/dist/workstation/acp/processor/checkpoint.js +26 -34
- package/dist/workstation/acp/processor/control.js +7 -80
- package/dist/workstation/acp/processor/jsonrpc.js +8 -0
- package/dist/workstation/acp/processor/runtime.js +5 -81
- package/dist/workstation/acp/processor/session.js +54 -82
- package/dist/workstation/acp/processor/state.js +7 -13
- package/dist/workstation/acp/processor/step.js +3 -20
- package/dist/workstation/acp/processor/test/fixtureLog.js +9 -16
- package/dist/workstation/acp/processor/transport/local.js +19 -3
- package/dist/workstation/acp/processor/updates.js +156 -105
- package/dist/workstation/acp/processorSession.js +20 -173
- package/dist/workstation/acp/registry/catalog.js +65 -39
- package/dist/workstation/acp/registry/launch.js +16 -1
- package/dist/workstation/acp/switching.js +0 -3
- package/dist/workstation/acp/test/fakeAgent.js +13 -0
- package/dist/workstation/acp/test/keeperWorld.js +32 -3
- package/dist/workstation/acp/test/raw/sources.js +16 -130
- package/dist/workstation/acp/test/realAdapter.js +1 -47
- package/dist/workstation/acp/test/scriptAgent.js +11 -3
- package/dist/workstation/agentFlow.js +1 -1
- package/dist/workstation/agentSessions.js +114 -166
- package/dist/workstation/channels/agent.js +9 -1
- package/dist/workstation/channels/computer.js +27 -4
- package/dist/workstation/channels/management.js +130 -15
- package/dist/workstation/channels/url.js +1 -1
- package/dist/workstation/config.js +33 -9
- package/dist/workstation/connection/encryptedChannel.js +4 -1
- package/dist/workstation/control/bindingStore.js +204 -0
- package/dist/workstation/control/commands.js +125 -0
- package/dist/workstation/control/daemonIdentity.js +143 -0
- package/dist/workstation/control/deviceCommands.js +191 -0
- package/dist/workstation/control/deviceProtocol.js +68 -0
- package/dist/workstation/control/enrollment.js +106 -0
- package/dist/workstation/control/inspect.js +71 -0
- package/dist/workstation/control/locks.js +110 -0
- package/dist/workstation/control/protocol.js +40 -0
- package/dist/workstation/control/restartGuard.js +46 -0
- package/dist/workstation/control/rootFormat.js +16 -0
- package/dist/workstation/control/runtimeClient.js +152 -0
- package/dist/workstation/control/runtimeHost.js +235 -0
- package/dist/workstation/control/serverIdentity.js +35 -0
- package/dist/workstation/control/updateTransition.js +91 -0
- package/dist/workstation/daemon.js +266 -264
- package/dist/workstation/daemonctl.js +226 -25
- package/dist/workstation/desktopControl/audio.js +99 -0
- package/dist/workstation/desktopControl/automationDevice.js +219 -0
- package/dist/workstation/desktopControl/automationJson.js +74 -0
- package/dist/workstation/desktopControl/automationLocalState.js +23 -0
- package/dist/workstation/desktopControl/automationProtocol.js +253 -0
- package/dist/workstation/desktopControl/automationSchema.generated.js +1 -0
- package/dist/workstation/desktopControl/automationSession.js +81 -0
- package/dist/workstation/desktopControl/automationTransport.js +138 -0
- package/dist/workstation/desktopControl/capabilities.js +93 -0
- package/dist/workstation/desktopControl/captureModes.js +9 -0
- package/dist/workstation/desktopControl/captureTargetLabel.js +9 -0
- package/dist/workstation/desktopControl/deviceAdmission.js +229 -0
- package/dist/workstation/desktopControl/deviceOwnership.js +130 -0
- package/dist/workstation/desktopControl/deviceSockets.js +246 -0
- package/dist/workstation/desktopControl/helperProcess.js +602 -0
- package/dist/workstation/desktopControl/hostGrant.js +65 -0
- package/dist/workstation/desktopControl/lobby.js +131 -0
- package/dist/workstation/desktopControl/macProvider.js +156 -0
- package/dist/workstation/desktopControl/media.js +331 -0
- package/dist/workstation/desktopControl/nativeDeviceAdmission.js +207 -0
- package/dist/workstation/desktopControl/nativeProvider.js +1044 -0
- package/dist/workstation/desktopControl/networkEvidence.js +43 -0
- package/dist/workstation/desktopControl/overview.js +58 -0
- package/dist/workstation/desktopControl/ownershipProtocol.js +31 -0
- package/dist/workstation/desktopControl/protocol.js +311 -0
- package/dist/workstation/desktopControl/provider.js +1 -0
- package/dist/workstation/desktopControl/quicMedia.js +240 -0
- package/dist/workstation/desktopControl/rateController.js +226 -0
- package/dist/workstation/desktopControl/supervisor.js +1774 -0
- package/dist/workstation/desktopControl/transport.js +27 -0
- package/dist/workstation/desktopControl/wallpaper.js +98 -0
- package/dist/workstation/exec/policy.js +5 -0
- package/dist/workstation/files/client.js +10 -1
- package/dist/workstation/files/credentials.js +142 -0
- package/dist/workstation/files/host.js +9 -2
- package/dist/workstation/files/text.js +42 -8
- package/dist/workstation/journal.js +5 -2
- package/dist/workstation/keepers/acp/client.js +38 -2
- package/dist/workstation/keepers/kit/buildVersion.js +35 -11
- package/dist/workstation/keepers/kit/bundle.js +21 -17
- package/dist/workstation/keepers/kit/client.js +2 -2
- package/dist/workstation/keepers/kit/launcher.js +123 -7
- package/dist/workstation/keepers/kit/paths.js +2 -1
- package/dist/workstation/keepers/legacy.js +16 -2
- package/dist/workstation/keepers/policy.js +5 -34
- package/dist/workstation/keepers/terminal/client.js +115 -23
- package/dist/workstation/keepers/terminal/exec.js +6 -3
- package/dist/workstation/keepers/terminal/frames.js +73 -0
- package/dist/workstation/keepers/terminal/generations.js +5 -8
- package/dist/workstation/keepers/terminal/gridProtocol.js +16 -0
- package/dist/workstation/keepers/terminal/input.js +146 -0
- package/dist/workstation/keepers/terminal/keeper.js +22 -8
- package/dist/workstation/keepers/terminal/main.js +1 -1
- package/dist/workstation/keepers/terminal/metadata.js +138 -0
- package/dist/workstation/keepers/terminal/protocol.js +4 -28
- package/dist/workstation/keepers/terminal/pty.js +1 -330
- package/dist/workstation/keepers/terminal/screen.js +246 -0
- package/dist/workstation/keepers/terminal/sessions.js +526 -0
- package/dist/workstation/managedInstall.js +57 -0
- package/dist/workstation/oauth/deviceAuthorization.js +31 -17
- package/dist/workstation/protocol/agent.js +2 -15
- package/dist/workstation/protocol/management.js +113 -5
- package/dist/workstation/protocol/runtimeDiagnostics.js +15 -0
- package/dist/workstation/rd/artifact.js +120 -0
- package/dist/workstation/rd/control.js +117 -0
- package/dist/workstation/rd/display.js +29 -0
- package/dist/workstation/rd/host.js +213 -0
- package/dist/workstation/rd/migrationReadiness.js +46 -0
- package/dist/workstation/rd/provider.js +256 -0
- package/dist/workstation/rd/sessions.js +391 -0
- package/dist/workstation/rd/state.js +57 -0
- package/dist/workstation/rd/update.js +168 -0
- package/dist/workstation/rd/upkeep.js +80 -0
- package/dist/workstation/register.js +27 -37
- package/dist/workstation/registrations/enrollment.js +250 -0
- package/dist/workstation/registrations/enrollmentPending.js +361 -0
- package/dist/workstation/registrations/migration.js +356 -0
- package/dist/workstation/registrations/model.js +34 -0
- package/dist/workstation/registrations/removal.js +222 -0
- package/dist/workstation/registrations/store.js +737 -0
- package/dist/workstation/runtime/desktopBinding.js +20 -0
- package/dist/workstation/runtime/deviceDesktop.js +193 -0
- package/dist/workstation/runtime/deviceRuntime.js +568 -0
- package/dist/workstation/runtime/deviceServices.js +117 -0
- package/dist/workstation/runtime/events.js +20 -0
- package/dist/workstation/runtime/ownership.js +100 -0
- package/dist/workstation/runtime/registrationRuntime.js +575 -0
- package/dist/workstation/runtime/remoteDesktopAdapter.js +186 -0
- package/dist/workstation/runtime/removalActivity.js +184 -0
- package/dist/workstation/service/installer.js +197 -14
- package/dist/workstation/service/launchd.js +2 -0
- package/dist/workstation/service/systemd.js +1 -0
- package/dist/workstation/storageMetrics.js +118 -0
- package/dist/workstation/systemMetrics.js +47 -92
- package/dist/workstation/toolchain.js +94 -0
- package/dist/workstation/tools/browser.js +28 -4
- package/dist/workstation/tools/client.js +8 -27
- package/dist/workstation/tools/info.js +6 -13
- package/dist/workstation/tools/terminalRouter.js +17 -172
- package/dist/workstation/tools/validation.js +55 -1
- package/dist/workstation/update/archiveEvidence.js +206 -0
- package/dist/workstation/update/artifact.js +2 -1
- package/dist/workstation/update/coordinator.js +34 -13
- package/dist/workstation/update/deviceCompatibility.js +119 -0
- package/dist/workstation/update/deviceCoordinator.js +369 -0
- package/dist/workstation/update/deviceHealth.js +104 -0
- package/dist/workstation/update/deviceHealthProtocol.js +26 -0
- package/dist/workstation/update/deviceRecoveryLifecycle.js +46 -0
- package/dist/workstation/update/deviceRollback.js +78 -0
- package/dist/workstation/update/globalInstall.js +186 -0
- package/dist/workstation/update/legacyBridge.js +414 -0
- package/dist/workstation/update/legacyOwner.js +39 -0
- package/dist/workstation/update/npmInstaller.js +51 -25
- package/dist/workstation/update/privateDurability.js +61 -0
- package/dist/workstation/update/rdRollback.js +145 -0
- package/dist/workstation/update/recoveryPlan.js +124 -0
- package/dist/workstation/update/runUpdate.js +10 -3
- package/dist/workstation/update/taskRegistry.js +161 -3
- package/dist/workstation/update/watchdog.js +29806 -333
- package/dist/workstation/update/watchdogProcess.js +72 -0
- package/package.json +11 -7
- package/skills/axom/SKILL.md +11 -11
- package/skills/axom-definition/SKILL.md +3 -3
- package/skills/axom-platform/SKILL.md +3 -3
- package/dist/axom-patch/cli/probes/qoder-steering.mjs +0 -89
- package/dist/axom-patch/cli/probes/qoder-subagent-origin.mjs +0 -61
- package/dist/axom-patch/cli/qoder-steering.json +0 -52
- package/dist/axom-patch/cli/qoder-subagent-origin.json +0 -73
- package/dist/commands/guide.js +0 -38
- package/dist/runtime-deps/qoder-sdk/package-lock.json +0 -1189
- package/dist/runtime-deps/qoder-sdk/package.json +0 -8
- package/dist/workstation/acp/delegationMcp.js +0 -24
- package/dist/workstation/acp/processor/sideChannel.js +0 -80
- package/dist/workstation/acp/qoderStartup.js +0 -45
- package/dist/workstation/acp/test/raw/qoderCaptures.js +0 -125
- package/dist/workstation/qoderAdapter/backgroundProcess.js +0 -118
- package/dist/workstation/qoderAdapter/backgroundTerminal.js +0 -193
- package/dist/workstation/qoderAdapter/backgroundTerminalFold.js +0 -372
- package/dist/workstation/qoderAdapter/callbackContext.js +0 -76
- package/dist/workstation/qoderAdapter/completedContinuation.js +0 -139
- package/dist/workstation/qoderAdapter/contract.js +0 -78
- package/dist/workstation/qoderAdapter/foregroundOutput.js +0 -36
- package/dist/workstation/qoderAdapter/history.js +0 -85
- package/dist/workstation/qoderAdapter/identityIndex.js +0 -191
- package/dist/workstation/qoderAdapter/inputQueue.js +0 -42
- package/dist/workstation/qoderAdapter/main.js +0 -95
- package/dist/workstation/qoderAdapter/mapper.js +0 -117
- package/dist/workstation/qoderAdapter/observerPlugin.js +0 -245
- package/dist/workstation/qoderAdapter/observerReceiver.js +0 -187
- package/dist/workstation/qoderAdapter/permissions.js +0 -61
- package/dist/workstation/qoderAdapter/profile.js +0 -93
- package/dist/workstation/qoderAdapter/sdkDriver.js +0 -48
- package/dist/workstation/qoderAdapter/sdkRuntime.js +0 -93
- package/dist/workstation/qoderAdapter/sdkRuntimeInstall.js +0 -145
- package/dist/workstation/qoderAdapter/session.js +0 -319
- package/dist/workstation/qoderAdapter/subagentMeta.js +0 -28
- package/dist/workstation/qoderAdapter/subwork.js +0 -85
- package/dist/workstation/qoderAdapter/taskControl.js +0 -38
- package/dist/workstation/qoderAdapter/taskLedger.js +0 -163
- package/dist/workstation/qoderAdapter/usage.js +0 -37
- /package/dist/workstation/{qoderAdapter/types.js → desktopControl/automationPreparation.js} +0 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "qoder-native-acp",
|
|
3
|
+
"package": "@qoder-ai/qodercli",
|
|
4
|
+
"versions": [
|
|
5
|
+
"1.1.75"
|
|
6
|
+
],
|
|
7
|
+
"bin": "qodercli",
|
|
8
|
+
"assets": [
|
|
9
|
+
{
|
|
10
|
+
"source": "qoder/dist/axom-acp-compat.mjs",
|
|
11
|
+
"target": "bundle/axom-acp-compat.mjs",
|
|
12
|
+
"sha256": "9ecfa65379bcf80df9991b72d3cb4a1a39aaef1783b8b29c317eec6bc4b57cda"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"edits": [
|
|
16
|
+
{
|
|
17
|
+
"file": "bundle/qodercli.js",
|
|
18
|
+
"before_sha256": "1b5b17bb25bcd2e059a97e8bc1d4280e4c16fb4194b004463cd677c434536948",
|
|
19
|
+
"after_sha256": "02e98f249544981806c2244708ab5756c46859177ffdc376bb08f6cc1c9711b7",
|
|
20
|
+
"before": "().catch(()=>{}):Q.preload.headlessSession&&ona().catch(()=>{}),(async()=>{try{let{refreshDispatcher:A}=await Promise.resolve().then(()=>(W$e(),V$e));await A({reason:\"startup\"})}catch(A){C.debug(`[startup] dispatcher refresh failed (best-effort): ${A instanceof Error?A.message:String(A)}`)}})();let h=_Pt(A),w=c.merged.advanced.autoConfigureMemory?Ana(h):[],",
|
|
21
|
+
"after": "().catch(()=>{}):Q.preload.headlessSession&&ona().catch(()=>{}),(!A.acp&&(async()=>{try{let{refreshDispatcher:A}=await Promise.resolve().then(()=>(W$e(),V$e));await A({reason:\"startup\"})}catch(A){C.debug(`[startup] dispatcher refresh failed (best-effort): ${A instanceof Error?A.message:String(A)}`)}})());let h=_Pt(A),w=c.merged.advanced.autoConfigureMemory?Ana(h):[],"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"file": "bundle/qodercli.js",
|
|
25
|
+
"before_sha256": "02e98f249544981806c2244708ab5756c46859177ffdc376bb08f6cc1c9711b7",
|
|
26
|
+
"after_sha256": "98b00256424b6f59099866e3d8da715d9d026e46491b87cfb515db84b699c3be",
|
|
27
|
+
"before": "pdate:\"config_option_update\",configOptions:this.configOptions})}async sendUpdate(A){let e={sessionId:this.id,update:A};await this.connection.sessionUpdate(e)}supportsTerminalOutput(){return!0===this.clientCapabilities?.ter",
|
|
28
|
+
"after": "pdate:\"config_option_update\",configOptions:this.configOptions})}async sendUpdate(update){if(this.axomFailure)throw this.axomFailure;await this.axomSetup();await this.axomBridge.send(update);}async axomSdkUpdate(message,update){await this.axomSetup();await this.axomBridge.send(update,message);}supportsTerminalOutput(){return!0===this.clientCapabilities?.ter"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"file": "bundle/qodercli.js",
|
|
32
|
+
"before_sha256": "98b00256424b6f59099866e3d8da715d9d026e46491b87cfb515db84b699c3be",
|
|
33
|
+
"after_sha256": "8ee6ef6834aebed9c76f4f326a9d54c0e6c5c62ba049f082592cbe9d31195806",
|
|
34
|
+
"before": "ext}}):\"thinking_delta\"===e.delta.type&&e.delta.thinking&&await this.sendUpdate({sessionUpdate:\"agent_thought_chunk\",content:{type:\"text\",text:e.delta.thinking}}));break}case\"assistant\":if(A.message?.content&&Array.isArray(A.m",
|
|
35
|
+
"after": "ext}}):\"thinking_delta\"===e.delta.type&&e.delta.thinking&&await this.axomSdkUpdate(A,{sessionUpdate:\"agent_thought_chunk\",content:{type:\"text\",text:e.delta.thinking}}));break}case\"assistant\":if(A.message?.content&&Array.isArray(A.m"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"file": "bundle/qodercli.js",
|
|
39
|
+
"before_sha256": "8ee6ef6834aebed9c76f4f326a9d54c0e6c5c62ba049f082592cbe9d31195806",
|
|
40
|
+
"after_sha256": "bce94f52529e9717a90ad51d6ecad4de1203ada59febba16fde9869f965e699f",
|
|
41
|
+
"before": "type&&e.delta&&(\"text_delta\"===e.delta.type&&e.delta.text?await this.sendUpdate({sessionUpdate:\"agent_message_chunk\",content:{type:\"text\",text:e.delta.text}}):\"thinking_delta\"===e.delta.type&&e.delta.thinking&&await this.a",
|
|
42
|
+
"after": "type&&e.delta&&(\"text_delta\"===e.delta.type&&e.delta.text?await this.axomSdkUpdate(A,{sessionUpdate:\"agent_message_chunk\",content:{type:\"text\",text:e.delta.text}}):\"thinking_delta\"===e.delta.type&&e.delta.thinking&&await this.a"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"file": "bundle/qodercli.js",
|
|
46
|
+
"before_sha256": "bce94f52529e9717a90ad51d6ecad4de1203ada59febba16fde9869f965e699f",
|
|
47
|
+
"after_sha256": "e5a33bd41d46236e7610df1d185b5ea0ee3e6596f5d06a0a7123d724b59b972e",
|
|
48
|
+
"before": "input,output_tokens:e.output}}))}}}}async dispatchSDKMessage(A){switch(A.type){case\"stream_event\":{let e=A.event;\"content_block_",
|
|
49
|
+
"after": "input,output_tokens:e.output}}))}}}}async dispatchSDKMessage(A){await this.axomSetup();this.axomBridge.observe(A);switch(A.type){case\"stream_event\":{let e=A.event;\"content_block_"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"file": "bundle/qodercli.js",
|
|
53
|
+
"before_sha256": "e5a33bd41d46236e7610df1d185b5ea0ee3e6596f5d06a0a7123d724b59b972e",
|
|
54
|
+
"after_sha256": "207e2e0c98544878100c08bfdf2c909b176a80fc82c590e0cf821d7c054acc3e",
|
|
55
|
+
"before": "this.runNextQueuedPrompt()||this.scheduleTaskNotificationDrain()}}runNextQueuedPrompt(){let A=this.pendingMessages.shift();retur",
|
|
56
|
+
"after": "this.runNextQueuedPrompt()||this.scheduleTaskNotificationDrain()}}}runNextQueuedPrompt(){let A=this.pendingMessages.shift();retur"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"file": "bundle/qodercli.js",
|
|
60
|
+
"before_sha256": "207e2e0c98544878100c08bfdf2c909b176a80fc82c590e0cf821d7c054acc3e",
|
|
61
|
+
"after_sha256": "ac0fbece8d88bab7a73149f330003b03ecd518ce855c582dda0c4960a9cbd52f",
|
|
62
|
+
"before": "e.signal.aborted)return{stopReason:\"cancelled\"};throw A}finally{this.pendingPrompt===e&&(this.pendingPrompt=null),this.promptRun",
|
|
63
|
+
"after": "e.signal.aborted)return{stopReason:\"cancelled\"};throw A}finally{try{await this.axomBridge.endTurn();}finally{this.pendingPrompt===e&&(this.pendingPrompt=null),this.promptRun"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"file": "bundle/qodercli.js",
|
|
67
|
+
"before_sha256": "ac0fbece8d88bab7a73149f330003b03ecd518ce855c582dda0c4960a9cbd52f",
|
|
68
|
+
"after_sha256": "525fd57b0e6f8e90ef05d23d352fbe3515d1db56c51ed8b028d2aa2b59da2db0",
|
|
69
|
+
"before": " AbortController;this.pendingPrompt=e,this.promptRunning=!0;try{this.ensureSessionStartHooks(e.signal),await _mr(this.context.co",
|
|
70
|
+
"after": " AbortController;this.pendingPrompt=e,this.promptRunning=!0;try{this.axomBridge.begin();this.ensureSessionStartHooks(e.signal),await _mr(this.context.co"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"file": "bundle/qodercli.js",
|
|
74
|
+
"before_sha256": "525fd57b0e6f8e90ef05d23d352fbe3515d1db56c51ed8b028d2aa2b59da2db0",
|
|
75
|
+
"after_sha256": "598f10e58788697513f409ad154b5176da5ca626ddaed21b3af468353efdcf2c",
|
|
76
|
+
"before": "inking},messageId:t.uuid});let A=Np(t).join(\"\").trim();A&&await this.sendUpdate({sessionUpdate:\"agent_message_chunk\",content:{type:\"text\",text:A},messageId:t.uuid});for(let A of t.message.content){if(\"tool_use\"!==A.type)continue",
|
|
77
|
+
"after": "inking},messageId:t.uuid});let A=Np(t).join(\"\").trim();A&&await this.axomSdkUpdate(t,{sessionUpdate:\"agent_message_chunk\",content:{type:\"text\",text:A},messageId:t.uuid});for(let A of t.message.content){if(\"tool_use\"!==A.type)continue"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"file": "bundle/qodercli.js",
|
|
81
|
+
"before_sha256": "598f10e58788697513f409ad154b5176da5ca626ddaed21b3af468353efdcf2c",
|
|
82
|
+
"after_sha256": "e27e32fe698e7760a9674edc79bebcec8aefb2bc70c4186e85726166fb987bd0",
|
|
83
|
+
"before": "t.message.content)\"thinking\"===A.type&&A.thinking.trim()&&await this.sendUpdate({sessionUpdate:\"agent_thought_chunk\",content:{type:\"text\",text:A.thinking},messageId:t.uuid});let A=Np(t).join(\"\").trim();A&&await this.axomSdkUpdate(t,{sess",
|
|
84
|
+
"after": "t.message.content)\"thinking\"===A.type&&A.thinking.trim()&&await this.axomSdkUpdate(t,{sessionUpdate:\"agent_thought_chunk\",content:{type:\"text\",text:A.thinking},messageId:t.uuid});let A=Np(t).join(\"\").trim();A&&await this.axomSdkUpdate(t,{sess"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"file": "bundle/qodercli.js",
|
|
88
|
+
"before_sha256": "e27e32fe698e7760a9674edc79bebcec8aefb2bc70c4186e85726166fb987bd0",
|
|
89
|
+
"after_sha256": "017105b0b7da865d4536b8b4d21728b8afdd2bc7dd0dc79888458f4203dca225",
|
|
90
|
+
"before": "A){if(TG(t)){let A=_k(t).join(\"\\n\").trim();if(!A)continue;await this.sendUpdate({sessionUpdate:\"user_message_chunk\",content:{type:\"text\",text:A},messageId:t.uuid});continue}if(\"assistant\"===t.type){for(let A of t.message.conten",
|
|
91
|
+
"after": "A){if(TG(t)){let A=_k(t).join(\"\\n\").trim();if(!A)continue;await this.axomSdkUpdate(t,{sessionUpdate:\"user_message_chunk\",content:{type:\"text\",text:A},messageId:t.uuid});continue}if(\"assistant\"===t.type){for(let A of t.message.conten"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"file": "bundle/qodercli.js",
|
|
95
|
+
"before_sha256": "017105b0b7da865d4536b8b4d21728b8afdd2bc7dd0dc79888458f4203dca225",
|
|
96
|
+
"after_sha256": "cfd20401620f8a2a23b4e7572d4d9cae99798cca6e151ea2da3786c010c1512e",
|
|
97
|
+
"before": "figOptions}}async streamHistory(A){let e=yVd(A);for(let t of A){if(TG(t)){let A=_k(t).join(\"\\n\").trim();if(!A)continue;await thi",
|
|
98
|
+
"after": "figOptions}}async streamHistory(A){let e=yVd(A);for(let t of A){await this.axomBridge.history(t);if(TG(t)){let A=_k(t).join(\"\\n\").trim();if(!A)continue;await thi"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"file": "bundle/qodercli.js",
|
|
102
|
+
"before_sha256": "cfd20401620f8a2a23b4e7572d4d9cae99798cca6e151ea2da3786c010c1512e",
|
|
103
|
+
"after_sha256": "5c0800d97b0c029f395ad0bcce41ed2beb31d8a4e0a4c09a355eae4b3510191d",
|
|
104
|
+
"before": "h&&await vBA(iS(A,this.id),this.id)}async cancelPendingPrompt(){let A=this.pendingMessages.splice(0);A.length>0&&(this.pendingMe",
|
|
105
|
+
"after": "h&&await vBA(iS(A,this.id),this.id)}async cancelPendingPrompt(){this.axomBridge?.cancel();let A=this.pendingMessages.splice(0);A.length>0&&(this.pendingMe"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"file": "bundle/qodercli.js",
|
|
109
|
+
"before_sha256": "5c0800d97b0c029f395ad0bcce41ed2beb31d8a4e0a4c09a355eae4b3510191d",
|
|
110
|
+
"after_sha256": "6747880316425aba0339bb14aaf590b216abda30d50675715d3ec15a55ab56a5",
|
|
111
|
+
"before": "tification\"===A.commandMode&&A.sessionId===this.id),z3e(this.id)}async disposeConfig(){await this.context.config.dispose()}track",
|
|
112
|
+
"after": "tification\"===A.commandMode&&A.sessionId===this.id),z3e(this.id)}finally{await this.axomClosing;}}async disposeConfig(){await this.context.config.dispose()}track"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"file": "bundle/qodercli.js",
|
|
116
|
+
"before_sha256": "6747880316425aba0339bb14aaf590b216abda30d50675715d3ec15a55ab56a5",
|
|
117
|
+
"after_sha256": "b2bd40d1f4815729cdd9786408e94aacc47aedf58211f4c51523e24c7033a751",
|
|
118
|
+
"before": "s.finishDispose(A)}),this.disposePromise}async finishDispose(A){await Promise.allSettled(A),Mj(A=>\"task-notification\"===A.comman",
|
|
119
|
+
"after": "s.finishDispose(A)}),this.disposePromise}async finishDispose(A){try{await Promise.allSettled(A),Mj(A=>\"task-notification\"===A.comman"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"file": "bundle/qodercli.js",
|
|
123
|
+
"before_sha256": "b2bd40d1f4815729cdd9786408e94aacc47aedf58211f4c51523e24c7033a751",
|
|
124
|
+
"after_sha256": "ac43059b117176d775b3a59780795a65f7528cc900a3450548d16318ea60b9f2",
|
|
125
|
+
"before": "),!1)}finally{r&&i&&i.removeEventListener(\"abort\",r)}}dispose(){if(this.disposePromise)return this.disposePromise;this.disposed=",
|
|
126
|
+
"after": "),!1)}finally{r&&i&&i.removeEventListener(\"abort\",r)}}dispose(){this.axomClosing??=this.axomBridge?.close();if(this.disposePromise)return this.disposePromise;this.disposed="
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"file": "bundle/qodercli.js",
|
|
130
|
+
"before_sha256": "ac43059b117176d775b3a59780795a65f7528cc900a3450548d16318ea60b9f2",
|
|
131
|
+
"after_sha256": "93b48d4e4b07835a31a2684c4c4848930f413fd94790db8cb94ff9c1a282a304",
|
|
132
|
+
"before": ",e):void 0,n=await A.getTranscriptStore().acquireSessionWriter({filePath:this.resumeTranscriptPath??Ap(e,this.id),sessionId:this",
|
|
133
|
+
"after": ",e):void 0,n=await A.getTranscriptStore().acquireSessionWriter({version:await _r(),filePath:this.resumeTranscriptPath??Ap(e,this.id),sessionId:this"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"file": "bundle/qodercli.js",
|
|
137
|
+
"before_sha256": "93b48d4e4b07835a31a2684c4c4848930f413fd94790db8cb94ff9c1a282a304",
|
|
138
|
+
"after_sha256": "16a78af5e638e91908d2b3c273b60eb8423cb2a53a21c24617b9381366e0f21d",
|
|
139
|
+
"before": "){return this.disposed}isActive(){return this.active}activate(){if(this.disposed)throw new Error(`${_$d1(\"MVQYOisDalkuHTtPE0ETdC",
|
|
140
|
+
"after": "){return this.disposed}isActive(){return this.active}activate(){await this.axomSetup();await this.axomBridge.activate();if(this.disposed)throw new Error(`${_$d1(\"MVQYOisDalkuHTtPE0ETdC"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"file": "bundle/qodercli.js",
|
|
144
|
+
"before_sha256": "16a78af5e638e91908d2b3c273b60eb8423cb2a53a21c24617b9381366e0f21d",
|
|
145
|
+
"after_sha256": "cad0dfd6cf32b3befe7e8825dd7d3c5d4610b982563bf4b05cb093ea85b06172",
|
|
146
|
+
"before": "isDisposed(){return this.disposed}isActive(){return this.active}activate(){await this.axomSetup();await this.axomBridge.activate",
|
|
147
|
+
"after": "isDisposed(){return this.disposed}isActive(){return this.active}async activate(){await this.axomSetup();await this.axomBridge.activate"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"file": "bundle/qodercli.js",
|
|
151
|
+
"before_sha256": "cad0dfd6cf32b3befe7e8825dd7d3c5d4610b982563bf4b05cb093ea85b06172",
|
|
152
|
+
"after_sha256": "6ee4b68df6c7240d34a4abf13e537a5422d5fa8b966c762dbf7ac4a5bf9b06e9",
|
|
153
|
+
"before": "lue}`);return e.setConfigOption(A.configId,A.value)}},MAA=class{constructor(A,e,t,i,r,n=\"startup\"){if(this.id=A,this.context=e,t",
|
|
154
|
+
"after": "lue}`);return e.setConfigOption(A.configId,A.value)}},MAA=class{axomBridge;axomClosing;async axomSetup(mode=\"new\"){if(this.disposed)throw new Error(\"Native ACP session disposed\");if(!this.axomBridge)this.axomBridge=__axomAcp.createBridge({root:this.id,cwd:this.resumeWorktreeSession?.originalCwd??this.context.config.getSessionArtifactProjectRoot?.()??this.context.config.getWorkingDir(),mode,releaseId:\"qoder-1.1.75-native-acp-v1\",historyVersions:[\"1.1.75\"],bindings:{RequestError:cs,uuid:ose,enqueue:Yw,remove:Mj,select:Ieu,consume:Qeu},send:value=>this.connection.sessionUpdate(value),fail:error=>{this.axomFailure=error;Promise.resolve(this.cancelPendingPrompt()).catch(()=>{});}});await this.axomBridge.ready();}axomFailure;\nconstructor(A,e,t,i,r,n=\"startup\"){if(this.id=A,this.context=e,t"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"file": "bundle/qodercli.js",
|
|
158
|
+
"before_sha256": "6ee4b68df6c7240d34a4abf13e537a5422d5fa8b966c762dbf7ac4a5bf9b06e9",
|
|
159
|
+
"after_sha256": "fb09d3bf41b776307fa311f794d10bb524669de7a6bd5e9b58890c897708d8d0",
|
|
160
|
+
"before": "this.sessions.get(A.sessionId);e&&await e.cancelPendingPrompt()}async prompt(A){await this.ensureAuthenticated();let e=this.sess",
|
|
161
|
+
"after": "this.sessions.get(A.sessionId);e&&await e.cancelPendingPrompt()}async extMethod(method,params){if(method!==\"_session/steering\")throw cs.methodNotFound(method);await this.ensureAuthenticated();if(!params||typeof params.sessionId!==\"string\"||!params.sessionId)throw cs.invalidParams(undefined,\"Missing sessionId\");const session=this.sessions.get(params.sessionId);if(!session)throw cs.invalidParams(undefined,\"Unknown sessionId\");if(!session.axomBridge)throw new cs(409,\"Session setup is not complete\");return session.axomBridge.accept(params);}\nasync prompt(A){await this.ensureAuthenticated();let e=this.sess"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"file": "bundle/qodercli.js",
|
|
165
|
+
"before_sha256": "fb09d3bf41b776307fa311f794d10bb524669de7a6bd5e9b58890c897708d8d0",
|
|
166
|
+
"after_sha256": "54c33c0698753740d3553d535d73a282c355fb7b0dc2dc6ecf1934cd2fefa80e",
|
|
167
|
+
"before": "ait this.applySessionWorktreeStartupRequest(t,e,n),t.activate(),r&&await t.streamHistory(g),this.queueAvailableCommandsUpdate(t),IVd(t.getState())}catch(e)",
|
|
168
|
+
"after": "ait this.applySessionWorktreeStartupRequest(t,e,n),t.activate(),(r&&await t.streamHistory(g),await t.activate()),this.queueAvailableCommandsUpdate(t),IVd(t.getState())}catch(e)"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"file": "bundle/qodercli.js",
|
|
172
|
+
"before_sha256": "54c33c0698753740d3553d535d73a282c355fb7b0dc2dc6ecf1934cd2fefa80e",
|
|
173
|
+
"after_sha256": "e29ce3f49f0fabdd03343f2641658fc9f2c9802b2c4740bbf186137ab306a037",
|
|
174
|
+
"before": "te}}:{}})),await this.applySessionWorktreeStartupRequest(t,e,n),t.activate(),(r&&await t.streamHistory(g),await t.activate()),this.queueAvai",
|
|
175
|
+
"after": "te}}:{}})),await this.applySessionWorktreeStartupRequest(t,e,n),await t.axomSetup(r?\"load\":\"resume\"),(r&&await t.streamHistory(g),await t.activate()),this.queueAvai"
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"file": "bundle/qodercli.js",
|
|
179
|
+
"before_sha256": "e29ce3f49f0fabdd03343f2641658fc9f2c9802b2c4740bbf186137ab306a037",
|
|
180
|
+
"after_sha256": "be0647f2f84075ee43ac48691a5e3462b20e846c1d079ea0ed2ab33707415280",
|
|
181
|
+
"before": "essionWorktreeStartupRequest(n,e,r),await n.persistNewSession(),n.activate(),this.queueAvailableCommandsUpdate(n),n.getState()}catch(e){thro",
|
|
182
|
+
"after": "essionWorktreeStartupRequest(n,e,r),await n.persistNewSession(),await n.activate(),this.queueAvailableCommandsUpdate(n),n.getState()}catch(e){thro"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"file": "bundle/qodercli.js",
|
|
186
|
+
"before_sha256": "be0647f2f84075ee43ac48691a5e3462b20e846c1d079ea0ed2ab33707415280",
|
|
187
|
+
"after_sha256": "f2a58cb39236886ffb2b1ba2f9a0cea327204a6da9728ccee53361c9405be443",
|
|
188
|
+
"before": "await this.ensureQoderAuthBootstrapped();let t=await _r();return{protocolVersion:nAa,authMethods:e,agentInfo:{name:C0,title:Vn,version:t},agentCapabilities:{_meta:{qoder:{promptQueueing:!0}},loadSession:!0,sessionCapabilities:{additionalDirectories:{},close:{},delete:{},fork:{},list:{},resume:{}},promptCapabilities:{image:!0,embeddedContext:!0},mcpCapabilities:{http:!0,sse:!0}}}}async authenticate(A){await this.ensureQoderAuthBootstrapped();",
|
|
189
|
+
"after": "await this.ensureQoderAuthBootstrapped();let t=await _r();return(__axomAcp.initialize({protocolVersion:nAa,authMethods:e,agentInfo:{name:C0,title:Vn,version:t},agentCapabilities:{_meta:{qoder:{promptQueueing:!0}},loadSession:!0,sessionCapabilities:{additionalDirectories:{},close:{},delete:{},fork:{},list:{},resume:{}},promptCapabilities:{image:!0,embeddedContext:!0},mcpCapabilities:{http:!0,sse:!0}}},\"qoder-1.1.75-native-acp-v1\",\"1.1.75\",{RequestError:cs,uuid:ose,enqueue:Yw,remove:Mj,select:Ieu,consume:Qeu}))}async authenticate(A){await this.ensureQoderAuthBootstrapped();"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"file": "bundle/qodercli.js",
|
|
193
|
+
"before_sha256": "f2a58cb39236886ffb2b1ba2f9a0cea327204a6da9728ccee53361c9405be443",
|
|
194
|
+
"after_sha256": "f48cb124a359b0557443c88cc2f9474db97bb29b22b42a2c61feedb16e8b0049",
|
|
195
|
+
"before": "reason:\"end_turn\",numTurns:NA,usage:z,durationMs:Date.now()-X});let ve=[];if(S){ve=Ieu({isSubagent:!0===U,subagentAgentId:R,sessionId:a});let e=xho(ve),i=rA??D0A();rA=i;let r=VZ(S),n=[],o=new Set,s=!1;try{let t=await Beu(e,()=>{let e=new Set(UA().map(A=>A.function.name)),t=e.has(ed);return e7(null,S,ve,A.config?bO(A.config,[...e],{isMainSession:!0!==U}):null,{isInitialTurn:!1,isMainThread:!0!==U,isTodoToolEnabled:e.has(il),isTaskUpdateToolEnabled:t,taskStore:t&&A.config?.isTasksEnabled()?A.config.getTaskStore():void 0,skillListingConfig:A.config?vG(A.config,{model:pA,catalog:g,contextWindowTokens:PA}):void 0,uploadImagesToQoder:!dpe(A.config,pA),signal:c,diagnostics:{sessionId:a,turnId:w,loopId:eA,phase:\"inter_turn\"}},Ceu(A.config,{requestId:i,requestSetId:V.requestSetId,promptId:w},A.attachmentToolRegistry),!0===U?void 0:A.config?.planStateManager,Me)});n=t.value;let{dropConsumedBatch:r}=t;if(r){let A=new Set(e.flatMap(A=>A.uuid?[A.uuid]:[]));ve=ve.filter(A=>!e.includes(A)),n=n.filter(e=>{if(\"attachment\"!==e.type)return!0;let t=e.attachment.source_uuid;return\"string\"!=typeof t||!A.has(t)});for(let e of A)yield{type:\"command_lifecycle\",uuid:e,state:\"cancelled\"}}for(let A of n)yield A,o.add(A),Me.push(A);s=!0}finally{s||r(n.filter(e=>o.has(e)||!0===A.isAttachmentCommitted?.(e)))}let l=Qeu(ve);t.recordCommands(l);for(let A of l)A.uuid&&(yield{type:\"command_lifecycle\",uuid:A.uuid,state:\"started\"})}FA=Lj(Qe,{messages:Me,pendingUserMessageUuid:void 0,stopHookActive:Qe.stopHookActive||ve.some(A=>\"task-notification\"===A.commandMode&&A.stopHookActive),maxOutputTokensOverride:void 0,maxOutputTokensRecoveryCount:0},{reason:\"next_turn\"})}}catch(A){let e=A instanceof Error?A:new Error(String(A)),t=eE(",
|
|
196
|
+
"after": "reason:\"end_turn\",numTurns:NA,usage:z,durationMs:Date.now()-X});FA=yield* __axomDrain(Me);}}catch(A){let e=A instanceof Error?A:new Error(String(A)),t=eE("
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"file": "bundle/qodercli.js",
|
|
200
|
+
"before_sha256": "f48cb124a359b0557443c88cc2f9474db97bb29b22b42a2c61feedb16e8b0049",
|
|
201
|
+
"after_sha256": "3d5d6dcd95fc910474daa9e0c8fb0706bf83fe49781dfd7d9124400a5da0049c",
|
|
202
|
+
"before": "ontinuationMessage,FA=e.nextState,bA=\"\",KA(se.length);continue}}return upe({sessionId:a,promptId:w,loopId:eA,requestIndex:AA,rea",
|
|
203
|
+
"after": "ontinuationMessage,FA=e.nextState,bA=\"\",KA(se.length);continue}}if(!__axomAcp.finish(a,!0===U)){if(!(S))throw new Error('Native ACP next attachment drain unavailable');FA=yield* __axomDrain([...Qe.messages]);bA=\"\";KA(se.length);continue;}return upe({sessionId:a,promptId:w,loopId:eA,requestIndex:AA,rea"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"file": "bundle/qodercli.js",
|
|
207
|
+
"before_sha256": "3d5d6dcd95fc910474daa9e0c8fb0706bf83fe49781dfd7d9124400a5da0049c",
|
|
208
|
+
"after_sha256": "5aa4ae4efb3bd17b00c28a5fb8d787f5f3d9b2b6f88e663be3e7c1ce3b638200",
|
|
209
|
+
"before": "borted_streaming\",numTurns:NA,usage:z,durationMs:Date.now()-X});if(0===se.length){if(A.requestPreparationTiming?.turn.phase(\"fin",
|
|
210
|
+
"after": "borted_streaming\",numTurns:NA,usage:z,durationMs:Date.now()-X});async function* __axomDrain(Me){let ve=[];if(S){ve=Ieu({isSubagent:!0===U,subagentAgentId:R,sessionId:a});let e=xho(ve),i=rA??D0A();rA=i;let r=VZ(S),n=[],o=new Set,s=!1;try{let t=await Beu(e,()=>{let e=new Set(UA().map(A=>A.function.name)),t=e.has(ed);return e7(null,S,ve,A.config?bO(A.config,[...e],{isMainSession:!0!==U}):null,{isInitialTurn:!1,isMainThread:!0!==U,isTodoToolEnabled:e.has(il),isTaskUpdateToolEnabled:t,taskStore:t&&A.config?.isTasksEnabled()?A.config.getTaskStore():void 0,skillListingConfig:A.config?vG(A.config,{model:pA,catalog:g,contextWindowTokens:PA}):void 0,uploadImagesToQoder:!dpe(A.config,pA),signal:c,diagnostics:{sessionId:a,turnId:w,loopId:eA,phase:\"inter_turn\"}},Ceu(A.config,{requestId:i,requestSetId:V.requestSetId,promptId:w},A.attachmentToolRegistry),!0===U?void 0:A.config?.planStateManager,Me)});n=t.value;let{dropConsumedBatch:r}=t;if(r){let A=new Set(e.flatMap(A=>A.uuid?[A.uuid]:[]));ve=ve.filter(A=>!e.includes(A)),n=n.filter(e=>{if(\"attachment\"!==e.type)return!0;let t=e.attachment.source_uuid;return\"string\"!=typeof t||!A.has(t)});for(let e of A)(__axomAcp.cancelled(a,!0===U,[e]),yield{type:\"command_lifecycle\",uuid:e,state:\"cancelled\"})}for(let A of n)yield A,o.add(A),Me.push(A);s=!0}finally{s||r(n.filter(e=>o.has(e)||!0===A.isAttachmentCommitted?.(e)))}let l=Qeu(ve);t.recordCommands(l);for(let A of l)A.uuid&&((__axomAcp.consumed(a,!0===U,[A.uuid]),yield{type:\"command_lifecycle\",uuid:A.uuid,state:\"started\"}))};return Lj(Qe,{messages:Me,pendingUserMessageUuid:void 0,stopHookActive:Qe.stopHookActive||ve.some(A=>\"task-notification\"===A.commandMode&&A.stopHookActive),maxOutputTokensOverride:void 0,maxOutputTokensRecoveryCount:0},{reason:\"next_turn\"});}\nif(0===se.length){if(A.requestPreparationTiming?.turn.phase(\"fin"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"file": "bundle/qodercli.js",
|
|
214
|
+
"before_sha256": "5aa4ae4efb3bd17b00c28a5fb8d787f5f3d9b2b6f88e663be3e7c1ce3b638200",
|
|
215
|
+
"after_sha256": "d0e7a26f18130a4027a7ff1f5215ea3f7fe4dd0fb6dfb109beb522ebbb391b92",
|
|
216
|
+
"before": "ok:!0===A.skipBeforeHook,isSubagent:!0===U});let aA,lA=async n=>(n.requestSetId??=V?.requestSetId,n.firstTtftMs??=t.firstTtftMs,A.requestPreparationTiming?.turn.terminal(n.reason,n.error),await(async e=>{if(!V||nA)return;nA=!0,V.finalize(e.reason,e.error);let t=Promise.all([sA(),...U?[]:[Kmo({sessionId:a,businessInfo:V.businessInfo}).catch(A=>{C.warn(\"[AgentLoop] Failed to report business finish\",A)})]]);!0!==A.config?.isInteractive?.()&&await t})(n),i.reason??=n.reason,e.recordTerminal(n),r&&(r.attributes[XA(\"interaction.reason\")]=n.reason,r.attributes[XA(\"interaction.turns\")]=n.numTurns,r.attributes[XA(\"interaction.duration_ms\")]=n.durationMs,n.modelStopReason&&(r.attributes[XA(\"interaction.model_stop_reason\")]=n.modelStopReason),r.output={reason:n.reason,modelStopReason:n.modelStopReason,numTurns:n.numTurns,durationMs:n.durationMs,usage:n.usage},\"error\"===n.reason&&(r.error=n.error??new Error(\"error_during_agent_loop\"))),K?.(n),kEo({sessionId:a,promptId:w,terminal:n})),gA=new AbortController,cA=AbortSignal.any([c,gA.signal]),BA=new",
|
|
217
|
+
"after": "ok:!0===A.skipBeforeHook,isSubagent:!0===U});let aA,lA=async n=>(__axomAcp.terminal(a,!0===U,n),(n.requestSetId??=V?.requestSetId,n.firstTtftMs??=t.firstTtftMs,A.requestPreparationTiming?.turn.terminal(n.reason,n.error),await(async e=>{if(!V||nA)return;nA=!0,V.finalize(e.reason,e.error);let t=Promise.all([sA(),...U?[]:[Kmo({sessionId:a,businessInfo:V.businessInfo}).catch(A=>{C.warn(\"[AgentLoop] Failed to report business finish\",A)})]]);!0!==A.config?.isInteractive?.()&&await t})(n),i.reason??=n.reason,e.recordTerminal(n),r&&(r.attributes[XA(\"interaction.reason\")]=n.reason,r.attributes[XA(\"interaction.turns\")]=n.numTurns,r.attributes[XA(\"interaction.duration_ms\")]=n.durationMs,n.modelStopReason&&(r.attributes[XA(\"interaction.model_stop_reason\")]=n.modelStopReason),r.output={reason:n.reason,modelStopReason:n.modelStopReason,numTurns:n.numTurns,durationMs:n.durationMs,usage:n.usage},\"error\"===n.reason&&(r.error=n.error??new Error(\"error_during_agent_loop\"))),K?.(n),kEo({sessionId:a,promptId:w,terminal:n}))),gA=new AbortController,cA=AbortSignal.any([c,gA.signal]),BA=new"
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"file": "bundle/qodercli.js",
|
|
221
|
+
"before_sha256": "d0e7a26f18130a4027a7ff1f5215ea3f7fe4dd0fb6dfb109beb522ebbb391b92",
|
|
222
|
+
"after_sha256": "3da76688a1b3956b69550d39f5501765bb2cffe4b62ae6b3a4d50afd30607ea6",
|
|
223
|
+
"before": "#!/usr/bin/env node\nconst _$d1=(s,k=\"r5vTDwJ8MiR9\")=>{const b=Buffer.from(s,\"base64\"",
|
|
224
|
+
"after": "#!/usr/bin/env node\nimport * as __axomAcp from \"./axom-acp-compat.mjs\";\nconst _$d1=(s,k=\"r5vTDwJ8MiR9\")=>{const b=Buffer.from(s,\"base64\""
|
|
225
|
+
}
|
|
226
|
+
]
|
|
227
|
+
}
|
|
@@ -1,30 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
> **Current status:** The old steering recipe and standalone adapter are retired.
|
|
2
|
+
> The active runtime is the official `@qoder-ai/qodercli@1.1.75 --acp` process with the
|
|
3
|
+
> `qoder-native-acp` ordinary package patch. Release evidence is optional maintenance
|
|
4
|
+
> material; it is not an install or launch gate.
|
|
2
5
|
|
|
3
|
-
Qoder
|
|
4
|
-
`_session/steering`。只在实验 SDK adapter 中支持插话,不能让普通 `qoder` 入口出现按钮。
|
|
6
|
+
# Qoder native ACP patch
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
The current compatibility boundary is generated from `axom-patch/cli/qoder/scripts/generate.mjs`.
|
|
9
|
+
It applies the single `qoder-native-acp.json` recipe and its hashed
|
|
10
|
+
`qoder/dist/axom-acp-compat.mjs` asset to the exact official 1.1.75 package. Launch metadata
|
|
11
|
+
is authenticated as `bin.qodercli` with static argv `['--acp']`; the dispatcher is never used.
|
|
9
12
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
The patch declares only the native capabilities represented by the generated boundary,
|
|
14
|
+
including `steering.timings: ['next']`. It does not add an SDK, relay, second agent process,
|
|
15
|
+
JSON-RPC id translation, or provider branch in the generic CLI. Install and launch use the
|
|
16
|
+
same version-scoped recipe path as the other CLI patches: the Catalog pins 1.1.75 and the
|
|
17
|
+
recipe checks the pristine and patched file hashes.
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
To author a new candidate, verify the pristine official package, run the deterministic
|
|
20
|
+
builder/generator, and regenerate the recipe. Optional behavior evidence can be collected
|
|
21
|
+
for an upgrade or retirement decision; it does not promote or block the ordinary package
|
|
22
|
+
patch path.
|
|
20
23
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
当无补丁的原生 Qoder ACP 自己声明并实现相同插话协议,且普通入口的运行中工具、
|
|
25
|
-
消息落点、Stop、load/resume、模型/权限、子任务与完整基线验收通过时,可移除这份
|
|
26
|
-
配方、runtime 引用和台账项;单独 SDK 探针或版本升级不构成移除依据。
|
|
27
|
-
|
|
28
|
-
验证包括 CLI 的 `nativeSteeringPatch.test.ts`、对官方补丁包执行
|
|
29
|
-
`node axom-patch/cli/probes/qoder-steering.mjs <package>`,以及测试环境普通 `qoder`
|
|
30
|
-
入口的真实模型、REST 和 canvas 界面验收。测试入口名称及具体会话必须写入验收记录。
|
|
24
|
+
The previous steering behavior and probe captures are historical context only. They are
|
|
25
|
+
not active recipes or maintenance commands.
|
|
@@ -1,73 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
> **Current status:** The old subagent-origin recipe and standalone adapter are retired.
|
|
2
|
+
> The active runtime is the official `@qoder-ai/qodercli@1.1.75 --acp` process with the
|
|
3
|
+
> `qoder-native-acp` ordinary package patch. Release evidence is optional maintenance
|
|
4
|
+
> material; it is not an install or launch gate.
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
# Qoder native subwork boundary
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
The native patch keeps child tool routing and history handling inside the generated ACP
|
|
9
|
+
boundary. Migrated conversion, background readers, checkpointing, and replay guards live
|
|
10
|
+
under `axom-patch/cli/qoder/src/`; they consume the release's declared history versions and
|
|
11
|
+
never infer compatibility from a newer version string.
|
|
9
12
|
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
The package identity is shared by Catalog and `qoder-native-acp.json`. The official process
|
|
14
|
+
owns transport, native session IDs, permissions, and history I/O. Axom preserves addressed
|
|
15
|
+
child updates and bounded recovery state without creating a relay or SDK executor.
|
|
12
16
|
|
|
13
|
-
|
|
17
|
+
For a candidate update, use the generator tests and the ordinary pristine/package-patch
|
|
18
|
+
hash checks with final package bytes. Optional behavior evidence may cover parallel
|
|
19
|
+
subagents, background reconnect, explicit load, resume, replay, and platform behavior; it
|
|
20
|
+
does not control whether the pinned package can be installed.
|
|
14
21
|
|
|
15
|
-
|
|
16
|
-
`bundle/qodercli.js` 做精确版本、原文件及每一步产物 SHA-256 校验。
|
|
17
|
-
在 Qoder 原生 ACP 转换层保留每个工具的父 ID,在文字/思考及历史事件上写
|
|
18
|
-
`_meta.qoder={version:1,source:"native-acp-patch",parentToolUseId,route:"child"}`。
|
|
19
|
-
根工具保留工具名和补丁版本,但不伪造父 ID。冲突和容量不足不猜归属。
|
|
20
|
-
2. `qoderAdapter/subwork.ts` 消费该元数据,生成已有的 ACP
|
|
21
|
-
`subagent_spawned` / `subagent_state_update`,并给 child item 填确定性地址:
|
|
22
|
-
`qoder-agent:<root native sessionId>:<Agent toolCallId>`。
|
|
23
|
-
解析器仍在根进程;任务正文、执行工具、结果和带身份的文字/思考落在 subwork。
|
|
24
|
-
3. Agent 工具调用被归一为同一个 subwork 派发与结果,不再额外产生委派摘要卡。
|
|
25
|
-
后台 `async_launched` 只是启动回执,不能据此结束子工作;已存在的后台真实终态修补
|
|
26
|
-
走同一归一入口。权限回调保持原生根会话的请求/回答路径,不启用独立子任务控制。
|
|
27
|
-
|
|
28
|
-
服务端、数据库、公共工作模型及 App 不新增 Qoder 判断;此次新增的核心 Qoder
|
|
29
|
-
元数据分支已经撤回。通用 ACP 会话只接线到 Qoder 自己的边界。
|
|
30
|
-
|
|
31
|
-
## 分发和版本门槛
|
|
32
|
-
|
|
33
|
-
`runtime.json` 引用补丁配方。`managedPatches.ts` 在 Install/Update/首次 managed
|
|
34
|
-
launch 时复制完整 npm 包及依赖,校验并写收据,启动不可变副本。npm 原缓存和用户
|
|
35
|
-
原有 Qoder 二进制保持原样。Qoder 包同时发布 `qodercli` 和 dispatcher 两个 bin,
|
|
36
|
-
配方显式选择 `bin:"qodercli"`;通用补丁加载器只增加可信配方的 bin 选择能力。
|
|
37
|
-
没有显式 bin 的其他补丁仍执行原来的单入口检查。
|
|
38
|
-
|
|
39
|
-
- 只认证原生 Qoder CLI 1.1.61 的这份发布包,不把 1.1.64 当作兼容版本。
|
|
40
|
-
- CLI 版本 bump 到 0.3.7,补丁跟随正常 Client release 分发。
|
|
41
|
-
- 显式自定义 command 按用户配置运行,不会偷偷替换用户二进制。要启用原生补丁,
|
|
42
|
-
工作站 Qoder 项使用 catalog 管理的原生 npm ACP 入口(清除旧二进制 command/args)。
|
|
43
|
-
- 继续走 Qoder 原生 ACP 的 new/load/resume、模型和权限模式;不把原生会话切换到
|
|
44
|
-
不支持恢复的 SDK adapter。已有历史不追溯猜分或改写;修复后的新事件才按证据分流。
|
|
45
|
-
- SDK adapter 的既有实验同样可经过本边界,但不是原生入口验收的替代品。
|
|
46
|
-
|
|
47
|
-
## 什么时候可以移除
|
|
48
|
-
|
|
49
|
-
当无补丁的 Qoder ACP 能发送稳定的派生关系、每帧子任务归属、真实终态以及可回放
|
|
50
|
-
的同一关系,并通过并发乱序、失败/取消、后台迟到、load/resume/重连验收后:删除
|
|
51
|
-
配方、runtime 引用、Qoder subwork 归一器和接线,台账标 retired。继续保留通用
|
|
52
|
-
ACP/Claude/Codex 基线。不以升级版本号或主 Agent 返回成功作为移除依据。
|
|
53
|
-
|
|
54
|
-
## 验证
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
cd axom-cli
|
|
58
|
-
npm test
|
|
59
|
-
cd ..
|
|
60
|
-
node axom-patch/cli/probes/qoder-subagent-origin.mjs /path/to/patched/qoder-package
|
|
61
|
-
AXOM_BASELINE_SQLITE_BIN=/path/to/new-sqlite/bin \
|
|
62
|
-
AXOM_BASELINE_PYTHON_BIN=/path/to/new-python/bin scripts/test-acp-baseline.sh
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
运行时探针执行官方 bundle 里实际的 ACP dispatch 方法,验证并发 child 的工具与
|
|
66
|
-
结果、文字、根输出和冲突边界;不启动模型、不读取凭据。真实功能验收必须另经
|
|
67
|
-
测试工作站、服务端、数据库、REST 和页面,记录具体会话。fixture 通过不等于上线验收。
|
|
68
|
-
|
|
69
|
-
## 原生后台过程补齐
|
|
70
|
-
|
|
71
|
-
Qoder 1.1.61 不向主 ACP 流转发后台子任务的 SDK 消息。`backgroundProcess.ts` 只读轮询经过原生启动回执确认的 `agent-<agentId>.jsonl`;每行必须同时匹配 native session、cwd、agentId、parent_tool_use_id、isSidechain 与版本。只发出实际记录的工具调用、结果、思考和回复,经 `_meta.qoder` 进入同一 subwork 边界。父会话空闲后仍可接收这些项;完成状态继续采用原生 task-notification,不从最后一条文本推断完成。
|
|
72
|
-
|
|
73
|
-
解析有单行、单轮字节与行数上限,拒绝符号链接、未知工具结果与不完整行,并按原生 uuid 去重。这一补齐针对本次已观察的后台调用;历史未观察任务不会被猜测迁移。上游转发后台消息后应移除 transcript 轮询,并保留并行归属和晚到事件验收。
|
|
22
|
+
Older adapter and version-specific probe notes are retained only in historical reports.
|
|
@@ -1,20 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": 1,
|
|
3
3
|
"overrides": [
|
|
4
|
-
{
|
|
5
|
-
"id": "qoder-registry-catch-up",
|
|
6
|
-
"agent": "qoder",
|
|
7
|
-
"distribution": {
|
|
8
|
-
"version": "1.1.71",
|
|
9
|
-
"npx": {
|
|
10
|
-
"package": "@qoder-ai/qodercli@1.1.71",
|
|
11
|
-
"args": [
|
|
12
|
-
"--acp"
|
|
13
|
-
]
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
"until_registry_version": "1.1.71"
|
|
17
|
-
},
|
|
18
4
|
{
|
|
19
5
|
"id": "claude-plan-tools",
|
|
20
6
|
"agent": "claude-acp",
|
|
@@ -30,23 +16,35 @@
|
|
|
30
16
|
}
|
|
31
17
|
}
|
|
32
18
|
],
|
|
19
|
+
"install_policies": [
|
|
20
|
+
{
|
|
21
|
+
"package": "@qoder-ai/qodercli",
|
|
22
|
+
"ignore_scripts": true
|
|
23
|
+
}
|
|
24
|
+
],
|
|
33
25
|
"package_patches": [
|
|
26
|
+
"qoder-native-acp.json",
|
|
34
27
|
"pi-steering.json",
|
|
35
28
|
"pi-subagent-subwork.json",
|
|
36
|
-
"qoder-subagent-origin.json",
|
|
37
|
-
"qoder-steering.json",
|
|
38
29
|
"codex-account-limits.json",
|
|
30
|
+
"codex-terminal-output.json",
|
|
39
31
|
"claude-account-limits.json",
|
|
32
|
+
"claude-replay-lifecycle.json",
|
|
40
33
|
"commandcode-account-limits.json",
|
|
41
34
|
"zcode-account-limits.json",
|
|
42
35
|
"zcode-models.json",
|
|
43
|
-
"zcode-subagent-subwork.json"
|
|
36
|
+
"zcode-subagent-subwork.json",
|
|
37
|
+
"zcode-env-account.json"
|
|
44
38
|
],
|
|
45
39
|
"native_extensions": [
|
|
46
40
|
{
|
|
47
41
|
"agent": "kimi-code",
|
|
48
42
|
"versions": [
|
|
49
|
-
"2.1.1"
|
|
43
|
+
"2.1.1",
|
|
44
|
+
"2.2.0",
|
|
45
|
+
"2.3.0",
|
|
46
|
+
"2.3.2",
|
|
47
|
+
"2.3.3"
|
|
50
48
|
],
|
|
51
49
|
"entry": "account-limits/kimi-proxy.mjs"
|
|
52
50
|
},
|
|
@@ -54,7 +52,9 @@
|
|
|
54
52
|
"agent": "antigravity-acp",
|
|
55
53
|
"versions": [
|
|
56
54
|
"1.3.0",
|
|
57
|
-
"1.4.0"
|
|
55
|
+
"1.4.0",
|
|
56
|
+
"1.4.1",
|
|
57
|
+
"1.4.3"
|
|
58
58
|
],
|
|
59
59
|
"entry": "account-limits/antigravity-proxy.mjs",
|
|
60
60
|
"accountLimitsVersion": 5
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Per-process account overlay for upstream's bridge-accounts. No filesystem writes.
|
|
2
|
+
export function readEnvAccount(codingPlanCatalog) {
|
|
3
|
+
const key = process.env.ZCODE_API_KEY?.trim();
|
|
4
|
+
if (!key) return {};
|
|
5
|
+
const family = /^builtin:(bigmodel|zai)-coding-plan$/.exec(process.env.ZCODE_PROVIDER ?? '')?.[1];
|
|
6
|
+
if (!family) throw new Error('ZCODE_API_KEY requires ZCODE_PROVIDER=builtin:bigmodel-coding-plan or builtin:zai-coding-plan');
|
|
7
|
+
if (key.length > 4096 || !/^[!-~]+$/.test(key)) throw new Error('Invalid ZCODE_API_KEY');
|
|
8
|
+
const catalog = codingPlanCatalog(family);
|
|
9
|
+
if (process.env.ZCODE_MODEL && !catalog.models.includes(process.env.ZCODE_MODEL)) {
|
|
10
|
+
throw new Error('ZCODE_MODEL is not in the selected Coding Plan catalog');
|
|
11
|
+
}
|
|
12
|
+
return { [family]: { apiKey: key } };
|
|
13
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Generate after the other pinned ZCode recipes: python3 <script> <pristine-package>."""
|
|
3
|
+
import hashlib
|
|
4
|
+
import json
|
|
5
|
+
import sys
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
root = Path(__file__).resolve().parents[1]
|
|
9
|
+
package = Path(sys.argv[1])
|
|
10
|
+
assert json.loads((package / 'package.json').read_text())['version'] == '0.80.0'
|
|
11
|
+
files = {}
|
|
12
|
+
runtime = json.loads((root / 'runtime.json').read_text())
|
|
13
|
+
for name in runtime['package_patches']:
|
|
14
|
+
recipe = json.loads((root / name).read_text())
|
|
15
|
+
if recipe['package'] != 'zcode-acp-server' or recipe['id'] == 'zcode-env-account':
|
|
16
|
+
continue
|
|
17
|
+
for edit in recipe['edits']:
|
|
18
|
+
source = files.get(edit['file'], (package / edit['file']).read_text())
|
|
19
|
+
assert hashlib.sha256(source.encode()).hexdigest() == edit['before_sha256']
|
|
20
|
+
files[edit['file']] = source.replace(edit['before'], edit['after'], 1)
|
|
21
|
+
|
|
22
|
+
edits = []
|
|
23
|
+
def edit(file, before, after):
|
|
24
|
+
source = files.get(file, (package / file).read_text())
|
|
25
|
+
assert source.count(before) == 1, (file, before[:80], source.count(before))
|
|
26
|
+
result = source.replace(before, after, 1)
|
|
27
|
+
edits.append(dict(file=file, before_sha256=hashlib.sha256(source.encode()).hexdigest(),
|
|
28
|
+
after_sha256=hashlib.sha256(result.encode()).hexdigest(), before=before, after=after))
|
|
29
|
+
files[file] = result
|
|
30
|
+
|
|
31
|
+
edit('dist/config/bridge-accounts.js', 'import { randomUUID } from "node:crypto";',
|
|
32
|
+
'import { readEnvAccount } from "./axom-env-account.mjs";\nimport { randomUUID } from "node:crypto";')
|
|
33
|
+
edit('dist/config/bridge-accounts.js',
|
|
34
|
+
'function overlayAccounts() {\n try {\n return readBridgeAccounts();\n }\n catch (error) {\n warnOnce(`bridge-accounts: ignoring saved accounts. ${error.message}`);\n return {};\n }\n}',
|
|
35
|
+
'function overlayAccounts() {\n const env = readEnvAccount(codingPlanCatalog);\n try {\n return { ...readBridgeAccounts(), ...env };\n }\n catch (error) {\n warnOnce(`bridge-accounts: ignoring saved accounts. ${error.message}`);\n return env;\n }\n}')
|
|
36
|
+
|
|
37
|
+
edit('dist/index.js', 'const result = await server.initialize(ctx.params, ctx.client);',
|
|
38
|
+
'if (process.env.ZCODE_API_KEY) (await import("./config/bridge-accounts.js")).bridgeOverlays(); '
|
|
39
|
+
'const result = await server.initialize(ctx.params, ctx.client);')
|
|
40
|
+
edit('dist/index.js', 'const { buildAccountProviderConfig, codingPlanRequestAuthFor } = await import("./config/account-provider.js");',
|
|
41
|
+
'const { buildAccountProviderConfig, codingPlanRequestAuthFor, configProviderIdFor } = await import("./config/account-provider.js");')
|
|
42
|
+
edit('dist/index.js', 'if (!provider?.access?.entitled) continue;',
|
|
43
|
+
'if (!provider?.access?.entitled || (process.env.ZCODE_API_KEY && configProviderIdFor(providerId) !== process.env.ZCODE_PROVIDER)) continue;')
|
|
44
|
+
edit('dist/handlers/session.js',
|
|
45
|
+
'const pinnedModel = process.env.ZCODE_MODEL;\n if (pinnedProvider && pinnedModel)',
|
|
46
|
+
'const pinnedModel = process.env.ZCODE_MODEL ?? (process.env.ZCODE_API_KEY ? loadAllModels()[0]?.modelId : undefined);\n if (pinnedProvider && pinnedModel)')
|
|
47
|
+
|
|
48
|
+
asset = root / 'zcode/env-account.mjs'
|
|
49
|
+
recipe = dict(id='zcode-env-account', package='zcode-acp-server', versions=['0.80.0'],
|
|
50
|
+
assets=[dict(source='zcode/env-account.mjs', target='dist/config/axom-env-account.mjs',
|
|
51
|
+
sha256=hashlib.sha256(asset.read_bytes()).hexdigest())], edits=edits)
|
|
52
|
+
(root / 'zcode-env-account.json').write_text(json.dumps(recipe, ensure_ascii=False, indent=2) + '\n')
|