sliccy 6.256.7 → 6.256.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/node-server/_cloud_core/src/cone-config/cone-config-rules.d.mts +89 -0
- package/dist/node-server/_cloud_core/src/cone-config/cone-config-rules.d.mts.map +1 -0
- package/dist/node-server/_cloud_core/src/cone-config/cone-config-rules.mjs +170 -0
- package/dist/node-server/_cloud_core/src/cone-config/index.d.ts +2 -3
- package/dist/node-server/_cloud_core/src/cone-config/index.d.ts.map +1 -1
- package/dist/node-server/_cloud_core/src/cone-config/index.js +13 -79
- package/dist/node-server/_cloud_core/tests/cone-config/bundle-cases.test.d.ts +2 -0
- package/dist/node-server/_cloud_core/tests/cone-config/bundle-cases.test.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/tests/cone-config/bundle-cases.test.js +57 -0
- package/dist/node-server/_cloud_core/tests/cone-config/cone-config.test.js +7 -5
- package/dist/node-server/_cloud_core/tests/fixtures/cone-config-cases.d.mts +37 -0
- package/dist/node-server/_cloud_core/tests/fixtures/cone-config-cases.d.mts.map +1 -0
- package/dist/node-server/_cloud_core/tests/fixtures/cone-config-cases.mjs +139 -0
- package/dist/node-server/_cloud_core/tests/resume-cone-config.test.js +17 -0
- package/dist/ui/.vite/manifest.json +184 -184
- package/dist/ui/assets/{account-store-btH-rhSC.js → account-store-C53Um_mm.js} +1 -1
- package/dist/ui/assets/{account-store-CzcIBhIW.js → account-store-D6K6yEpr.js} +1 -1
- package/dist/ui/assets/{adobe-CbwrOy6h.js → adobe-BA_LWoXE.js} +1 -1
- package/dist/ui/assets/{adobe-CJagkQaj.js → adobe-BoUssaQx.js} +1 -1
- package/dist/ui/assets/{agent-panels-CWkdH3No.js → agent-panels-BN_g6RId.js} +1 -1
- package/dist/ui/assets/{almost-bash-shell-headless-CJ_eP6rj.js → almost-bash-shell-headless-BKZkvJ6e.js} +15 -15
- package/dist/ui/assets/{apply-layout-BIG5g9tp.js → apply-layout-B1yCBAUQ.js} +1 -1
- package/dist/ui/assets/{azure-openai-Cw7yGm0E.js → azure-openai-0Br25NSz.js} +1 -1
- package/dist/ui/assets/{azure-openai-DmBsM65e.js → azure-openai-CgjU22QR.js} +1 -1
- package/dist/ui/assets/{cdp-fHtNpyG6.js → cdp-CHnFD10W.js} +1 -1
- package/dist/ui/assets/{cerebras-BF4ZkjX5.js → cerebras-BekGtwM3.js} +1 -1
- package/dist/ui/assets/{cerebras-BRvzPIo6.js → cerebras-Dp-xxYie.js} +1 -1
- package/dist/ui/assets/{composer-speech-CYKpfumH.js → composer-speech-Cdhkyi5i.js} +1 -1
- package/dist/ui/assets/{connect-surface-eAvkKA7C.js → connect-surface-SdQMNXt8.js} +1 -1
- package/dist/ui/assets/{directed-approval-FuN8_c_j.js → directed-approval-WBVpFoZZ.js} +1 -1
- package/dist/ui/assets/{emscripten-vfs-hook-Cc4WeSPd.js → emscripten-vfs-hook-DZwJD4y2.js} +1 -1
- package/dist/ui/assets/frames-bfeIWWdf.js +1 -0
- package/dist/ui/assets/{frozen-archive-writer-CmH9_k8F.js → frozen-archive-writer-BQ8dZRjd.js} +1 -1
- package/dist/ui/assets/{frozen-session-delete-fM62FhkX.js → frozen-session-delete-ep62Dh64.js} +1 -1
- package/dist/ui/assets/{frozen-session-identity-blXQV4n9.js → frozen-session-identity-BawyNd51.js} +1 -1
- package/dist/ui/assets/{gelatiere-unit-Bo7PCnbF.js → gelatiere-unit-BdvxF-bo.js} +1 -1
- package/dist/ui/assets/{github-C1rbK9rb.js → github-685Sxap0.js} +1 -1
- package/dist/ui/assets/{github-CQol1Ste.js → github-B3ki0kW7.js} +1 -1
- package/dist/ui/assets/{github-copilot-Dh5Sw_oV.js → github-copilot-Bn1Tofcl.js} +1 -1
- package/dist/ui/assets/{github-copilot-Da1-tlWc.js → github-copilot-lc6Ufqa3.js} +1 -1
- package/dist/ui/assets/{hear-DhXegde8.js → hear-0djFXv_9.js} +1 -1
- package/dist/ui/assets/{js-realm-worker-BSYR2sfX.js → js-realm-worker--QdwOZAk.js} +2 -2
- package/dist/ui/assets/{jsh-executor-v3qKqkZF.js → jsh-executor-BxZA2hXH.js} +3 -3
- package/dist/ui/assets/{kernel-worker-BItmIWYW.js → kernel-worker-CLURD9IR.js} +8 -8
- package/dist/ui/assets/{lick-ws-bridge-gBNtu0RL.js → lick-ws-bridge-Ck6kaT2S.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-BOvw32aW.js → lick-ws-bridge-CoG2qesw.js} +1 -1
- package/dist/ui/assets/{live-session-curation-8wVj6wZH.js → live-session-curation-DC5ilmnE.js} +1 -1
- package/dist/ui/assets/{live-session-curation-7CTGumla.js → live-session-curation-DRsIIv8O.js} +1 -1
- package/dist/ui/assets/{live-session-snapshot-D8qPxZ7E.js → live-session-snapshot-CkkdDwxI.js} +1 -1
- package/dist/ui/assets/{local-llm-CgwaZ6Gd.js → local-llm-DGOkH498.js} +1 -1
- package/dist/ui/assets/{local-llm-DvbP3RyJ.js → local-llm-DkHtUWu5.js} +1 -1
- package/dist/ui/assets/{main-IZrprgCE.js → main-D9oUgloo.js} +3 -3
- package/dist/ui/assets/{main-cherry-CiVZP2ux.js → main-cherry-CG3eAQlV.js} +1 -1
- package/dist/ui/assets/{mcp-command-BQnTrbHl.js → mcp-command-CNI5aZm4.js} +10 -10
- package/dist/ui/assets/{memory-curation-seam-CjpYohBK.js → memory-curation-seam-CQRsPoO7.js} +1 -1
- package/dist/ui/assets/{memory-health-DiVvDJo6.js → memory-health-qES7fXVO.js} +1 -1
- package/dist/ui/assets/{memory-write-execute-CPlnwj08.js → memory-write-execute-Dz2AOQlc.js} +1 -1
- package/dist/ui/assets/{merge-folded-cost-into-frozen-CDpUEipJ.js → merge-folded-cost-into-frozen-Cp-3wSiw.js} +1 -1
- package/dist/ui/assets/{new-session-DMBvlX7U.js → new-session-oUWvETeg.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-z9Ak2U5k.js → oauth-bootstrap-DFYdogxM.js} +2 -2
- package/dist/ui/assets/{onboarding-orchestrator-Cmp_7XS6.js → onboarding-orchestrator-DwzGpye8.js} +1 -1
- package/dist/ui/assets/{openai-codex-XtzU7AV5.js → openai-codex-Lc8obIKU.js} +1 -1
- package/dist/ui/assets/{openai-codex-DObnOrti.js → openai-codex-a3KU-PYz.js} +1 -1
- package/dist/ui/assets/{openrouter-h4PBvqqd.js → openrouter-CQJlo-7Q.js} +1 -1
- package/dist/ui/assets/{openrouter-B9YPpMez.js → openrouter-DCWj0mxO.js} +1 -1
- package/dist/ui/assets/{openrouter-free-Bw98ZXz_.js → openrouter-free-C6ait2MT.js} +1 -1
- package/dist/ui/assets/{openrouter-free-DsUNrtke.js → openrouter-free-CB_5hU3Q.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-DlBVHDiI.js → openrouter-oauth-B5nARrbg.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-CtAf-wKQ.js → openrouter-oauth-BFc8K4Yo.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-C2H1GujD.js → panel-rpc-handlers-C9VEsFxZ.js} +2 -2
- package/dist/ui/assets/{panelize-shell-DjEoCne9.js → panelize-shell-DDW-oKWB.js} +1 -1
- package/dist/ui/assets/{pi-edit-execution-DdXRrxQk.js → pi-edit-execution-DATJLr54.js} +1 -1
- package/dist/ui/assets/{provider-D88ZP1Lj.js → provider-BFovwIok.js} +1 -1
- package/dist/ui/assets/{provider-CkcZnU60.js → provider-C-y9IsNb.js} +1 -1
- package/dist/ui/assets/{provider-settings-D6OJgUt2.js → provider-settings-BaLOxUmM.js} +1 -1
- package/dist/ui/assets/provider-store-access-BKZWsf7y.js +1 -0
- package/dist/ui/assets/provider-store-access-DeL4f_Qp.js +1 -0
- package/dist/ui/assets/{providers-Bh-gB-84.js → providers-3AZB7Al_.js} +1 -1
- package/dist/ui/assets/{providers-CNaCaxZH.js → providers-DErgbS_D.js} +2 -2
- package/dist/ui/assets/{quick-llm-D3vw1Iw4.js → quick-llm-D9onASDw.js} +1 -1
- package/dist/ui/assets/{realm-inprocess-c5_SKCj3.js → realm-inprocess-NmMZhEli.js} +2 -2
- package/dist/ui/assets/{realm-unhandled-rejections-B-HhibQP.js → realm-unhandled-rejections-BC_zQVgp.js} +1 -1
- package/dist/ui/assets/{realm-unhandled-rejections-V5oYilet.js → realm-unhandled-rejections-Dj1YS7MU.js} +1 -1
- package/dist/ui/assets/{remote-terminal-view-ByfloxIg.js → remote-terminal-view-CIQ1PZ9w.js} +2 -2
- package/dist/ui/assets/{restore-BByLi1Yd.js → restore-UlheFg8K.js} +1 -1
- package/dist/ui/assets/{run-BG76L9eu.js → run-BDovOz9c.js} +1 -1
- package/dist/ui/assets/{run-C-tci7Wb.js → run-BgxWF2oM.js} +1 -1
- package/dist/ui/assets/{run-B9uXGQYv.js → run-Bi_CtYdz.js} +2 -2
- package/dist/ui/assets/{run-BZCg7fqf.js → run-Cph20KL5.js} +2 -2
- package/dist/ui/assets/{run-CJQ6QgvR.js → run-Q1zeRJAj.js} +2 -2
- package/dist/ui/assets/{scale-B8PGb3fG.js → scale-DGaWcXnU.js} +1 -1
- package/dist/ui/assets/{serve-command-fOeuDlHT.js → serve-command-Dh9-nJKr.js} +2 -2
- package/dist/ui/assets/{serve-runtime-BgsoA65p.js → serve-runtime-CWel-hw-.js} +1 -1
- package/dist/ui/assets/{session-command-memory-Z4gG5kc5.js → session-command-memory-GUh-MoKZ.js} +2 -2
- package/dist/ui/assets/{session-jsonl-CRoUGl0k.js → session-jsonl-DnrB6xFa.js} +1 -1
- package/dist/ui/assets/{session-search-index-C9AzKIIE.js → session-search-index-C2YxS1lH.js} +1 -1
- package/dist/ui/assets/{setup-feature-flags-remote-HCx9Z23R.js → setup-feature-flags-remote-B4z23nRG.js} +1 -1
- package/dist/ui/assets/{setup-model-catalog-C_9E6bou.js → setup-model-catalog-Do0Mpo0E.js} +1 -1
- package/dist/ui/assets/{silent-renew-backoff-ByLo6zsQ.js → silent-renew-backoff-ki1gZZUf.js} +1 -1
- package/dist/ui/assets/slicc-version-C-ysp_tA.js +1 -0
- package/dist/ui/assets/{soundscape-KuEhg0nr.js → soundscape-AyeLTgUD.js} +1 -1
- package/dist/ui/assets/{speak-Di_o2s0D.js → speak-CCP5aDYi.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-4tRf736T.js → sprinkle-manager-Dsh6A0ZY.js} +1 -1
- package/dist/ui/assets/{sprinkle-renderer-EbUVsHUB.js → sprinkle-renderer-tXii7z20.js} +1 -1
- package/dist/ui/assets/{ssh-COAG0Prl.js → ssh-QXOZ_9C5.js} +1 -1
- package/dist/ui/assets/{sudo-BlHPVMLU.js → sudo-CRyyMDJI.js} +1 -1
- package/dist/ui/assets/{supervisor-BjtHX13A.js → supervisor-BHGgl-nU.js} +1 -1
- package/dist/ui/assets/{sync-dialog-CG5xrbzN.js → sync-dialog-LmjIPOl5.js} +1 -1
- package/dist/ui/assets/{tab-D9i-XOmT.js → tab-BxQIB_Z9.js} +1 -1
- package/dist/ui/assets/{transformers-env-BCIh311V.js → transformers-env-DviFGXIh.js} +1 -1
- package/dist/ui/assets/{tray-leader-DfoPsK4G.js → tray-leader-DRAiFyH0.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-Cn6l6kQM.js → tray-leave-runtime-CBTcgox7.js} +1 -1
- package/dist/ui/assets/{tray-sidecar-AttyJaV8.js → tray-sidecar-DR2gfFr1.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-BPnMErp6.js → upgrade-detection-CLcKWSrE.js} +1 -1
- package/dist/ui/assets/{upgrade-to-seven-oM6Y2jpf.js → upgrade-to-seven-DGK7_pzH.js} +1 -1
- package/dist/ui/assets/{v86-BhyJfU3t.js → v86-hpXjGyeJ.js} +1 -1
- package/dist/ui/assets/{voice-reply-DhFXmtN1.js → voice-reply-CbIPZ3RI.js} +1 -1
- package/dist/ui/assets/{wc-attach-B2_dNi4B.js → wc-attach-SKMBIFz8.js} +2 -2
- package/dist/ui/assets/{wc-browser-BvSPcFnk.js → wc-browser-BmbHK6T2.js} +1 -1
- package/dist/ui/assets/{wc-computers-P_YXw5mk.js → wc-computers-CCW36xmA.js} +1 -1
- package/dist/ui/assets/{wc-detached-C4uhpekQ.js → wc-detached-wYR_-B4N.js} +1 -1
- package/dist/ui/assets/{wc-extension-D3l9KUxg.js → wc-extension-CowOxRjX.js} +2 -2
- package/dist/ui/assets/{wc-follower-oauth-PiJAsXE9.js → wc-follower-oauth-B4ghxt1Z.js} +1 -1
- package/dist/ui/assets/{wc-follower-BN7GwkbB.js → wc-follower-trWpq3AT.js} +3 -3
- package/dist/ui/assets/{wc-gelatiere-aEAOP3ay.js → wc-gelatiere-DCWY8DLx.js} +1 -1
- package/dist/ui/assets/{wc-live-BeX-_7T4.js → wc-live-DMxoy1ey.js} +5 -5
- package/dist/ui/assets/{wc-nav-D7tE4cOW.js → wc-nav-B60Q1YWx.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-BsRWvnNO.js → wc-onboarding-DFKkF2SS.js} +2 -2
- package/dist/ui/assets/{wc-permissions-xh98BF4d.js → wc-permissions-0ZaDh6E3.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-C2e75ECK.js → wc-placeholder-C1lk5MWN.js} +2 -2
- package/dist/ui/assets/{wc-profile-export-BOUD9Teb.js → wc-profile-export-C_CPVCiz.js} +3 -3
- package/dist/ui/assets/{wc-secret-request-9hLiDY0q.js → wc-secret-request-BVUEEzXV.js} +1 -1
- package/dist/ui/assets/{wc-settings-C1Ew3xtK.js → wc-settings-BGMa1-7M.js} +3 -3
- package/dist/ui/assets/{wc-shell-BQm4_AZ-.js → wc-shell-C8i5txed.js} +47 -42
- package/dist/ui/assets/{wc-shortcut-config-CG3A_xXd.js → wc-shortcut-config-D_X09nxe.js} +1 -1
- package/dist/ui/assets/{wc-sprinkles-DfhVMlB0.js → wc-sprinkles-DxoN0545.js} +2 -2
- package/dist/ui/assets/{wc-transcript-export-D5lf1B5S.js → wc-transcript-export-Cl9ciceV.js} +2 -2
- package/dist/ui/assets/{wc-tray-DrfK5jNi.js → wc-tray-CnnaCOxC.js} +4 -4
- package/dist/ui/assets/welcome-detection-BJdrXx9O.js +1 -0
- package/dist/ui/assets/{whisper-session-B-Uac3-A.js → whisper-session-DkP7Jo2t.js} +2 -2
- package/dist/ui/assets/{xai-grok-CHwFD6MH.js → xai-grok-0KYkTeE-.js} +1 -1
- package/dist/ui/assets/{xai-grok-xZGJWELa.js → xai-grok-SPC-yKdi.js} +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/ui/packages/webapp/index.html +3 -3
- package/dist/ui/packages/webapp/upgrade-to-seven.html +1 -1
- package/dist/ui/upgrade-to-seven.html +1 -1
- package/package.json +2 -2
- package/dist/ui/assets/frames-CU-jXCBt.js +0 -1
- package/dist/ui/assets/provider-store-access-Am4wDSnr.js +0 -1
- package/dist/ui/assets/provider-store-access-bHvRNk17.js +0 -1
- package/dist/ui/assets/slicc-version-BOvQ0meA.js +0 -1
- package/dist/ui/assets/welcome-detection-D98VbCw6.js +0 -1
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
// Shared accept/reject table for the cone-config bundle rules (#4129). Run
|
|
2
|
+
// against cloud-core's validators (tests/cone-config/bundle-cases.test.ts) and
|
|
3
|
+
// github-workflow's buildConeConfigFiles (scripts/cone-config-rules.test.mjs),
|
|
4
|
+
// so the two floats can never disagree on what a valid bundle is again.
|
|
5
|
+
//
|
|
6
|
+
// `changed` names the copy whose verdict this case flipped in #4129; a case
|
|
7
|
+
// without it pins behaviour both copies already shared.
|
|
8
|
+
const ok = { name: 'TOKEN', value: 'v', domains: ['api.example.com'] };
|
|
9
|
+
/**
|
|
10
|
+
* @typedef {{
|
|
11
|
+
* id: string;
|
|
12
|
+
* secret: unknown;
|
|
13
|
+
* reject?: string;
|
|
14
|
+
* domains?: string[];
|
|
15
|
+
* changed?: Array<'cloud-core' | 'github-workflow'>;
|
|
16
|
+
* }} SecretCase
|
|
17
|
+
*/
|
|
18
|
+
/** @type {SecretCase[]} */
|
|
19
|
+
export const SECRET_CASES = [
|
|
20
|
+
{ id: 'plain identifier', secret: ok, domains: ['api.example.com'] },
|
|
21
|
+
{
|
|
22
|
+
id: 'dotted mount secret name',
|
|
23
|
+
secret: { ...ok, name: 's3.r2.access_key_id', domains: ['*.r2.cloudflarestorage.com'] },
|
|
24
|
+
domains: ['*.r2.cloudflarestorage.com'],
|
|
25
|
+
changed: ['cloud-core'],
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: 'hyphenated name',
|
|
29
|
+
secret: { ...ok, name: 'db.prod-eu.password' },
|
|
30
|
+
domains: ['api.example.com'],
|
|
31
|
+
changed: ['cloud-core'],
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: 'reserved oauth.* namespace',
|
|
35
|
+
secret: { ...ok, name: 'oauth.github.token' },
|
|
36
|
+
reject: 'oauth\\.\\* namespace is reserved',
|
|
37
|
+
changed: ['cloud-core'],
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
id: 'name shadowing another secret’s _DOMAINS line',
|
|
41
|
+
secret: { ...ok, name: 'ADOBE_IMS_TOKEN_DOMAINS', value: 'evil.example' },
|
|
42
|
+
reject: '_DOMAINS are reserved',
|
|
43
|
+
changed: ['cloud-core', 'github-workflow'],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: 'empty domains list',
|
|
47
|
+
secret: { ...ok, domains: [] },
|
|
48
|
+
reject: 'non-empty',
|
|
49
|
+
changed: ['cloud-core'],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: 'untrimmed domains are trimmed',
|
|
53
|
+
secret: { ...ok, domains: [' api.example.com ', '\t*.example.com'] },
|
|
54
|
+
domains: ['api.example.com', '*.example.com'],
|
|
55
|
+
changed: ['cloud-core'],
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
id: 'blank domain entry',
|
|
59
|
+
secret: { ...ok, domains: ['api.example.com', ' '] },
|
|
60
|
+
reject: 'non-blank',
|
|
61
|
+
changed: ['cloud-core'],
|
|
62
|
+
},
|
|
63
|
+
{ id: 'name starting with a digit', secret: { ...ok, name: '9LIVES' }, reject: 'name must' },
|
|
64
|
+
{ id: 'name with =', secret: { ...ok, name: 'A=B' }, reject: 'name must' },
|
|
65
|
+
{ id: 'name with a space', secret: { ...ok, name: 'A B' }, reject: 'name must' },
|
|
66
|
+
{ id: 'name with a newline', secret: { ...ok, name: 'A\nB' }, reject: 'name must' },
|
|
67
|
+
{ id: 'missing name', secret: { value: 'v', domains: ['d'] }, reject: 'name must' },
|
|
68
|
+
{ id: 'multiline value', secret: { ...ok, value: 'a\nb' }, reject: 'single-line' },
|
|
69
|
+
{ id: 'CR in value', secret: { ...ok, value: 'a\rb' }, reject: 'single-line' },
|
|
70
|
+
{ id: 'missing value', secret: { name: 'A', domains: ['d'] }, reject: 'single-line' },
|
|
71
|
+
{ id: 'domains not an array', secret: { ...ok, domains: 'a,b' }, reject: 'string\\[\\]' },
|
|
72
|
+
{ id: 'non-string domain', secret: { ...ok, domains: [1] }, reject: 'string\\[\\]' },
|
|
73
|
+
{ id: 'comma in a domain', secret: { ...ok, domains: ['a,b'] }, reject: 'comma-free' },
|
|
74
|
+
{ id: 'newline in a domain', secret: { ...ok, domains: ['a\nb'] }, reject: 'single-line' },
|
|
75
|
+
{ id: 'secret not an object', secret: null, reject: 'not an object' },
|
|
76
|
+
];
|
|
77
|
+
/**
|
|
78
|
+
* @typedef {{
|
|
79
|
+
* id: string;
|
|
80
|
+
* account: unknown;
|
|
81
|
+
* reject?: string;
|
|
82
|
+
* changed?: Array<'cloud-core' | 'github-workflow'>;
|
|
83
|
+
* }} AccountCase
|
|
84
|
+
*/
|
|
85
|
+
/** @type {AccountCase[]} */
|
|
86
|
+
export const ACCOUNT_CASES = [
|
|
87
|
+
{
|
|
88
|
+
id: 'oauth account keeps only known fields',
|
|
89
|
+
account: {
|
|
90
|
+
providerId: 'github',
|
|
91
|
+
kind: 'oauth',
|
|
92
|
+
accessToken: 'gho',
|
|
93
|
+
refreshToken: 'ghr',
|
|
94
|
+
tokenExpiresAt: 1,
|
|
95
|
+
userName: 'octocat',
|
|
96
|
+
baseUrl: 'https://x',
|
|
97
|
+
extra: 'dropped',
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
id: 'oauth account with only the required fields',
|
|
102
|
+
account: { providerId: 'adobe', kind: 'oauth', accessToken: 'ims', tokenExpiresAt: '1' },
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
id: 'apikey account keeps only known fields',
|
|
106
|
+
account: {
|
|
107
|
+
providerId: 'azure',
|
|
108
|
+
kind: 'apikey',
|
|
109
|
+
apiKey: 'k',
|
|
110
|
+
baseUrl: 'https://x',
|
|
111
|
+
deployment: 'd',
|
|
112
|
+
apiVersion: 'v',
|
|
113
|
+
accessToken: 'dropped',
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
id: 'empty providerId',
|
|
118
|
+
account: { providerId: '', kind: 'apikey', apiKey: 'k' },
|
|
119
|
+
reject: 'providerId required',
|
|
120
|
+
changed: ['cloud-core'],
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
id: 'empty accessToken',
|
|
124
|
+
account: { providerId: 'x', kind: 'oauth', accessToken: '' },
|
|
125
|
+
reject: 'requires accessToken',
|
|
126
|
+
changed: ['cloud-core'],
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
id: 'empty apiKey',
|
|
130
|
+
account: { providerId: 'x', kind: 'apikey', apiKey: '' },
|
|
131
|
+
reject: 'requires apiKey',
|
|
132
|
+
changed: ['cloud-core'],
|
|
133
|
+
},
|
|
134
|
+
{ id: 'unknown kind', account: { providerId: 'x', kind: 'saml' }, reject: 'kind must be' },
|
|
135
|
+
{ id: 'missing kind', account: { providerId: 'x' }, reject: 'kind' },
|
|
136
|
+
{ id: 'account not an object', account: 'x', reject: 'not an object' },
|
|
137
|
+
];
|
|
138
|
+
export const VALID_EFFORT_LEVELS = ['off', 'minimal', 'low', 'medium', 'high', 'xhigh'];
|
|
139
|
+
export const INVALID_EFFORT_LEVELS = ['max', 'HIGH', 'ultra'];
|
|
@@ -63,4 +63,21 @@ describe('applyConeConfigDelta (read-modify-write of both files)', () => {
|
|
|
63
63
|
it('surfaces a clear error for a corrupt cone-config.json', () => {
|
|
64
64
|
expect(() => applyConeConfigDelta('{not json', '', {})).toThrow(/corrupt/);
|
|
65
65
|
});
|
|
66
|
+
// #4129: the agent can persist dotted names (S3 mount profiles) into the
|
|
67
|
+
// cone's secrets.env; the identifier-only rule used to fail every resume.
|
|
68
|
+
it('resumes a cone whose secrets.env holds dotted mount secrets', () => {
|
|
69
|
+
const out = applyConeConfigDelta(JSON.stringify({ model: 'adobe:claude-opus-4-6', accounts: [] }), 's3.r2.access_key_id=AK\ns3.r2.access_key_id_DOMAINS=*.r2.cloudflarestorage.com\n', { upsert: { secrets: [{ name: 'NEW', value: 'n', domains: ['x.com'] }] } });
|
|
70
|
+
expect(out.secretsEnv).toContain('s3.r2.access_key_id=AK\ns3.r2.access_key_id_DOMAINS=*.r2.cloudflarestorage.com\n');
|
|
71
|
+
expect(out.index.secretNames).toEqual(['s3.r2.access_key_id', 'NEW']);
|
|
72
|
+
});
|
|
73
|
+
// Deliberate: the stricter account rules apply to the persisted base too. An
|
|
74
|
+
// empty credential (only a raw-API start under the old rules could store one)
|
|
75
|
+
// fails the resume with the entry named instead of booting a dead account.
|
|
76
|
+
it('rejects a persisted account with an empty credential on resume', () => {
|
|
77
|
+
const existing = JSON.stringify({
|
|
78
|
+
model: 'adobe:claude-opus-4-6',
|
|
79
|
+
accounts: [{ providerId: 'adobe', kind: 'oauth', accessToken: '' }],
|
|
80
|
+
});
|
|
81
|
+
expect(() => applyConeConfigDelta(existing, '', {})).toThrow(/accounts\[0\]: oauth account requires accessToken/);
|
|
82
|
+
});
|
|
66
83
|
});
|