cohorte 3.0.0-dev.1 → 3.0.0-dev.3

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifestVersion": 1,
3
- "cohorteVersion": "3.0.0-dev.1",
3
+ "cohorteVersion": "3.0.0-dev.3",
4
4
  "algorithm": "sha256",
5
5
  "treeSha256": "b0988b7a3040d59aa44b1e5637dec54344b144c7991deac7b8e1f055aad8f2aa",
6
6
  "files": [
@@ -7,18 +7,18 @@
7
7
  "chunks/approve-Cv135UqI.mjs.map": "591ec1c955d716ff701ffc80547b35501637fe9394eb5e7f890573256ba58671",
8
8
  "chunks/auth-BT5oVp76.mjs": "dc3e23b73b9315625cd6e6f29724b19cfbbc1a6e4f6ef8fb3bcb5043e4fa024d",
9
9
  "chunks/auth-BT5oVp76.mjs.map": "d2f9f55f7e62812dc5b51ed2c19e8868c2da10598f111b0e0efbdabdb1f2ff21",
10
- "chunks/auth-CYOh60KG.mjs": "32124ce47f62b34df05c42709710f30ce495f2b29709b56dfe30c1cc82a8426c",
11
- "chunks/auth-CYOh60KG.mjs.map": "0ce18a8c4b70021a7b3ca08f058bff33891c71745c3ce3988894185a6d3f08e1",
10
+ "chunks/auth-RuhYgTI7.mjs": "e13d09c417d6c8d0b5ba0250b63b9333996fcfe113607966d8cb57a2da5427ce",
11
+ "chunks/auth-RuhYgTI7.mjs.map": "d704798f080306a6574326658924acc5829b86b7c65b4d0751cf2151ae7b6419",
12
12
  "chunks/brainstorm-BwKA6yZP.mjs": "d462fe4cc908205599a49af9870ee1cc945e6bfa13006b60b15af838fafa41bd",
13
13
  "chunks/brainstorm-BwKA6yZP.mjs.map": "6ae68c1ea9b8fc80f08a33c08a2a5dbb5b1940119143b81cff400a233e0137fc",
14
14
  "chunks/cancel-KV_cpsqS.mjs": "a58787b67ff0e4e36f301f01bf683e7a39340fcc7a9f8201887afc250a248155",
15
15
  "chunks/cancel-KV_cpsqS.mjs.map": "d95aa4e6b9ba3388b200f834c124dab064eafb119b08aba8f69fea560643d7dc",
16
16
  "chunks/canonical-C8UxeEmB.mjs": "81de21827f9dcbb402599424cbbc0850bcfdf51eb71d7d6e9cf6fb094a40e17b",
17
17
  "chunks/canonical-C8UxeEmB.mjs.map": "7f683738f91a995f0181c224be62d6b13889dab16e308839329762c87f2244c1",
18
- "chunks/catalogue-BvwSrM_j.mjs": "fb6401d7f5c001590a9d0857f3939ba6771272aab2bde08ac7fba27967a35fe1",
19
- "chunks/catalogue-BvwSrM_j.mjs.map": "1c34d2f5853ab28f7ab8a1c92017e8215a7946239dd29afa31e1cb479256a987",
20
- "chunks/compose-Dvxunpto.mjs": "5d4441942593c4931137d0445349b048248609e46b6494f4a139c44544ebcfaf",
21
- "chunks/compose-Dvxunpto.mjs.map": "fbb7940038e1b7447b40ae90328c0115c0055b0767711dae5bf982f5cb963b7c",
18
+ "chunks/catalogue-B5uFqfzJ.mjs": "58716aede8cc56b09305edee2d48fdf1f57420fc492c763ae4e75de1b64bf70c",
19
+ "chunks/catalogue-B5uFqfzJ.mjs.map": "bb796e82d4c7d03d6d8eb88d13f5cb90484aa5e532fce8908563ccc8e8957903",
20
+ "chunks/compose-D8rro98O.mjs": "c0d8a630393c5a15634678325d2882e7977dcb03aad10c9d034a7620193b3eb5",
21
+ "chunks/compose-D8rro98O.mjs.map": "ac0d19a4c8a361ba67ce099d9b51c3284415be802ca39caf9c38b540e306d8fc",
22
22
  "chunks/config-DefHA2Lw.mjs": "89695a150a5a9a9aa0c0091e3f6a3e2cb8c372ef5a10a51c7243a57ab5e20d4f",
23
23
  "chunks/config-DefHA2Lw.mjs.map": "a8d12fad50d509410461860ee41b92234a5021b43488a73fb510bd9cb2a79195",
24
24
  "chunks/contract-BkMjU1kR.mjs": "d9cea311263df193ec80357701d4a58cd5494954cf00b97d47440ce88fe3033e",
@@ -27,12 +27,12 @@
27
27
  "chunks/contract-bQ9FJl4N.mjs.map": "ae3848d143086a45de307396ed2c683e002efb3efa7b780d4a72222c29999807",
28
28
  "chunks/deny-ClTxSvHJ.mjs": "c15d9da9cd878b6d630db16db1c1ceac39768052e361e92326ed311254ae6efd",
29
29
  "chunks/deny-ClTxSvHJ.mjs.map": "d9e2562664a51cb652d35904de61354921adf3596b3f2de42316a70664c6f5f6",
30
- "chunks/diff-Qw0II0sj.mjs": "9f04abefb2458fa3d04695354ad4a1f441f5c60259761a02c7349f1db9bcb834",
31
- "chunks/diff-Qw0II0sj.mjs.map": "92d3e83f85953c7d6ad0c4e38711021096e134c545c2067a788491301b679777",
30
+ "chunks/diff-D_0hBwHl.mjs": "5dd7c2f0816aad91f44268c232341e5e798cf50c8754c5829165dc13c8c3c330",
31
+ "chunks/diff-D_0hBwHl.mjs.map": "e60b18d708904de2926e5a60653bb4e74afe99a339f6289a77acf72561b49df2",
32
32
  "chunks/discover-eS01-me1.mjs": "cc820731956110a734a7704b7a758210fb450f242b5b824f3e479f7f30b47624",
33
33
  "chunks/discover-eS01-me1.mjs.map": "00b2e9370ef097880d4283737735bd14cff654fdd926596ebe767108351f624b",
34
- "chunks/doctor-B-H2UK5e.mjs": "ce6fb4defa7282e5a9dfbb31f29b5d8b0de3ac9aa8cff2a84adf257ee86e7554",
35
- "chunks/doctor-B-H2UK5e.mjs.map": "c72d1be51648ee76214e28ed516cae9e4c50c148d6716cff7c3d38a68820b618",
34
+ "chunks/doctor-CginW8y8.mjs": "3f0d4b3962b92d7371b9ca245c8e8a67bd01f4689c18c7bdb884ee4bcc43737c",
35
+ "chunks/doctor-CginW8y8.mjs.map": "d6d6cf03da48af9bd0e3bf0379c4082a0b9486d4f8f8a9c4514a82eeea50845f",
36
36
  "chunks/fix-D4Tj8RVA.mjs": "921fb776daf53262fce2e57c351c7412b68604cba3733779b7b1a27deaa29b90",
37
37
  "chunks/fix-D4Tj8RVA.mjs.map": "5526a0af1fc1de5f56b17b9794a87f3d56767f86f0800e24a82e93a82a1c4c8c",
38
38
  "chunks/gc-BBXlBF5w.mjs": "8d5e39d1aee4be244d065c25ed7e43fcbf47218e241903c772f772bcf201b317",
@@ -49,8 +49,8 @@
49
49
  "chunks/models-Btp6X2YZ.mjs.map": "2973e5a7d3cf68f2006df821da5458f62ab892b7a79b1003a200f4cd07b446b8",
50
50
  "chunks/pause-BASBfKLO.mjs": "f689005d4da154c6ecaabc8219879506353227cd54e5cbb966f820b5404d1572",
51
51
  "chunks/pause-BASBfKLO.mjs.map": "c4a5e4acea758923384e6cead9a04cf4c72bfd3c143d36b5b5f193282a643099",
52
- "chunks/policy-DUIgzF3W.mjs": "ed8c481f3d2ae68aa47b27f924964fb31000df4a38293ffbf8d358cbfb830813",
53
- "chunks/policy-DUIgzF3W.mjs.map": "536de8c10ed907e14cb138f8b9ff09e29f3dcb76c78b7db860722b93ef95fc18",
52
+ "chunks/policy-Clypo20s.mjs": "95dfe7d213c8c553d8c6487f16335b6ef92496f492d8da815dcb2a15a3c6df2c",
53
+ "chunks/policy-Clypo20s.mjs.map": "8decec17a5147e058b843b1237ab12c2bbd18505aa62ee59f17c62ecde095389",
54
54
  "chunks/providers-Dx78imKj.mjs": "08b94fa141f4d4a13258304f441a0e8f29dc6b103107c031a7fa1c9357e5aaba",
55
55
  "chunks/providers-Dx78imKj.mjs.map": "a57182df4581da66ce5d02d852d3f083d7752801290918342dd6094acb959576",
56
56
  "chunks/reconcile-Bhy3IIYo.mjs": "be8f15f64eeb5d839a83f4d89e714ee6853635c2390273ce35816fd9f592b98c",
@@ -81,16 +81,16 @@
81
81
  "chunks/skip-DZG5kpcH.mjs.map": "77fcc41d0188d23b5ad17321258beb24b90bcd7aad80c6f952b23317e06ba2cd",
82
82
  "chunks/spec-Bq0P3jVh.mjs": "08674514e132059f6ddc67b0f92edbf44ad5e3ad65811a7957d85b13fc0deaea",
83
83
  "chunks/spec-Bq0P3jVh.mjs.map": "9746f35b366ec599dc920cc56977832b17612fdd9e6b13c2b2f2eabd0f03f4d1",
84
- "chunks/src-CId6kMsY.mjs": "ad5e12f809266d8a66e7925b78e39e94c207dd685db92d70afb8cf3cdde9554a",
85
- "chunks/src-CId6kMsY.mjs.map": "da936068c535da40b07a8e926ab3a5f164a47f52b40508cfc490389d34e410e9",
86
- "chunks/src-CfAOde7C.mjs": "131ca62d3cbbd1012b44f328d88816d8db1c35609b81dbe113163abf52a10d2c",
87
- "chunks/src-CfAOde7C.mjs.map": "f4e0a52d22ac92e1a91c46861fe83495d0e7e6e020aee400be49cc2b1117461d",
88
84
  "chunks/src-CmFjh4M0.mjs": "3b904a86c1f26746f4b1483a563dee68bc26d4b4b42a5498954a563e16bd5a52",
89
85
  "chunks/src-CmFjh4M0.mjs.map": "5f9110f9a53f07d27413388b8ab48eb6cad3bdfb1ae160fac6d3b59d45b3d2af",
90
86
  "chunks/src-Cu3TxNob.mjs": "462fa47682c4613351dea593a703bed0e098f9d2753f527d1878fb041ce00481",
91
87
  "chunks/src-Cu3TxNob.mjs.map": "c7ee88bb5230c2132a16bfd156bb849644e9ab5b3da4fdfd22191dd7d943a792",
88
+ "chunks/src-DZazJCp1.mjs": "861aeb557fef7fb1103e66ccc6dfa82470e6e6fd8a5b5620c3880f8630b450a9",
89
+ "chunks/src-DZazJCp1.mjs.map": "9ac557ccc7a72d020ff48d4dfd24a8f8c2fbdad009ec074506a9c105be513f77",
92
90
  "chunks/src-DcU4IXMe.mjs": "652f7db3cf70f79c7194d03382176c60cc5ddc745bd68619b95efff1a2e95adc",
93
91
  "chunks/src-DcU4IXMe.mjs.map": "6a266ea715e71c303de472458d15a4c8f284dc0a212773d86426da5318fd1b88",
92
+ "chunks/src-r0ECB1UJ.mjs": "94b7580d1eb852c1c5c3681c8322132617913a76b56e5ea0bde0cbcb96700a87",
93
+ "chunks/src-r0ECB1UJ.mjs.map": "e7792478b0f36fda418bf082352f116fe64206ae125ac5a95d43bede9677a0d5",
94
94
  "chunks/src-s7YRvk0t.mjs": "54f73aae29cf07720cefded111799db4f1668b7cb66f847490f9a02f5b39fbb2",
95
95
  "chunks/src-s7YRvk0t.mjs.map": "c1b77cf4696d58dcea0b568a52e4dc123dca57df48c593eceaaa53c21e53466a",
96
96
  "chunks/status-SMjiOMYy.mjs": "01c0dbc2fd6573bfb5134de328b6df1d6631e4a8f47fd65da56e16375e73f63f",
@@ -99,6 +99,6 @@
99
99
  "chunks/tail-BuhT-2PH.mjs.map": "5d44106e9044ca20a281f499d543c1f1955007a97f5427ee89550c3bbd129725",
100
100
  "chunks/update-BXIppsbi.mjs": "0207788cf68937696d41f94ed082c823ae0782e6afc624e741d35015879bd0d9",
101
101
  "chunks/update-BXIppsbi.mjs.map": "ef6972b3c42b9abd0e7dcc12b6e92ecfd980bfe5cf2a304138fd4afca6ec3adc",
102
- "cli.mjs": "7673161e65f4a86d874cac113a938d56b3d5f297649eebb7dfc79938e17fe618",
103
- "cli.mjs.map": "0d9ba2d0be3ca7785b004871d539642b22d15386284505a92cb7da39f684431c"
102
+ "cli.mjs": "195fd1ea930d892bde5cb5791afe38f82e6002aa6fe3843dde2eb4caddc7f1f7",
103
+ "cli.mjs.map": "c9179a9d578896d1b9136d1034e5040637acd08cbf8bdb17c2b1776a13443aa0"
104
104
  }
