sliccy 6.256.6 → 6.256.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/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 +180 -180
- package/dist/ui/assets/{account-store-S8kUyO-M.js → account-store-BD1MW0QM.js} +1 -1
- package/dist/ui/assets/{account-store-IflysHgF.js → account-store-F-Hva1nS.js} +1 -1
- package/dist/ui/assets/{adobe-BdldJFqE.js → adobe-CLl8UgcL.js} +1 -1
- package/dist/ui/assets/{adobe-Bf7bKpWp.js → adobe-CndWdX0c.js} +1 -1
- package/dist/ui/assets/{agent-panels-DZ1ROkXe.js → agent-panels-DH8GU_hC.js} +1 -1
- package/dist/ui/assets/{almost-bash-shell-headless-BU5ubVVd.js → almost-bash-shell-headless-DhugB1_j.js} +13 -13
- package/dist/ui/assets/{apply-layout--InPgyK5.js → apply-layout-D8ntAMP_.js} +1 -1
- package/dist/ui/assets/{azure-openai-DOvouxkL.js → azure-openai-D-1XQgyJ.js} +1 -1
- package/dist/ui/assets/{azure-openai-Bph-xWhG.js → azure-openai-LY9c836N.js} +1 -1
- package/dist/ui/assets/{cdp-7hxMc8Ap.js → cdp-BpNgBtOj.js} +1 -1
- package/dist/ui/assets/{cerebras-CCvHR4Kb.js → cerebras-BZFZs9Ht.js} +1 -1
- package/dist/ui/assets/{cerebras-CXk-28Vp.js → cerebras-C2TF1niJ.js} +1 -1
- package/dist/ui/assets/{composer-speech-DOkE9Yas.js → composer-speech-Dxe7pRbz.js} +1 -1
- package/dist/ui/assets/{connect-surface-BT8Zmvi3.js → connect-surface-j7CbcbrP.js} +1 -1
- package/dist/ui/assets/{directed-approval-BowS5HJu.js → directed-approval-1NtgYEGb.js} +1 -1
- package/dist/ui/assets/{emscripten-vfs-hook-cdK4BEA1.js → emscripten-vfs-hook-Orkw8aUI.js} +1 -1
- package/dist/ui/assets/{frozen-archive-writer-BroC2IFb.js → frozen-archive-writer-CXiseW3m.js} +1 -1
- package/dist/ui/assets/{frozen-session-delete-B1LBlhSr.js → frozen-session-delete-CLQSNT5q.js} +1 -1
- package/dist/ui/assets/{frozen-session-identity-0cl1s5vX.js → frozen-session-identity-Dla2v_H8.js} +1 -1
- package/dist/ui/assets/{gelatiere-unit-DlbL1vWF.js → gelatiere-unit-DS5kYHdl.js} +1 -1
- package/dist/ui/assets/{github-CK_WWKOG.js → github-CwFqHwM7.js} +1 -1
- package/dist/ui/assets/{github-DbO3u5CO.js → github-DkBtRTtj.js} +1 -1
- package/dist/ui/assets/{github-copilot-CqPSNSZT.js → github-copilot-BgtimT-5.js} +1 -1
- package/dist/ui/assets/{github-copilot-BlGbL_oW.js → github-copilot-DvlR4p1V.js} +1 -1
- package/dist/ui/assets/{hear-RAUlFLt2.js → hear-DgkNLpQK.js} +1 -1
- package/dist/ui/assets/isomorphic-git-NKOLn8fc.js +90 -0
- package/dist/ui/assets/isomorphic-git-j4Nlq2U8.js +69 -0
- package/dist/ui/assets/{js-realm-worker--h2ZVFDX.js → js-realm-worker-DvaOkd8I.js} +2 -2
- package/dist/ui/assets/{jsh-executor-Bss0vwC8.js → jsh-executor-ByYCAfVx.js} +3 -3
- package/dist/ui/assets/{kernel-worker-CskSmow-.js → kernel-worker-xyDnHfnE.js} +8 -8
- package/dist/ui/assets/{lick-ws-bridge-DL4Gd0X6.js → lick-ws-bridge-BztgRobQ.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-1rR2wlS1.js → lick-ws-bridge-ViIkTZhn.js} +1 -1
- package/dist/ui/assets/{live-session-curation-CNJfUPD9.js → live-session-curation-CwlsC5Wo.js} +1 -1
- package/dist/ui/assets/{live-session-curation-DDWwZt0l.js → live-session-curation-vx6yGkHy.js} +1 -1
- package/dist/ui/assets/{live-session-snapshot-JEhfmyOd.js → live-session-snapshot-CjDUliT7.js} +1 -1
- package/dist/ui/assets/{local-llm-DjE0WS4W.js → local-llm-BDGbw8KW.js} +1 -1
- package/dist/ui/assets/{local-llm-CQlxyi_B.js → local-llm-Ck0NLGhL.js} +1 -1
- package/dist/ui/assets/{main-CqYCsHbd.js → main-YhmBlckm.js} +3 -3
- package/dist/ui/assets/{main-cherry-YR9834-k.js → main-cherry-B2tRa4cV.js} +1 -1
- package/dist/ui/assets/{mcp-command-DMn_j7KC.js → mcp-command-DCFbOqLb.js} +10 -10
- package/dist/ui/assets/{memory-curation-seam-Dczx398r.js → memory-curation-seam-bu5MdUMf.js} +1 -1
- package/dist/ui/assets/{memory-health-B3pJkEYs.js → memory-health-Cwv7orty.js} +1 -1
- package/dist/ui/assets/{memory-write-execute-B0M14uMq.js → memory-write-execute-DKunhcVV.js} +1 -1
- package/dist/ui/assets/{merge-folded-cost-into-frozen-dCWk1kvd.js → merge-folded-cost-into-frozen-DI9twAuG.js} +1 -1
- package/dist/ui/assets/{mv-Cc9qSXiY.js → mv-Vh0EGGaI.js} +1 -1
- package/dist/ui/assets/{new-session-RYQvHZoT.js → new-session-DdoKKj2v.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-D7OM_yW9.js → oauth-bootstrap-D2zeCkqT.js} +2 -2
- package/dist/ui/assets/{onboarding-orchestrator-CHASlv3G.js → onboarding-orchestrator-DTY6LK4k.js} +1 -1
- package/dist/ui/assets/{openai-codex-CmfZFRVj.js → openai-codex-BtZ0emDz.js} +1 -1
- package/dist/ui/assets/{openai-codex-DO5cGM2q.js → openai-codex-C4ntaXUk.js} +1 -1
- package/dist/ui/assets/{openrouter-C52FFIQN.js → openrouter-D9MOwkyn.js} +1 -1
- package/dist/ui/assets/{openrouter-QsaghorL.js → openrouter-DbvLMk3L.js} +1 -1
- package/dist/ui/assets/{openrouter-free-CsNYK-uh.js → openrouter-free-BLccMR3p.js} +1 -1
- package/dist/ui/assets/{openrouter-free-D0kPtxk7.js → openrouter-free-CytTm0tL.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-DBLlXG9h.js → openrouter-oauth-DnEx9Rqh.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-CxAp_zKr.js → openrouter-oauth-G9EtfjRV.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-DMybh2Wq.js → panel-rpc-handlers-CnI0y8vs.js} +2 -2
- package/dist/ui/assets/{panelize-shell-DPNsQHGd.js → panelize-shell-DUBjt6H_.js} +1 -1
- package/dist/ui/assets/{pi-edit-execution-B2QowkLn.js → pi-edit-execution-CX4GKvdv.js} +1 -1
- package/dist/ui/assets/{provider-DQYA7Mfo.js → provider-DVbu5LnO.js} +1 -1
- package/dist/ui/assets/{provider-iKoyAsIs.js → provider-Dbkq5LeU.js} +1 -1
- package/dist/ui/assets/{provider-settings-B_NZDI-R.js → provider-settings-CQsfoQ1J.js} +1 -1
- package/dist/ui/assets/provider-store-access-CYY1izR6.js +1 -0
- package/dist/ui/assets/provider-store-access-DCHamof5.js +1 -0
- package/dist/ui/assets/{providers-BrfIAMLH.js → providers-DAe9H_v8.js} +2 -2
- package/dist/ui/assets/{providers-CiO1EAB9.js → providers-IlvLc68Q.js} +1 -1
- package/dist/ui/assets/{quick-llm-A2MHmDfA.js → quick-llm-CS859Yj_.js} +1 -1
- package/dist/ui/assets/{realm-inprocess-9LEendJ8.js → realm-inprocess-COL-iKh1.js} +2 -2
- package/dist/ui/assets/{realm-unhandled-rejections--8ILu6QT.js → realm-unhandled-rejections-B6xaTDVi.js} +1 -1
- package/dist/ui/assets/{realm-unhandled-rejections-CIn87Jf1.js → realm-unhandled-rejections-C7hmQxXs.js} +1 -1
- package/dist/ui/assets/{remote-terminal-view-BS9q1tN6.js → remote-terminal-view-BvUG4DYc.js} +2 -2
- package/dist/ui/assets/{restore-CehErvkE.js → restore-Bwl6K7p3.js} +1 -1
- package/dist/ui/assets/{run-DfDz97_a.js → run-B5g_uI07.js} +1 -1
- package/dist/ui/assets/{run-DPbjpUwz.js → run-BGGEfu-c.js} +1 -1
- package/dist/ui/assets/{run-DyNqund7.js → run-ibUaNBQQ.js} +2 -2
- package/dist/ui/assets/{run-5jlHWJxT.js → run-wjLp7772.js} +2 -2
- package/dist/ui/assets/{serve-command-kt2G15pj.js → serve-command-Dz9Stwu3.js} +2 -2
- package/dist/ui/assets/{serve-runtime-x2RbmLUG.js → serve-runtime-DifvoJEx.js} +1 -1
- package/dist/ui/assets/{session-command-memory-Cx7n-7Xg.js → session-command-memory-DL2jJXMG.js} +2 -2
- package/dist/ui/assets/{session-jsonl-DibsheI2.js → session-jsonl-C3C8hKnt.js} +1 -1
- package/dist/ui/assets/{session-search-index-DS5eYIR1.js → session-search-index-CwvVidcF.js} +1 -1
- package/dist/ui/assets/{setup-feature-flags-remote-D2tvxkEv.js → setup-feature-flags-remote-CXXeeHW_.js} +1 -1
- package/dist/ui/assets/{setup-model-catalog-Lgta8SIp.js → setup-model-catalog-CbbCvN8c.js} +1 -1
- package/dist/ui/assets/{silent-renew-backoff-4gD2ZN3D.js → silent-renew-backoff-Dt40GINt.js} +1 -1
- package/dist/ui/assets/slicc-version-B12B_nYb.js +1 -0
- package/dist/ui/assets/{soundscape-OcbTcjhh.js → soundscape-BnzHIiac.js} +1 -1
- package/dist/ui/assets/{speak-6R_kkDLV.js → speak-s6Ezas3_.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-Bh2OeBQ-.js → sprinkle-manager-B6_Tq3WN.js} +1 -1
- package/dist/ui/assets/{sprinkle-renderer-CZTwuJ5N.js → sprinkle-renderer-DyptAyk4.js} +1 -1
- package/dist/ui/assets/{sudo-BxdaMgMv.js → sudo-9bM5adw9.js} +1 -1
- package/dist/ui/assets/{supervisor-CiTDkTpI.js → supervisor-DWUb8N1P.js} +1 -1
- package/dist/ui/assets/{sync-dialog-Dbe7GUIE.js → sync-dialog-DB9gPfcg.js} +1 -1
- package/dist/ui/assets/{transformers-env-CRrUMWhB.js → transformers-env-D4iwHGI1.js} +1 -1
- package/dist/ui/assets/{tray-leader-B2CxGoCz.js → tray-leader-CbyHPI0I.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-BSGr-1T-.js → tray-leave-runtime-CbvRdJPQ.js} +1 -1
- package/dist/ui/assets/{tray-sidecar-BtLe6z6W.js → tray-sidecar-B5huBZkI.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-CGXNP0kM.js → upgrade-detection-6edCinYk.js} +1 -1
- package/dist/ui/assets/{upgrade-to-seven-CIJTeGs2.js → upgrade-to-seven-BHUcE9wq.js} +1 -1
- package/dist/ui/assets/{voice-reply-DHQY5xFF.js → voice-reply-c7d6CY7I.js} +1 -1
- package/dist/ui/assets/{wc-attach-DynBoQgi.js → wc-attach-lm3QnyXs.js} +2 -2
- package/dist/ui/assets/{wc-browser-5E_UVXe7.js → wc-browser-BILPcbgN.js} +1 -1
- package/dist/ui/assets/{wc-computers-UomDainA.js → wc-computers-iCzCAT2C.js} +1 -1
- package/dist/ui/assets/{wc-detached-uNHEE2VQ.js → wc-detached-DFwwR4RF.js} +1 -1
- package/dist/ui/assets/{wc-extension-j9LQbp7A.js → wc-extension-0IbGxHjs.js} +2 -2
- package/dist/ui/assets/{wc-follower-BOUyeM91.js → wc-follower-DkgntXOp.js} +3 -3
- package/dist/ui/assets/{wc-follower-oauth-CeNT4Lqf.js → wc-follower-oauth-C3BLIGbb.js} +1 -1
- package/dist/ui/assets/{wc-gelatiere-DFmOvtzw.js → wc-gelatiere-CXX1_rMS.js} +1 -1
- package/dist/ui/assets/{wc-live-BKQgEuos.js → wc-live-B-b1eo1g.js} +5 -5
- package/dist/ui/assets/{wc-nav-B6EEpQEt.js → wc-nav-CZXzwu-g.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-CkS3Y78g.js → wc-onboarding-BWu-7vxU.js} +2 -2
- package/dist/ui/assets/{wc-permissions-B0r8NfjR.js → wc-permissions--gzVrLeD.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-4DYvYxuC.js → wc-placeholder-B2d2q6zQ.js} +2 -2
- package/dist/ui/assets/{wc-profile-export-bmtXUUE5.js → wc-profile-export-rlkoo2cb.js} +3 -3
- package/dist/ui/assets/{wc-secret-request-DL6iF9hx.js → wc-secret-request-C0MKjBVT.js} +1 -1
- package/dist/ui/assets/{wc-settings-QUynREKy.js → wc-settings-Dc8Gmy2S.js} +3 -3
- package/dist/ui/assets/{wc-shell-U46t-s6w.js → wc-shell-BhkIyAXa.js} +4 -4
- package/dist/ui/assets/{wc-shortcut-config-BYIKzjZD.js → wc-shortcut-config-b1PO-pxP.js} +1 -1
- package/dist/ui/assets/{wc-sprinkles-Fmc2Lwf-.js → wc-sprinkles-D20m3z91.js} +2 -2
- package/dist/ui/assets/{wc-transcript-export-y7V84pv2.js → wc-transcript-export-mAAWaVHR.js} +2 -2
- package/dist/ui/assets/{wc-tray-BrWrwjJW.js → wc-tray-COZfixoH.js} +4 -4
- package/dist/ui/assets/welcome-detection-DMNkjk4H.js +1 -0
- package/dist/ui/assets/{whisper-session-D6nfenkE.js → whisper-session-SzPFfAP_.js} +2 -2
- package/dist/ui/assets/{xai-grok-BqdmyxRZ.js → xai-grok-B9OK_us-.js} +1 -1
- package/dist/ui/assets/{xai-grok-CvjZvEbm.js → xai-grok-BC6ijUtp.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 +1 -1
- package/dist/ui/assets/isomorphic-git-BAyRq2-6.js +0 -69
- package/dist/ui/assets/isomorphic-git-Cmlj4OJW.js +0 -90
- package/dist/ui/assets/provider-store-access-Doz07rqs.js +0 -1
- package/dist/ui/assets/provider-store-access-YJa1L8Dr.js +0 -1
- package/dist/ui/assets/slicc-version--nn6GMSS.js +0 -1
- package/dist/ui/assets/welcome-detection-BZUvwWW9.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
|
});
|