@@ -1,5 +1,32 @@
1
+ import { spawn } from "node:child_process";
1
2
  import { createInterface } from "node:readline/promises";
2
3
  //#region src/commands/auth/index.ts
4
+ /** Open an OAuth URL without involving a shell. The URL is always printed by the caller as a fallback. */
5
+ function openBrowser(rawUrl, spawnProcess = spawn) {
6
+ let url;
7
+ try {
8
+ url = new URL(rawUrl);
9
+ } catch {
10
+ return false;
11
+ }
12
+ if (url.protocol !== "https:" && url.protocol !== "http:") return false;
13
+ const command = process.platform === "darwin" ? "open" : process.platform === "win32" ? "cmd.exe" : "xdg-open";
14
+ const args = process.platform === "win32" ? [
15
+ "/c",
16
+ "start",
17
+ "",
18
+ url.toString()
19
+ ] : [url.toString()];
20
+ try {
21
+ spawnProcess(command, args, {
22
+ detached: true,
23
+ stdio: "ignore"
24
+ }).unref();
25
+ return true;
26
+ } catch {
27
+ return false;
28
+ }
29
+ }
3
30
  function document(ctx, statuses) {
4
31
  return {
5
32
  documentVersion: 1,
@@ -29,6 +56,22 @@ async function loginUi(ctx, signal) {
29
56
  signal.addEventListener("abort", abort, { once: true });
30
57
  return {
31
58
  show(event) {
59
+ if (event.kind === "open-url") {
60
+ const lines = [event.instructions, event.url ? `Open: ${event.url}` : void 0].filter((value) => Boolean(value));
61
+ if (lines.length) ctx.stdio.stdout.write(`${lines.join("\n")}\n`);
62
+ if (event.url) openBrowser(event.url);
63
+ return;
64
+ }
65
+ if (event.kind === "device-code") {
66
+ const lines = [
67
+ event.verificationUri ? `Open: ${event.verificationUri}` : void 0,
68
+ event.userCode ? `Code: ${event.userCode}` : void 0,
69
+ event.instructions,
70
+ event.message
71
+ ].filter((value) => Boolean(value));
72
+ if (lines.length) ctx.stdio.stdout.write(`${lines.join("\n")}\n`);
73
+ return;
74
+ }
32
75
  const text = event.message ?? event.instructions ?? event.url ?? event.verificationUri ?? event.userCode ?? "";
33
76
  if (text) ctx.stdio.stdout.write(`${text}\n`);
34
77
  },
@@ -72,6 +115,9 @@ const auth = {
72
115
  if (args.subVerb === "login") {
73
116
  const controller = new AbortController();
74
117
  const timeout = setTimeout(() => controller.abort(), 6e5);
118
+ const abortLogin = () => controller.abort();
119
+ process.once("SIGINT", abortLogin);
120
+ process.once("SIGTERM", abortLogin);
75
121
  const ui = await loginUi(ctx, controller.signal);
76
122
  try {
77
123
  const status = await runtime.login(provider, ui, controller.signal);
@@ -81,6 +127,8 @@ const auth = {
81
127
  return 0;
82
128
  } finally {
83
129
  clearTimeout(timeout);
130
+ process.removeListener("SIGINT", abortLogin);
131
+ process.removeListener("SIGTERM", abortLogin);
84
132
  ui.close();
85
133
  }
86
134
  }
@@ -88,6 +136,6 @@ const auth = {
88
136
  }
89
137
  };
90
138
  //#endregion
91
- export { auth as default };
139
+ export { auth as default, openBrowser };
92
140
 
93
- //# sourceMappingURL=auth-CYOh60KG.mjs.map
141
+ //# sourceMappingURL=auth-RuhYgTI7.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-RuhYgTI7.mjs","names":[],"sources":["../../../../apps/cli/src/commands/auth/index.ts"],"sourcesContent":["// apps/cli/src/commands/auth/index.ts — DESIGN §9 verb `auth`; provider authentication is delegated to the\n// selected runtime child so credentials never cross the CLI/runtime boundary.\nimport { spawn } from 'node:child_process';\nimport { createInterface } from 'node:readline/promises';\nimport type { ProviderAuthStatus } from '@cohorte/runtime-contract';\nimport type { CommandModule } from '../../contract/index.ts';\n\ntype Spawn = typeof spawn;\n\n/** Open an OAuth URL without involving a shell. The URL is always printed by the caller as a fallback. */\nexport function openBrowser(rawUrl: string, spawnProcess: Spawn = spawn): boolean {\n let url: URL;\n try {\n url = new URL(rawUrl);\n } catch {\n return false;\n }\n if (url.protocol !== 'https:' && url.protocol !== 'http:') return false;\n\n const command = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'cmd.exe' : 'xdg-open';\n const args = process.platform === 'win32' ? ['/c', 'start', '', url.toString()] : [url.toString()];\n try {\n const child = spawnProcess(command, args, { detached: true, stdio: 'ignore' });\n child.unref();\n return true;\n } catch {\n return false;\n }\n}\n\nfunction document(ctx: Parameters<CommandModule['run']>[0], statuses: ProviderAuthStatus[]) {\n return {\n documentVersion: 1,\n generatedAt: ctx.clock.now(),\n runtime: (() => {\n const runtime = ctx.runtime.resolve();\n return { id: runtime.id, version: 'unknown' };\n })(),\n providers: statuses.map((status) => ({\n ...status,\n ...(status.accountLabel === undefined ? { accountLabelNote: 'account: not exposed by the engine' } : {}),\n })),\n };\n}\n\nfunction print(ctx: Parameters<CommandModule['run']>[0], value: ReturnType<typeof document>): void {\n if (ctx.stdio.stdout && value) ctx.stdio.stdout.write(`${JSON.stringify(value)}\\n`);\n}\n\nasync function loginUi(ctx: Parameters<CommandModule['run']>[0], signal: AbortSignal) {\n const readline = createInterface({ input: ctx.stdio.stdin, output: ctx.stdio.stdout, terminal: false });\n const abort = () => readline.close();\n signal.addEventListener('abort', abort, { once: true });\n return {\n show(event: {\n kind: string;\n url?: string;\n instructions?: string;\n message?: string;\n userCode?: string;\n verificationUri?: string;\n }) {\n if (event.kind === 'open-url') {\n const lines = [event.instructions, event.url ? `Open: ${event.url}` : undefined].filter(\n (value): value is string => Boolean(value),\n );\n if (lines.length) ctx.stdio.stdout.write(`${lines.join('\\n')}\\n`);\n if (event.url) openBrowser(event.url);\n return;\n }\n if (event.kind === 'device-code') {\n const lines = [\n event.verificationUri ? `Open: ${event.verificationUri}` : undefined,\n event.userCode ? `Code: ${event.userCode}` : undefined,\n event.instructions,\n event.message,\n ].filter((value): value is string => Boolean(value));\n if (lines.length) ctx.stdio.stdout.write(`${lines.join('\\n')}\\n`);\n return;\n }\n const text = event.message ?? event.instructions ?? event.url ?? event.verificationUri ?? event.userCode ?? '';\n if (text) ctx.stdio.stdout.write(`${text}\\n`);\n },\n async ask(prompt: { kind: string; message: string; options?: { id: string; label: string }[] }) {\n if (prompt.kind === 'select' && prompt.options?.length) {\n ctx.stdio.stdout.write(`${prompt.message}\\n`);\n prompt.options.forEach((option, index) => {\n ctx.stdio.stdout.write(` ${index + 1}. ${option.label}\\n`);\n });\n const answer = await readline.question('Choice: ');\n const index = Number.parseInt(answer, 10) - 1;\n return prompt.options[index]?.id ?? answer;\n }\n return readline.question(`${prompt.message} `);\n },\n close() {\n signal.removeEventListener('abort', abort);\n readline.close();\n },\n };\n}\n\nconst auth: CommandModule = {\n verb: 'auth',\n async run(ctx, args) {\n const runtime = ctx.runtime.resolve();\n const provider = args.positionals[0];\n if (args.subVerb === 'status' || args.subVerb === undefined) {\n const statuses = await runtime.authStatus(provider ? [provider] : ['openai-codex', 'anthropic']);\n const value = document(ctx, statuses);\n if (args.json) print(ctx, value);\n else\n for (const status of value.providers)\n ctx.stdio.stdout.write(`${status.provider}: ${status.state} (${status.billing})\\n`);\n return 0;\n }\n if (!provider) return 2;\n if (args.subVerb === 'logout') {\n await runtime.logout(provider);\n const value = document(ctx, await runtime.authStatus([provider]));\n if (args.json) print(ctx, value);\n else ctx.stdio.stdout.write(`${provider}: logged out\\n`);\n return 0;\n }\n if (args.subVerb === 'login') {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 10 * 60_000);\n const abortLogin = () => controller.abort();\n process.once('SIGINT', abortLogin);\n process.once('SIGTERM', abortLogin);\n const ui = await loginUi(ctx, controller.signal);\n try {\n const status = await runtime.login(provider, ui, controller.signal);\n const value = document(ctx, [status]);\n if (args.json) print(ctx, value);\n else ctx.stdio.stdout.write(`${status.provider}: ${status.state}\\n`);\n return 0;\n } finally {\n clearTimeout(timeout);\n process.removeListener('SIGINT', abortLogin);\n process.removeListener('SIGTERM', abortLogin);\n ui.close();\n }\n }\n return 10;\n },\n};\n\nexport default auth;\n"],"mappings":";;;;AAUA,SAAgB,YAAY,QAAgB,eAAsB,OAAgB;CAChF,IAAI;CACJ,IAAI;EACF,MAAM,IAAI,IAAI,MAAM;CACtB,QAAQ;EACN,OAAO;CACT;CACA,IAAI,IAAI,aAAa,YAAY,IAAI,aAAa,SAAS,OAAO;CAElE,MAAM,UAAU,QAAQ,aAAa,WAAW,SAAS,QAAQ,aAAa,UAAU,YAAY;CACpG,MAAM,OAAO,QAAQ,aAAa,UAAU;EAAC;EAAM;EAAS;EAAI,IAAI,SAAS;CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;CACjG,IAAI;EAEF,aAD2B,SAAS,MAAM;GAAE,UAAU;GAAM,OAAO;EAAS,CACxE,CAAC,CAAC,MAAM;EACZ,OAAO;CACT,QAAQ;EACN,OAAO;CACT;AACF;AAEA,SAAS,SAAS,KAA0C,UAAgC;CAC1F,OAAO;EACL,iBAAiB;EACjB,aAAa,IAAI,MAAM,IAAI;EAC3B,gBAAgB;GAEd,OAAO;IAAE,IADO,IAAI,QAAQ,QACT,CAAC,CAAC;IAAI,SAAS;GAAU;EAC9C,EAAA,CAAG;EACH,WAAW,SAAS,KAAK,YAAY;GACnC,GAAG;GACH,GAAI,OAAO,iBAAiB,KAAA,IAAY,EAAE,kBAAkB,qCAAqC,IAAI,CAAC;EACxG,EAAE;CACJ;AACF;AAEA,SAAS,MAAM,KAA0C,OAA0C;CACjG,IAAI,IAAI,MAAM,UAAU,OAAO,IAAI,MAAM,OAAO,MAAM,GAAG,KAAK,UAAU,KAAK,EAAE,GAAG;AACpF;AAEA,eAAe,QAAQ,KAA0C,QAAqB;CACpF,MAAM,WAAW,gBAAgB;EAAE,OAAO,IAAI,MAAM;EAAO,QAAQ,IAAI,MAAM;EAAQ,UAAU;CAAM,CAAC;CACtG,MAAM,cAAc,SAAS,MAAM;CACnC,OAAO,iBAAiB,SAAS,OAAO,EAAE,MAAM,KAAK,CAAC;CACtD,OAAO;EACL,KAAK,OAOF;GACD,IAAI,MAAM,SAAS,YAAY;IAC7B,MAAM,QAAQ,CAAC,MAAM,cAAc,MAAM,MAAM,SAAS,MAAM,QAAQ,KAAA,CAAS,CAAC,CAAC,QAC9E,UAA2B,QAAQ,KAAK,CAC3C;IACA,IAAI,MAAM,QAAQ,IAAI,MAAM,OAAO,MAAM,GAAG,MAAM,KAAK,IAAI,EAAE,GAAG;IAChE,IAAI,MAAM,KAAK,YAAY,MAAM,GAAG;IACpC;GACF;GACA,IAAI,MAAM,SAAS,eAAe;IAChC,MAAM,QAAQ;KACZ,MAAM,kBAAkB,SAAS,MAAM,oBAAoB,KAAA;KAC3D,MAAM,WAAW,SAAS,MAAM,aAAa,KAAA;KAC7C,MAAM;KACN,MAAM;IACR,CAAC,CAAC,QAAQ,UAA2B,QAAQ,KAAK,CAAC;IACnD,IAAI,MAAM,QAAQ,IAAI,MAAM,OAAO,MAAM,GAAG,MAAM,KAAK,IAAI,EAAE,GAAG;IAChE;GACF;GACA,MAAM,OAAO,MAAM,WAAW,MAAM,gBAAgB,MAAM,OAAO,MAAM,mBAAmB,MAAM,YAAY;GAC5G,IAAI,MAAM,IAAI,MAAM,OAAO,MAAM,GAAG,KAAK,GAAG;EAC9C;EACA,MAAM,IAAI,QAAsF;GAC9F,IAAI,OAAO,SAAS,YAAY,OAAO,SAAS,QAAQ;IACtD,IAAI,MAAM,OAAO,MAAM,GAAG,OAAO,QAAQ,GAAG;IAC5C,OAAO,QAAQ,SAAS,QAAQ,UAAU;KACxC,IAAI,MAAM,OAAO,MAAM,KAAK,QAAQ,EAAE,IAAI,OAAO,MAAM,GAAG;IAC5D,CAAC;IACD,MAAM,SAAS,MAAM,SAAS,SAAS,UAAU;IACjD,MAAM,QAAQ,OAAO,SAAS,QAAQ,EAAE,IAAI;IAC5C,OAAO,OAAO,QAAQ,MAAM,EAAE,MAAM;GACtC;GACA,OAAO,SAAS,SAAS,GAAG,OAAO,QAAQ,EAAE;EAC/C;EACA,QAAQ;GACN,OAAO,oBAAoB,SAAS,KAAK;GACzC,SAAS,MAAM;EACjB;CACF;AACF;AAEA,MAAM,OAAsB;CAC1B,MAAM;CACN,MAAM,IAAI,KAAK,MAAM;EACnB,MAAM,UAAU,IAAI,QAAQ,QAAQ;EACpC,MAAM,WAAW,KAAK,YAAY;EAClC,IAAI,KAAK,YAAY,YAAY,KAAK,YAAY,KAAA,GAAW;GAE3D,MAAM,QAAQ,SAAS,KAAK,MADL,QAAQ,WAAW,WAAW,CAAC,QAAQ,IAAI,CAAC,gBAAgB,WAAW,CAAC,CAC3D;GACpC,IAAI,KAAK,MAAM,MAAM,KAAK,KAAK;QAE7B,KAAK,MAAM,UAAU,MAAM,WACzB,IAAI,MAAM,OAAO,MAAM,GAAG,OAAO,SAAS,IAAI,OAAO,MAAM,IAAI,OAAO,QAAQ,IAAI;GACtF,OAAO;EACT;EACA,IAAI,CAAC,UAAU,OAAO;EACtB,IAAI,KAAK,YAAY,UAAU;GAC7B,MAAM,QAAQ,OAAO,QAAQ;GAC7B,MAAM,QAAQ,SAAS,KAAK,MAAM,QAAQ,WAAW,CAAC,QAAQ,CAAC,CAAC;GAChE,IAAI,KAAK,MAAM,MAAM,KAAK,KAAK;QAC1B,IAAI,MAAM,OAAO,MAAM,GAAG,SAAS,eAAe;GACvD,OAAO;EACT;EACA,IAAI,KAAK,YAAY,SAAS;GAC5B,MAAM,aAAa,IAAI,gBAAgB;GACvC,MAAM,UAAU,iBAAiB,WAAW,MAAM,GAAG,GAAW;GAChE,MAAM,mBAAmB,WAAW,MAAM;GAC1C,QAAQ,KAAK,UAAU,UAAU;GACjC,QAAQ,KAAK,WAAW,UAAU;GAClC,MAAM,KAAK,MAAM,QAAQ,KAAK,WAAW,MAAM;GAC/C,IAAI;IACF,MAAM,SAAS,MAAM,QAAQ,MAAM,UAAU,IAAI,WAAW,MAAM;IAClE,MAAM,QAAQ,SAAS,KAAK,CAAC,MAAM,CAAC;IACpC,IAAI,KAAK,MAAM,MAAM,KAAK,KAAK;SAC1B,IAAI,MAAM,OAAO,MAAM,GAAG,OAAO,SAAS,IAAI,OAAO,MAAM,GAAG;IACnE,OAAO;GACT,UAAU;IACR,aAAa,OAAO;IACpB,QAAQ,eAAe,UAAU,UAAU;IAC3C,QAAQ,eAAe,WAAW,UAAU;IAC5C,GAAG,MAAM;GACX;EACF;EACA,OAAO;CACT;AACF"}
@@ -2,7 +2,7 @@ import { n as sha256Hex, t as canonicalJson } from "./canonical-C8UxeEmB.mjs";
2
2
  import { M as NotImplemented, o as err, s as ok } from "./src-Cu3TxNob.mjs";
3
3
  import { c as AgentOutput, g as ClosedEnum, o as toStrictSchema } from "./src-s7YRvk0t.mjs";
4
4
  import { l as DEFAULT_NETWORK_POLICY } from "./schema-C9QbUW4H.mjs";
5
- import { c as toolGrantProblems, f as AGENT_GIT_DENIED_SUBCOMMANDS, h as isTrampoline, m as PROTECTED_REPO_GLOBS, s as ToolGrant } from "./src-CId6kMsY.mjs";
5
+ import { c as toolGrantProblems, f as AGENT_GIT_DENIED_SUBCOMMANDS, h as isTrampoline, m as PROTECTED_REPO_GLOBS, s as ToolGrant } from "./src-r0ECB1UJ.mjs";
6
6
  import { createHash } from "node:crypto";
7
7
  import { Type } from "typebox";
8
8
  import { Compile } from "typebox/compile";
@@ -1546,4 +1546,4 @@ const TOOL_CATALOGUE = Object.freeze({
1546
1546
  //#endregion
1547
1547
  export { buildPolicySnapshot as a, createCommandPolicy as c, createGlobMatcher as i, createProgramResolver as l, toolIntrospection as n, createPolicyEngine as o, createPathResolver as r, explainPolicy as s, TOOL_CATALOGUE as t };
1548
1548
 
1549
- //# sourceMappingURL=catalogue-BvwSrM_j.mjs.map
1549
+ //# sourceMappingURL=catalogue-B5uFqfzJ.mjs.map