@koda-sl/baker-cli 0.529.0 → 0.531.0
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 +23 -0
- package/dist/{ads-6ESCXPHK.js → ads-7TEPA4KZ.js} +3 -3
- package/dist/{analytics-OUNKG2FW.js → analytics-XDWBEY57.js} +13 -13
- package/dist/{avatars-IJQOWSFC.js → avatars-K7RBSMIJ.js} +1 -1
- package/dist/{brief-ZDHUBPV5.js → brief-SLTB3EPO.js} +15 -15
- package/dist/{canvas-AZ47PNYZ.js → canvas-2VRPGRND.js} +11 -11
- package/dist/{chunk-5G225R4A.js → chunk-3H5MJOG2.js} +2 -2
- package/dist/{chunk-WSYQ6LWB.js → chunk-4ULRDQVD.js} +5 -1
- package/dist/chunk-4ULRDQVD.js.map +1 -0
- package/dist/{chunk-KDNOMRJA.js → chunk-5EF7ZLXA.js} +3 -3
- package/dist/{chunk-4VSD4NSZ.js → chunk-7HH4F2KX.js} +3 -3
- package/dist/{chunk-Z4ZYFIDQ.js → chunk-CKTVRR3D.js} +2 -2
- package/dist/{chunk-3N2KAOVM.js → chunk-CSCHS3JG.js} +7 -7
- package/dist/{chunk-7B73TSKJ.js → chunk-ERRTBCDW.js} +3 -3
- package/dist/{chunk-7ODQ6ZID.js → chunk-EZBZU6N7.js} +3 -3
- package/dist/{chunk-HZ3RXKR4.js → chunk-FVZL2YC5.js} +5 -5
- package/dist/{chunk-FX3MXXYD.js → chunk-GDQJG4BO.js} +2 -2
- package/dist/{chunk-PTK7AFEE.js → chunk-HAJYFRXL.js} +2 -2
- package/dist/{chunk-SXML3LQN.js → chunk-IHZUSAUX.js} +2 -2
- package/dist/{chunk-EIDJCUMM.js → chunk-OYNBUT5X.js} +2 -2
- package/dist/{chunk-OXARC5HH.js → chunk-PGBZ73UZ.js} +2 -2
- package/dist/{chunk-B65WCT6M.js → chunk-PILLZPNC.js} +38 -2
- package/dist/chunk-PILLZPNC.js.map +1 -0
- package/dist/{chunk-ZL5YETKR.js → chunk-TE4ASZSC.js} +2 -2
- package/dist/{chunk-7OVCUTEL.js → chunk-XWO6CXNG.js} +2 -2
- package/dist/{chunk-WQKBEC4I.js → chunk-Y25HSPRJ.js} +2 -2
- package/dist/cli.js +19 -17
- package/dist/cli.js.map +1 -1
- package/dist/{create-UI2YG2KA.js → create-PYP3QWTL.js} +3 -3
- package/dist/{creatives-QFSIIFXB.js → creatives-ANTJUTIE.js} +6 -6
- package/dist/{critique-OK2ENBOA.js → critique-MZUTDK4V.js} +5 -5
- package/dist/{delete-4CUEJZ2Z.js → delete-3H6YH4YK.js} +3 -3
- package/dist/{feedback-ZBEZIIPT.js → feedback-TJRYTOR3.js} +8 -8
- package/dist/{feedback-record-CZVSPZUR.js → feedback-record-7IAJI5IY.js} +11 -11
- package/dist/{flows-CAOMVQYZ.js → flows-LL5SPPIK.js} +1 -1
- package/dist/{funnel-LKF6D7AA.js → funnel-XIZROHV7.js} +3 -3
- package/dist/{get-TB52FVNV.js → get-XPJ4BZGP.js} +3 -3
- package/dist/{google-FZVOB7HW.js → google-5JV7OMOH.js} +2 -2
- package/dist/{history-SJJX6EXI.js → history-RD2YMNNL.js} +3 -3
- package/dist/{images-K7JQ3ORB.js → images-XP4TKE2F.js} +1 -1
- package/dist/{inspiration-KAXPRINY.js → inspiration-D75DO3MD.js} +1 -1
- package/dist/knowledge-PKXPN4RV.js +195 -0
- package/dist/knowledge-PKXPN4RV.js.map +1 -0
- package/dist/{landing-BFMRM3HA.js → landing-O2ZUIUGE.js} +2 -2
- package/dist/lead-routes-WVXWVG62.js +733 -0
- package/dist/lead-routes-WVXWVG62.js.map +1 -0
- package/dist/{list-PT4DVD4U.js → list-OZCU2T22.js} +3 -3
- package/dist/{lookup-IUQWU346.js → lookup-K57ITJWF.js} +4 -4
- package/dist/{make-N5LVJSZD.js → make-T6HLXIYY.js} +21 -21
- package/dist/{performance-6XFKDJGY.js → performance-MHJDRLEK.js} +2 -2
- package/dist/{plan-VHMWZU7F.js → plan-JYSHKPZQ.js} +3 -3
- package/dist/{posts-BDMC644W.js → posts-ILAFADBW.js} +1 -1
- package/dist/{questionnaire-32BQ4ZUX.js → questionnaire-Y37I64FO.js} +3 -3
- package/dist/{rerun-HUFJUOEV.js → rerun-UPDIXTEL.js} +9 -9
- package/dist/{run-MRC4UVHU.js → run-4UIPMCSN.js} +3 -3
- package/dist/{run-7OCCCNJ4.js → run-GACZDI6Q.js} +9 -9
- package/dist/{scaffold-ad-7ADCDQBK.js → scaffold-ad-Z2HSN4PE.js} +6 -6
- package/dist/{scaffold-static-ad-TV5OWISA.js → scaffold-static-ad-ODZGTIM5.js} +11 -11
- package/dist/{scaffold-video-LLBDO546.js → scaffold-video-EHGAMEEP.js} +6 -6
- package/dist/{scheduled-agents-EPPP4SCZ.js → scheduled-agents-4VY4CAA2.js} +11 -11
- package/dist/{schema-5Q6VO5MW.js → schema-EYGPETLF.js} +2 -2
- package/dist/{select-BRH4QLWU.js → select-FCQUYBKV.js} +7 -7
- package/dist/{sends-43FU3SJN.js → sends-MZKHZZGJ.js} +3 -3
- package/dist/{set-prompt-SYWNE4CS.js → set-prompt-IBAG6BDA.js} +5 -5
- package/dist/{sources-CGXHNWJM.js → sources-K2LILGTW.js} +1 -1
- package/dist/{sources-PUZ4WV4Q.js → sources-ZM7LEIMM.js} +4 -4
- package/dist/{stale-QNIJZTGD.js → stale-VR5QAYB6.js} +6 -6
- package/dist/{studio-NRWLXOFZ.js → studio-3D42TUJX.js} +1 -1
- package/dist/{sync-definition-EGHEQ57K.js → sync-definition-MZUJOJYI.js} +6 -6
- package/dist/{targets-3WIBMP4B.js → targets-LQ7HGI73.js} +3 -3
- package/dist/{testimonials-2NQMY23B.js → testimonials-Z2KOOMVH.js} +2 -2
- package/dist/{translate-YGHRSEX6.js → translate-II4JY2XW.js} +8 -8
- package/dist/{triggers-6EXLTW35.js → triggers-Z3LV3KJR.js} +3 -3
- package/dist/{unstage-YSVQ6DLB.js → unstage-AVLORZLW.js} +3 -3
- package/dist/{unstage-KEMVI37X.js → unstage-QXOL5DXZ.js} +3 -3
- package/dist/{update-USKR3UOC.js → update-UE4XVBKL.js} +3 -3
- package/dist/{url-options-6MFRIDNA.js → url-options-DJZV3ADK.js} +2 -2
- package/dist/{validate-JX4FT7PL.js → validate-BCK22BQL.js} +7 -7
- package/dist/{videos-EHDZ46UQ.js → videos-YCQVOOFE.js} +1 -1
- package/dist/{winning-ads-H7ZE5AQW.js → winning-ads-7X5EWSJX.js} +1 -1
- package/package.json +1 -1
- package/dist/chunk-B65WCT6M.js.map +0 -1
- package/dist/chunk-WSYQ6LWB.js.map +0 -1
- /package/dist/{ads-6ESCXPHK.js.map → ads-7TEPA4KZ.js.map} +0 -0
- /package/dist/{analytics-OUNKG2FW.js.map → analytics-XDWBEY57.js.map} +0 -0
- /package/dist/{avatars-IJQOWSFC.js.map → avatars-K7RBSMIJ.js.map} +0 -0
- /package/dist/{brief-ZDHUBPV5.js.map → brief-SLTB3EPO.js.map} +0 -0
- /package/dist/{canvas-AZ47PNYZ.js.map → canvas-2VRPGRND.js.map} +0 -0
- /package/dist/{chunk-5G225R4A.js.map → chunk-3H5MJOG2.js.map} +0 -0
- /package/dist/{chunk-KDNOMRJA.js.map → chunk-5EF7ZLXA.js.map} +0 -0
- /package/dist/{chunk-4VSD4NSZ.js.map → chunk-7HH4F2KX.js.map} +0 -0
- /package/dist/{chunk-Z4ZYFIDQ.js.map → chunk-CKTVRR3D.js.map} +0 -0
- /package/dist/{chunk-3N2KAOVM.js.map → chunk-CSCHS3JG.js.map} +0 -0
- /package/dist/{chunk-7B73TSKJ.js.map → chunk-ERRTBCDW.js.map} +0 -0
- /package/dist/{chunk-7ODQ6ZID.js.map → chunk-EZBZU6N7.js.map} +0 -0
- /package/dist/{chunk-HZ3RXKR4.js.map → chunk-FVZL2YC5.js.map} +0 -0
- /package/dist/{chunk-FX3MXXYD.js.map → chunk-GDQJG4BO.js.map} +0 -0
- /package/dist/{chunk-PTK7AFEE.js.map → chunk-HAJYFRXL.js.map} +0 -0
- /package/dist/{chunk-SXML3LQN.js.map → chunk-IHZUSAUX.js.map} +0 -0
- /package/dist/{chunk-EIDJCUMM.js.map → chunk-OYNBUT5X.js.map} +0 -0
- /package/dist/{chunk-OXARC5HH.js.map → chunk-PGBZ73UZ.js.map} +0 -0
- /package/dist/{chunk-ZL5YETKR.js.map → chunk-TE4ASZSC.js.map} +0 -0
- /package/dist/{chunk-7OVCUTEL.js.map → chunk-XWO6CXNG.js.map} +0 -0
- /package/dist/{chunk-WQKBEC4I.js.map → chunk-Y25HSPRJ.js.map} +0 -0
- /package/dist/{create-UI2YG2KA.js.map → create-PYP3QWTL.js.map} +0 -0
- /package/dist/{creatives-QFSIIFXB.js.map → creatives-ANTJUTIE.js.map} +0 -0
- /package/dist/{critique-OK2ENBOA.js.map → critique-MZUTDK4V.js.map} +0 -0
- /package/dist/{delete-4CUEJZ2Z.js.map → delete-3H6YH4YK.js.map} +0 -0
- /package/dist/{feedback-ZBEZIIPT.js.map → feedback-TJRYTOR3.js.map} +0 -0
- /package/dist/{feedback-record-CZVSPZUR.js.map → feedback-record-7IAJI5IY.js.map} +0 -0
- /package/dist/{flows-CAOMVQYZ.js.map → flows-LL5SPPIK.js.map} +0 -0
- /package/dist/{funnel-LKF6D7AA.js.map → funnel-XIZROHV7.js.map} +0 -0
- /package/dist/{get-TB52FVNV.js.map → get-XPJ4BZGP.js.map} +0 -0
- /package/dist/{google-FZVOB7HW.js.map → google-5JV7OMOH.js.map} +0 -0
- /package/dist/{history-SJJX6EXI.js.map → history-RD2YMNNL.js.map} +0 -0
- /package/dist/{images-K7JQ3ORB.js.map → images-XP4TKE2F.js.map} +0 -0
- /package/dist/{inspiration-KAXPRINY.js.map → inspiration-D75DO3MD.js.map} +0 -0
- /package/dist/{landing-BFMRM3HA.js.map → landing-O2ZUIUGE.js.map} +0 -0
- /package/dist/{list-PT4DVD4U.js.map → list-OZCU2T22.js.map} +0 -0
- /package/dist/{lookup-IUQWU346.js.map → lookup-K57ITJWF.js.map} +0 -0
- /package/dist/{make-N5LVJSZD.js.map → make-T6HLXIYY.js.map} +0 -0
- /package/dist/{performance-6XFKDJGY.js.map → performance-MHJDRLEK.js.map} +0 -0
- /package/dist/{plan-VHMWZU7F.js.map → plan-JYSHKPZQ.js.map} +0 -0
- /package/dist/{posts-BDMC644W.js.map → posts-ILAFADBW.js.map} +0 -0
- /package/dist/{questionnaire-32BQ4ZUX.js.map → questionnaire-Y37I64FO.js.map} +0 -0
- /package/dist/{rerun-HUFJUOEV.js.map → rerun-UPDIXTEL.js.map} +0 -0
- /package/dist/{run-MRC4UVHU.js.map → run-4UIPMCSN.js.map} +0 -0
- /package/dist/{run-7OCCCNJ4.js.map → run-GACZDI6Q.js.map} +0 -0
- /package/dist/{scaffold-ad-7ADCDQBK.js.map → scaffold-ad-Z2HSN4PE.js.map} +0 -0
- /package/dist/{scaffold-static-ad-TV5OWISA.js.map → scaffold-static-ad-ODZGTIM5.js.map} +0 -0
- /package/dist/{scaffold-video-LLBDO546.js.map → scaffold-video-EHGAMEEP.js.map} +0 -0
- /package/dist/{scheduled-agents-EPPP4SCZ.js.map → scheduled-agents-4VY4CAA2.js.map} +0 -0
- /package/dist/{schema-5Q6VO5MW.js.map → schema-EYGPETLF.js.map} +0 -0
- /package/dist/{select-BRH4QLWU.js.map → select-FCQUYBKV.js.map} +0 -0
- /package/dist/{sends-43FU3SJN.js.map → sends-MZKHZZGJ.js.map} +0 -0
- /package/dist/{set-prompt-SYWNE4CS.js.map → set-prompt-IBAG6BDA.js.map} +0 -0
- /package/dist/{sources-CGXHNWJM.js.map → sources-K2LILGTW.js.map} +0 -0
- /package/dist/{sources-PUZ4WV4Q.js.map → sources-ZM7LEIMM.js.map} +0 -0
- /package/dist/{stale-QNIJZTGD.js.map → stale-VR5QAYB6.js.map} +0 -0
- /package/dist/{studio-NRWLXOFZ.js.map → studio-3D42TUJX.js.map} +0 -0
- /package/dist/{sync-definition-EGHEQ57K.js.map → sync-definition-MZUJOJYI.js.map} +0 -0
- /package/dist/{targets-3WIBMP4B.js.map → targets-LQ7HGI73.js.map} +0 -0
- /package/dist/{testimonials-2NQMY23B.js.map → testimonials-Z2KOOMVH.js.map} +0 -0
- /package/dist/{translate-YGHRSEX6.js.map → translate-II4JY2XW.js.map} +0 -0
- /package/dist/{triggers-6EXLTW35.js.map → triggers-Z3LV3KJR.js.map} +0 -0
- /package/dist/{unstage-YSVQ6DLB.js.map → unstage-AVLORZLW.js.map} +0 -0
- /package/dist/{unstage-KEMVI37X.js.map → unstage-QXOL5DXZ.js.map} +0 -0
- /package/dist/{update-USKR3UOC.js.map → update-UE4XVBKL.js.map} +0 -0
- /package/dist/{url-options-6MFRIDNA.js.map → url-options-DJZV3ADK.js.map} +0 -0
- /package/dist/{validate-JX4FT7PL.js.map → validate-BCK22BQL.js.map} +0 -0
- /package/dist/{videos-EHDZ46UQ.js.map → videos-YCQVOOFE.js.map} +0 -0
- /package/dist/{winning-ads-H7ZE5AQW.js.map → winning-ads-7X5EWSJX.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/command-loading.ts","../src/profile-help.ts","../src/agent-profile.ts"],"sourcesContent":["import type { Resolvable, SubCommandsDef } from \"citty\";\n\n/**\n * Which command families one `baker` invocation has to load.\n *\n * Loading every family is what made each `baker` process hold ~135 MB of heap\n * while it waited on one HTTP call: twenty parallel agents ran sixty of them and\n * filled an 8 GB Runtime. A command needs its own family and nothing else.\n */\nexport function familiesToLoad(argv: readonly string[], families: readonly string[]): string[] | \"all\" {\n const first = argv.find((token) => !token.startsWith(\"-\"));\n // `schema` reads the registry every family fills as it loads.\n if (first !== undefined && first !== \"schema\" && families.includes(first)) return [first];\n return \"all\";\n}\n\nexport type LoadableCommand = { meta?: Resolvable<unknown>; subCommands?: Resolvable<SubCommandsDef> };\n\nasync function resolved<T>(value: Resolvable<T>): Promise<T> {\n return typeof value === \"function\" ? await (value as () => T | Promise<T>)() : await value;\n}\n\n/** The command's subcommands, loaded in place if they were declared lazily. */\nasync function subCommandsOf(command: LoadableCommand): Promise<SubCommandsDef | undefined> {\n if (command.subCommands === undefined) return undefined;\n const subCommands = await resolved(command.subCommands);\n command.subCommands = subCommands;\n return subCommands;\n}\n\n/**\n * The subcommand of `command` that `token` names, by its name or an alias, as\n * citty finds it — loaded in place. An alias lives in the subcommand's own\n * meta, so a token that is no name loads the siblings to read theirs.\n */\nexport async function loadSubCommandNamed(\n command: LoadableCommand,\n token: string,\n): Promise<[string, LoadableCommand] | null> {\n const subCommands = await subCommandsOf(command);\n if (!subCommands) return null;\n const named = subCommands[token];\n if (named !== undefined) {\n const loaded = await resolved(named);\n subCommands[token] = loaded;\n return [token, loaded];\n }\n for (const [name, sub] of Object.entries(subCommands)) {\n const loaded = await resolved(sub);\n subCommands[name] = loaded;\n const meta = (await resolved(loaded.meta ?? {})) as { alias?: unknown };\n const aliases = Array.isArray(meta.alias) ? meta.alias : meta.alias === undefined ? [] : [meta.alias];\n if (aliases.includes(token)) return [name, loaded];\n }\n return null;\n}\n\n/** Loads, in place, every command at every depth. */\nexport async function loadAllCommands(command: LoadableCommand): Promise<void> {\n const subCommands = await subCommandsOf(command);\n if (!subCommands) return;\n for (const [name, sub] of Object.entries(subCommands)) {\n const loaded = await resolved(sub);\n subCommands[name] = loaded;\n await loadAllCommands(loaded);\n }\n}\n\n/**\n * Loads, in place, the command `argv` names and every parent on the way — and\n * nothing else, so the flag guards in `cli.ts` see the command they judge while\n * its siblings stay unloaded. Everything loads for `schema` and an unknown\n * name, which need the whole tree. It stops at the first flag: the organization\n * guard (`agent-profile.ts`) walks on past one itself, and loads the subtree a\n * `--help` lists.\n */\nexport async function loadCommands<T extends LoadableCommand>(root: T, argv: readonly string[]): Promise<T> {\n const families = Object.keys((await subCommandsOf(root)) ?? {});\n if (familiesToLoad(argv, families) === \"all\") {\n await loadAllCommands(root);\n return root;\n }\n let command: LoadableCommand = root;\n for (const token of argv) {\n if (token === \"--\" || token.startsWith(\"-\")) break;\n const subCommands = await subCommandsOf(command);\n const sub = subCommands?.[token];\n if (!subCommands || sub === undefined) break;\n const loaded = await resolved(sub);\n subCommands[token] = loaded;\n command = loaded;\n }\n return root;\n}\n","/**\n * What a command's help says, for the agent reading it.\n *\n * Descriptions are written for a company's agent, which may run every command:\n * they cite writes as examples (`baker ads meta campaigns create …`) and say a\n * family \"lists campaigns, or stages writes\". Read by the organization's agent,\n * which may only read, each is a call it would make and be refused. So a line\n * that names a command the reader may not run leaves its help, and where a\n * family holds commands the reader may not run, so does the talk of staging\n * them. A family the reader may change whole (the organization's own Scheduled\n * agents) keeps its staging, because it is how that family works.\n */\n\nimport type { AgentProfile } from \"./agent-profile.ts\";\n\ntype HelpNode = { meta?: unknown; subCommands?: unknown };\ntype Offers = (path: string) => boolean;\n\nfunction loadedSubCommands(node: HelpNode): Array<[string, HelpNode]> {\n const subCommands = node.subCommands;\n if (typeof subCommands !== \"object\" || subCommands === null) return [];\n return Object.entries(subCommands as Record<string, unknown>).flatMap(([name, sub]) =>\n typeof sub === \"object\" && sub !== null ? [[name, sub as HelpNode] as [string, HelpNode]] : [],\n );\n}\n\nfunction subCommandNames(node: HelpNode): string[] {\n const subCommands = node.subCommands;\n return typeof subCommands === \"object\" && subCommands !== null ? Object.keys(subCommands) : [];\n}\n\n/**\n * The command words name (`baker <words>`, or a family's command in backticks),\n * as far as the tree reaches; none when the first is no family. Where the tree\n * is not loaded this far (another family, a sibling this call never needed),\n * the words as written stand for the command: `offers` reads a command by its\n * leading words, so an argument after them changes nothing.\n */\nfunction commandOf(root: HelpNode, mention: string): string[] {\n const words = mention.trim().split(/\\s+/);\n let node: HelpNode = root;\n const path: string[] = [];\n for (const word of words) {\n const loaded = loadedSubCommands(node).find(([name]) => name === word)?.[1];\n if (!loaded) {\n // Not loaded is not \"not there\": a lazy entry of that name stands for the words written.\n return subCommandNames(node).includes(word) ? [words.join(\" \")] : path.length > 0 ? [path.join(\" \")] : [];\n }\n node = loaded;\n path.push(word);\n }\n return [path.join(\" \")];\n}\n\nfunction indentOf(line: string): number {\n return line.length - line.trimStart().length;\n}\n\n/**\n * The lines without those `drops` says go, each taken with what continues it:\n * the lines indented under it, the next line after a trailing `\\`, and the rest\n * of a sentence wrapped onto the lines below. `drops` returns the kept text of\n * a line, or null to drop it.\n */\nfunction dropping(lines: string[], drops: (line: string) => string | null): string[] {\n const kept: string[] = [];\n let carried: ((line: string) => boolean) | null = null;\n for (const line of lines) {\n if (carried?.(line)) continue;\n carried = null;\n const rest = drops(line);\n if (rest !== null) {\n kept.push(rest);\n continue;\n }\n const indent = indentOf(line);\n if (/\\\\\\s*$/.test(line)) {\n let open = true;\n carried = (next) => {\n const continues = open;\n open = /\\\\\\s*$/.test(next);\n return continues;\n };\n } else if (indent === 0 && !/[.:!?)]\\s*$/.test(line)) {\n let open = true;\n carried = (next) => {\n const continues = open && next.trim() !== \"\" && indentOf(next) === 0;\n open = continues && !/[.:!?)]\\s*$/.test(next);\n return continues;\n };\n } else if (indent > 0) {\n carried = (next) => next.trim() !== \"\" && indentOf(next) > indent;\n }\n }\n return kept;\n}\n\n/** A line that stands alone — an example, a table row, a \"Label: …\" entry — goes whole. */\nconst STANDALONE_LINE = /^(?:\\s|baker\\b|[A-Z][\\w ]{0,30}:\\s)/;\n\nfunction balanced(text: string): boolean {\n return (text.match(/\\(/g)?.length ?? 0) === (text.match(/\\)/g)?.length ?? 0);\n}\n\n/** Each command the text names, at where it names it: `baker <words>`, or a family's `<words>` in backticks. */\nfunction commandMentions(root: HelpNode, text: string): Array<{ at: number; words: string }> {\n const families = new Set(subCommandNames(root));\n const quoted = [...text.matchAll(/`([a-z][\\w-]*(?:[ \\t][a-z][\\w-]*)*)(?=[`\\s<])/g)].filter((match) =>\n families.has((match[1] ?? \"\").split(/\\s+/)[0] ?? \"\"),\n );\n return [...text.matchAll(/`?\\bbaker ((?:[a-z][\\w-]*[ \\t]?)+)/g), ...quoted].map((match) => ({\n at: match.index,\n words: match[1] ?? \"\",\n }));\n}\n\n/**\n * Where the text first mentions something the reader may not use — a command\n * it is not offered, or a flag it is refused (`--add-trigger`) — or -1.\n */\nfunction firstUnusable(root: HelpNode, text: string, offered: Offers, refusedFlags: readonly string[]): number {\n const commands = commandMentions(root, text)\n .filter(({ words }) => commandOf(root, words).some((path) => !offered(path)))\n .map(({ at }) => at);\n const flags = refusedFlags.flatMap((flag) => {\n const match = new RegExp(`--${flag}(?![\\\\w-])`).exec(text);\n return match ? [match.index] : [];\n });\n const at = [...commands, ...flags];\n return at.length > 0 ? Math.min(...at) : -1;\n}\n\n/**\n * The sentence without what it says about something the reader may not use:\n * cut back to the clause before the mention when one stands on its own, else\n * dropped.\n */\nfunction sentenceWithout(sentence: string, unusableAt: number): string {\n if (unusableAt === -1) return sentence;\n const before = sentence.slice(0, unusableAt).replace(/`$/, \"\");\n const cut = Math.max(before.lastIndexOf(\", \"), before.lastIndexOf(\" — \"), before.lastIndexOf(\"; \"));\n const clause = cut === -1 ? \"\" : before.slice(0, cut).trim();\n // \"To undo one, `baker …`\" only led to the command.\n const leadsIn = /^(?:to|use|run|call|for|with)\\b/i.test(clause);\n return clause.split(/\\s+/).length >= 3 && balanced(clause) && !leadsIn ? `${clause}.` : \"\";\n}\n\n/** A sentence that leans on the one before it (\"It never touches a live tag.\"). */\nconst LEANS_BACK = /^(?:it|they|this|that|these|those)\\b/i;\n\n/** The text without any mention of a command the reader may not run, or a flag it is refused. */\nexport function withoutUnoffered(\n root: HelpNode,\n text: string,\n offered: Offers,\n refusedFlags: readonly string[] = [],\n): string {\n const unusable = (part: string) => firstUnusable(root, part, offered, refusedFlags);\n return dropping(text.split(\"\\n\"), (line) => {\n if (unusable(line) === -1) return line;\n if (STANDALONE_LINE.test(line)) return null;\n const kept: string[] = [];\n let dropped = false;\n for (const sentence of line.split(/(?<=[.!?])\\s+/)) {\n const rest: string = dropped && LEANS_BACK.test(sentence) ? \"\" : sentenceWithout(sentence, unusable(sentence));\n dropped = rest === \"\";\n if (rest !== \"\") kept.push(rest);\n }\n return kept.length === 0 ? null : kept.join(\" \");\n }).join(\"\\n\");\n}\n\n/** Whether anything loaded under `path` is a command the reader may not run. */\nfunction holdsUnoffered(node: HelpNode, path: string[], offered: Offers): boolean {\n return loadedSubCommands(node).some(\n ([name, sub]) => !offered([...path, name].join(\" \")) || holdsUnoffered(sub, [...path, name], offered),\n );\n}\n\n/** A sentence or line that is about staging a change, from its first words. */\nconst WRITE_TALK =\n /^(?:stage\\b|staged\\b|staging\\b|write subcommands\\b|writes\\b|then stage\\b|drafts:|staged vs published\\b|lifecycle:|nothing staged\\b|on publish\\b|\\w+(?: \\/ \\w+)*\\s+—\\s+stage\\b)/i;\n\n/** The tail of a sentence offering a change: \"List campaigns, or stage writes (…)\". */\nconst WRITE_CLAUSE =\n /(?:\\s*(?:[,;]|\\s—|\\s-)\\s*(?:(?:or|plus|and)\\s+)?|\\s+(?:or|plus|and)\\s+)(?:stage[sd]?|staged)\\b[^.]*/gi;\n\n/** \"List, show, amend or clear …\": a sentence opening on a list of this command's own verbs. */\nconst VERB_LIST = /^((?:[A-Za-z]+, )*[A-Za-z]+,? (?:or|and) [a-z]+)\\b/;\n\n/** The sentence naming, of the verbs it opens on, only those the reader may run; \"\" when none. */\nfunction withOfferedVerbs(sentence: string, children: ReadonlySet<string>, unoffered: ReadonlySet<string>): string {\n const list = VERB_LIST.exec(sentence)?.[1];\n if (!list) return sentence;\n const verbs = list.split(/,\\s*(?:(?:or|and)\\s+)?|\\s+(?:or|and)\\s+/).map((verb) => verb.toLowerCase());\n if (!verbs.every((verb) => children.has(verb))) return sentence;\n const kept = verbs.filter((verb) => !unoffered.has(verb));\n if (kept.length === 0) return \"\";\n const named = kept.length === 1 ? (kept[0] ?? \"\") : `${kept.slice(0, -1).join(\", \")} or ${kept.at(-1)}`;\n return `${named.charAt(0).toUpperCase()}${named.slice(1)}${sentence.slice(list.length)}`;\n}\n\n/** Whether text opens on the name of a command here the reader may not run (\"Release if…\", \" associate-campaign / …\"). */\nfunction opensOnUnoffered(text: string, unoffered: ReadonlySet<string>): boolean {\n const first =\n text\n .trim()\n .split(/[\\s/]+/)[0]\n ?.toLowerCase() ?? \"\";\n return unoffered.has(first);\n}\n\n/** A line that is about a change: staging talk, a command it may not run, or \"Library writes (…):\" over reads. */\nfunction isWriteLine(line: string, unoffered: ReadonlySet<string>): boolean {\n if (WRITE_TALK.test(line.trim())) return true;\n if (indentOf(line) > 0) return opensOnUnoffered(line, unoffered);\n return /:\\s*$/.test(line) && /\\bwrites?\\b/i.test(line);\n}\n\nfunction withoutWriteTalk(paragraph: string, children: ReadonlySet<string>, unoffered: ReadonlySet<string>): string {\n const prose = (text: string) =>\n text\n .replace(WRITE_CLAUSE, \"\")\n .split(/(?<=[.!?])\\s+/)\n .map((sentence) => withOfferedVerbs(sentence, children, unoffered))\n .filter(\n (sentence) => sentence !== \"\" && !WRITE_TALK.test(sentence.trim()) && !opensOnUnoffered(sentence, unoffered),\n )\n .join(\" \");\n const lines = paragraph.split(\"\\n\");\n // Examples, tables and headings are kept line by line, and a line of prose among them sentence by sentence.\n if (lines.some((line) => /^\\s/.test(line) || STANDALONE_LINE.test(line) || /:\\s*$/.test(line))) {\n return dropping(lines, (line) => {\n if (isWriteLine(line, unoffered)) return null;\n if (indentOf(line) > 0 || STANDALONE_LINE.test(line) || !/[.!?]\\s*$/.test(line)) return line;\n const kept = prose(line);\n return kept === \"\" ? null : kept;\n }).join(\"\\n\");\n }\n return prose(lines.join(\" \"));\n}\n\n/** \"Subcommands: list (default), remove, clear.\" names only the ones the reader may run. */\nfunction withOfferedSubcommands(text: string, path: string[], offered: Offers): string {\n return text.replace(/Subcommands: ([^.]*)\\./g, (_whole, list: string) => {\n const kept = list.split(/,\\s*/).filter((item) => offered([...path, item.split(/\\s/)[0] ?? \"\"].join(\" \")));\n return kept.length > 0 ? `Subcommands: ${kept.join(\", \")}.` : \"\";\n });\n}\n\n/** Drops a heading whose block below it was emptied, and the blank lines left behind. */\nfunction tidy(text: string): string {\n const lines = text.split(\"\\n\");\n const kept = lines.filter((line, index) => {\n if (!/:\\s*$/.test(line)) return true;\n const next = lines.slice(index + 1).find((later) => later.trim() !== \"\");\n return next !== undefined && /^\\s/.test(next) && lines[index + 1]?.trim() !== \"\";\n });\n return kept\n .join(\"\\n\")\n .replace(/\\n{3,}/g, \"\\n\\n\")\n .replace(/^(?:[ \\t]*\\n)+/, \"\")\n .trimEnd();\n}\n\nexport function describedFor(\n root: HelpNode,\n description: string,\n path: string[],\n node: HelpNode,\n profile: AgentProfile,\n offered: Offers,\n refusedFlags: readonly string[] = [],\n): string {\n const cited = withoutUnoffered(root, description, offered, refusedFlags);\n if (profile === \"company\" || !holdsUnoffered(node, path, offered)) return tidy(cited);\n const children = new Set(subCommandNames(node));\n const unoffered = new Set([...children].filter((name) => !offered([...path, name].join(\" \"))));\n const shaped = cited\n .split(/\\n\\s*\\n/)\n .map((paragraph) => withoutWriteTalk(withOfferedSubcommands(paragraph, path, offered), children, unoffered))\n .join(\"\\n\\n\");\n const text = tidy(shaped);\n if (text !== \"\") return text;\n const reads = loadedSubCommands(node).flatMap(([name]) => (offered([...path, name].join(\" \")) ? [name] : []));\n return reads.length > 0 ? `Read: ${reads.join(\", \")}.` : \"\";\n}\n","import { type LoadableCommand, loadAllCommands, loadSubCommandNamed } from \"./command-loading.ts\";\nimport { optionalWorkspaceKind } from \"./env.ts\";\nimport { describedFor, withoutUnoffered } from \"./profile-help.ts\";\n\n/**\n * Which commands this CLI offers the agent running it.\n *\n * One CLI serves two agents. A company's agent works inside its own workspace\n * and changes it; it is offered everything, except the organization family,\n * which is for reading other companies and means nothing to it. The\n * organization workspace's agent reads every company of its organization and\n * changes none of them: it is offered the reads alone, plus the research and\n * judgment it runs as itself, and its own Scheduled agents.\n *\n * This is what the agent is shown, not what it is allowed: the backend refuses\n * a write naming a company whatever the CLI does (`readNamedCompany`). Kept as\n * an explicit list so a new command is hidden from the organization until\n * someone decides it only reads.\n */\n\nexport type AgentProfile = \"company\" | \"organization\";\n\n/** Set on the organization workspace's Runtime (`runtimeSession/nodeActions.ts`). */\nexport function agentProfile(workspaceKind: string | undefined = optionalWorkspaceKind()): AgentProfile {\n return workspaceKind === \"organization\" ? \"organization\" : \"company\";\n}\n\n/** Families only the organization workspace runs: hidden from a company's agent. */\nconst ORGANIZATION_ONLY = [\"organization\"];\n\n/**\n * Every command the organization workspace's agent is offered, as typed. An\n * entry offers that command and everything under it.\n */\nexport const ORGANIZATION_COMMANDS: readonly string[] = [\n \"schema\",\n \"capabilities\",\n \"organization\",\n // What a company did and has.\n \"chats\",\n \"history\",\n \"actions list\",\n \"actions log\",\n \"actions get\",\n \"actions status\",\n \"actions draft list\",\n \"actions tags list\",\n // The organization's own Scheduled agents, which live in this workspace:\n // staged like a company's, applied at Publish. Naming a company is still a\n // read only (`readNamedCompany`), so none of these reaches one.\n \"scheduled-agents\",\n \"experiment status\",\n \"experiment history\",\n \"flows list\",\n \"flows show\",\n \"flows schema\",\n \"testimonials get\",\n \"testimonials search\",\n \"testimonials list\",\n \"testimonials tags list\",\n \"testimonials sources list\",\n \"images get\",\n \"images search\",\n \"images library\",\n \"images tags list\",\n // A page's or a link's pictures and videos, to the workspace's own disk: a\n // client's logo, the photos on its site, the video it sent. Firecrawl reads\n // the page; nothing reaches any library (`--auto-ingest` is refused below).\n \"images download\",\n \"images extract\",\n \"videos get\",\n \"videos search\",\n \"videos tags list\",\n \"videos fetch\",\n \"studio get\",\n \"studio list\",\n \"avatars list\",\n \"avatars get\",\n \"creatives performance\",\n \"creatives feedback read\",\n \"landing export status\",\n \"landing export list\",\n \"site show\",\n \"site domain list\",\n \"credentials list\",\n \"setup-links list\",\n \"media-sources list\",\n \"posts list\",\n \"posts get\",\n \"posts search\",\n \"mcp connected\",\n \"mcp catalog\",\n \"mcp tools\",\n \"mcp execute\",\n \"mcp list\",\n // Ads, every platform: accounts, structure, results, staged drafts.\n \"ads google accounts\",\n \"ads google currency\",\n \"ads google url-options\",\n \"ads google changes\",\n \"ads google invoices\",\n \"ads google identity-verification\",\n \"ads google previews\",\n \"ads google brands\",\n \"ads google query\",\n \"ads google keywords discover\",\n \"ads google keywords metrics\",\n \"ads google keywords forecast\",\n \"ads google keywords themes\",\n \"ads google keywords locations\",\n \"ads google keywords languages\",\n \"ads google keywords list\",\n \"ads google budgets list\",\n \"ads google campaigns list\",\n \"ads google ad-groups list\",\n \"ads google negative-keywords list\",\n \"ads google keyword-lists list\",\n \"ads google ads list\",\n \"ads google assets list\",\n \"ads google asset-groups list\",\n \"ads google audiences list\",\n \"ads google audiences targeting\",\n \"ads google conversions list\",\n \"ads google bidding-strategies list\",\n \"ads google labels list\",\n \"ads google campaign-criteria list\",\n \"ads google ad-group-criteria list\",\n \"ads google ad-group-bid-modifiers list\",\n \"ads google account-exclusions list\",\n \"ads google asset-group-signals list\",\n \"ads google merchant-center list\",\n \"ads google draft list\",\n \"ads google draft show\",\n \"ads meta accounts\",\n \"ads meta account\",\n \"ads meta businesses\",\n \"ads meta pages\",\n \"ads meta lead-forms list\",\n \"ads meta leads\",\n \"ads meta campaigns list\",\n \"ads meta adsets list\",\n \"ads meta ads list\",\n \"ads meta creatives list\",\n \"ads meta audiences list\",\n \"ads meta custom-conversions list\",\n \"ads meta pixels\",\n \"ads meta activities\",\n \"ads meta insights\",\n \"ads meta draft list\",\n \"ads meta draft show\",\n \"ads linkedin accounts\",\n \"ads linkedin account detail\",\n \"ads linkedin campaign-groups list\",\n \"ads linkedin campaigns list\",\n \"ads linkedin creatives list\",\n \"ads linkedin draft list\",\n \"ads linkedin draft show\",\n \"ads linkedin analytics\",\n \"ads linkedin demographics\",\n \"ads linkedin companies\",\n \"ads linkedin top-companies\",\n \"ads linkedin resolve\",\n \"ads linkedin facets list\",\n \"ads linkedin facets values\",\n \"ads linkedin audience-size\",\n \"ads linkedin bid-pricing\",\n \"ads linkedin forecast\",\n \"ads linkedin leads\",\n \"ads linkedin conversions list\",\n \"ads linkedin conversions health\",\n \"ads linkedin conversation\",\n \"ads linkedin audit\",\n \"ads linkedin url-params\",\n \"ads x accounts\",\n \"ads x funding\",\n \"ads x campaigns list\",\n \"ads x line-items list\",\n \"ads x promoted-tweets list\",\n \"ads x tweets\",\n \"ads x cards\",\n \"ads x draft list\",\n \"ads x draft show\",\n \"ads x media\",\n \"ads x audiences\",\n \"ads x targeting-criteria list\",\n \"ads x targeting-constants\",\n \"ads x active-entities\",\n \"ads x stats job-status\",\n \"ads chatgpt account show\",\n \"ads chatgpt campaigns list\",\n \"ads chatgpt ad-groups list\",\n \"ads chatgpt ads list\",\n \"ads chatgpt conversions list\",\n \"ads chatgpt conversions events\",\n \"ads chatgpt conversions report\",\n \"ads chatgpt audiences list\",\n \"ads chatgpt catalogs list\",\n \"ads chatgpt catalogs uploads\",\n \"ads chatgpt catalogs products\",\n \"ads chatgpt history\",\n \"ads chatgpt insights\",\n \"ads chatgpt locations\",\n \"ads chatgpt draft list\",\n \"ads chatgpt draft show\",\n // Baker's synced copy of every platform's results, which the live reads above\n // point at first. Reads only: each `show` beside its staged changes.\n \"ads performance overview\",\n \"ads performance trend\",\n // Who the ads brought: counts per ad and per persona answer, and the ladder\n // and persona map they are counted by (`adPerformance/peopleRoute.ts`).\n \"ads performance people\",\n \"ads performance personas\",\n \"ads performance ladder\",\n \"ads performance persona-fields\",\n \"ads performance accounts\",\n \"ads performance setup\",\n \"ads performance entities\",\n \"ads performance entity\",\n \"ads performance changes\",\n \"ads performance impact\",\n \"ads performance creatives\",\n \"ads performance families show\",\n \"ads performance families choices\",\n \"ads performance creative-health\",\n \"ads performance creative-assets\",\n \"ads performance health\",\n \"ads performance breakdown\",\n \"ads performance search-terms\",\n \"ads performance pacing\",\n \"ads performance funnel\",\n \"ads performance tracking\",\n \"ads performance landings\",\n \"ads performance live-in\",\n \"ads performance status\",\n \"ads performance goals show\",\n \"ads performance progress\",\n \"ads performance diagnose\",\n \"ads performance pulse\",\n \"ads performance anomalies\",\n \"ads performance recap\",\n \"ads performance targets show\",\n \"ads performance budget-recommendations\",\n \"ads performance attention show\",\n \"ads performance currency show\",\n \"ads performance brand-split\",\n \"ads performance impression-share\",\n \"ads performance keyword-quality\",\n \"ads performance google-report\",\n \"ads performance budgets show\",\n \"ads performance segments show\",\n // Pages and measurement.\n \"analytics overview\",\n \"analytics traffic\",\n \"analytics funnel\",\n \"analytics flow\",\n \"analytics page\",\n \"analytics triggers\",\n \"analytics releases\",\n \"analytics paid\",\n \"analytics delivery\",\n \"analytics submissions\",\n \"analytics geo\",\n \"analytics bots\",\n \"analytics landings\",\n \"analytics tags\",\n \"analytics events\",\n \"analytics feed\",\n \"analytics lookup\",\n \"analytics devices\",\n \"analytics ads\",\n \"analytics conversions\",\n \"analytics sends\",\n \"analytics tracking\",\n \"analytics arrivals\",\n \"analytics sending-events\",\n \"analytics sources\",\n \"analytics website-tag\",\n \"analytics sites\",\n \"analytics questionnaire\",\n \"analytics presets\",\n \"funnel\",\n \"ga4 properties\",\n \"ga4 config\",\n \"ga4 audit\",\n \"ga4 query\",\n \"ga4 draft list\",\n \"ga4 draft show\",\n \"gsc\",\n \"tags list\",\n \"tags draft\",\n \"tag-manager containers\",\n \"tag-manager read\",\n \"tag-manager draft list\",\n \"tag-manager draft show\",\n // CRM and accounts.\n \"hubspot\",\n \"accounts influenced\",\n \"accounts engagement\",\n \"accounts warm\",\n \"accounts company\",\n \"accounts campaigns\",\n \"accounts crm status\",\n \"accounts crm check\",\n \"accounts crm contract\",\n // Research and judgment, run as the workspace itself (never with --company).\n // Not `research customers`, which writes into a company's Knowledge, nor\n // `winning-ads fit`, which judges an ad against a company's own COMPANY.md.\n \"research web\",\n \"research fetch\",\n \"research linkedin-person\",\n \"research transcript\",\n \"research company\",\n \"research google-ads\",\n \"research reddit\",\n \"research advertisers\",\n \"research autocomplete\",\n \"research countries\",\n \"research intent\",\n \"research keyword-metrics\",\n \"research keywords-for-site\",\n \"research keyword-gap\",\n \"research languages\",\n \"research lighthouse\",\n \"research relevant-pages\",\n \"decide\",\n \"winning-ads search\",\n \"winning-ads advertisers\",\n // Adds a brand to Baker's shared library with nobody following it, so a\n // client being set up can be read there: its channels, ads and landings.\n \"winning-ads add\",\n \"winning-ads discover\",\n \"winning-ads following\",\n \"winning-ads feed\",\n \"winning-ads winners\",\n \"winning-ads ads\",\n \"winning-ads profile\",\n \"winning-ads launches\",\n \"winning-ads landings\",\n \"winning-ads search-copy\",\n \"winning-ads content\",\n \"winning-ads hooks\",\n \"winning-ads mechanisms\",\n \"winning-ads formats\",\n];\n\nfunction covers(entry: string, path: string): boolean {\n return path === entry || path.startsWith(`${entry} `);\n}\n\n/**\n * Whether `path` (a command as typed, `\"ads meta campaigns list\"`) is offered\n * to `profile`. A group is offered when anything under it is, so the way to an\n * offered command stays open.\n */\nexport function offers(profile: AgentProfile, path: string): boolean {\n if (path === \"\") return true;\n if (profile === \"company\") {\n return !ORGANIZATION_ONLY.some((family) => covers(family, path));\n }\n return ORGANIZATION_COMMANDS.some((entry) => covers(entry, path) || covers(path, entry));\n}\n\n/**\n * The flags that change something, on commands the organization is offered to\n * read. `funnel` reads the funnel and `funnel --add-trigger` changes it, so the\n * command is offered and these are refused, and left out of its help.\n */\nexport const ORGANIZATION_WRITE_FLAGS: Readonly<Record<string, readonly string[]>> = {\n \"images extract\": [\"auto-ingest\", \"context\"],\n funnel: [\"steps\", \"step\", \"add-trigger\", \"remove-trigger\", \"event\", \"remove-step\", \"preset\"],\n \"analytics conversions\": [\"event\", \"name\", \"rename\", \"to\", \"remove-name\", \"count-mode\", \"remove\"],\n \"analytics sends\": [\n \"set\",\n \"source-event\",\n \"from\",\n \"platform\",\n \"tag\",\n \"event\",\n \"account\",\n \"parameter\",\n \"id\",\n \"remove\",\n ],\n \"analytics sources\": [\n \"server\",\n \"create\",\n \"create-hubspot\",\n \"create-activecampaign\",\n \"events\",\n \"account\",\n \"set-trigger\",\n \"set-amount\",\n \"amount-property\",\n \"currency\",\n \"write\",\n \"name\",\n \"map\",\n \"field\",\n \"pause\",\n \"resume\",\n \"remove\",\n ],\n \"analytics sites\": [\"add\", \"remove\"],\n};\n\nfunction kebabCase(name: string): string {\n return name.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);\n}\n\n/** The first flag in `argv` the organization is refused on the command at `path`, if any. */\nfunction refusedFlagIn(path: string, argv: readonly string[]): string | null {\n const refused = ORGANIZATION_WRITE_FLAGS[path];\n if (!refused) return null;\n const end = argv.indexOf(\"--\");\n for (const token of end === -1 ? argv : argv.slice(0, end)) {\n if (!token.startsWith(\"--\")) continue;\n const name = kebabCase(token.slice(2).split(\"=\")[0] ?? \"\").replace(/^no-/, \"\");\n if (refused.includes(name)) return name;\n }\n return null;\n}\n\ntype ProfiledCommand = { meta?: unknown; subCommands?: unknown };\n\n/** What the organization's agent is told when it reaches for a command it is not offered. */\nexport const ORGANIZATION_REFUSAL =\n \"The organization workspace only reads its companies, and this command changes something. A change to a company is made in that company's own chat; here, read it and show it in a Report.\";\n\nfunction hide(command: ProfiledCommand): void {\n if (typeof command.meta === \"object\" && command.meta !== null) {\n (command.meta as { hidden?: boolean }).hidden = true;\n }\n}\n\n/**\n * Rewrites, in place, what each loaded command `profile` is shown says\n * (`profile-help.ts`), and takes off it the flags `profile` is refused. Args are\n * replaced rather than edited: one definition can be shared between commands.\n */\nfunction describeOffered(root: ProfiledCommand, command: ProfiledCommand, profile: AgentProfile, path: string[]): void {\n const meta = command.meta as { hidden?: boolean; description?: unknown } | undefined;\n if (meta?.hidden === true) return;\n const offered = (cited: string) => offers(profile, cited);\n const refusedFlags = profile === \"organization\" ? (ORGANIZATION_WRITE_FLAGS[path.join(\" \")] ?? []) : [];\n if (typeof meta?.description === \"string\") {\n meta.description = describedFor(root, meta.description, path, command, profile, offered, refusedFlags);\n }\n const shaped = command as { args?: unknown };\n if (typeof shaped.args === \"object\" && shaped.args !== null) {\n shaped.args = Object.fromEntries(\n Object.entries(shaped.args as Record<string, unknown>).flatMap(([name, arg]) => {\n if (refusedFlags.includes(kebabCase(name))) return [];\n const description = (arg as { description?: unknown } | null)?.description;\n return [\n [\n name,\n typeof description === \"string\"\n ? { ...(arg as object), description: withoutUnoffered(root, description, offered, refusedFlags) }\n : arg,\n ],\n ];\n }),\n );\n }\n const subCommands = command.subCommands;\n if (typeof subCommands !== \"object\" || subCommands === null) return;\n for (const [name, sub] of Object.entries(subCommands as Record<string, unknown>)) {\n if (typeof sub === \"object\" && sub !== null)\n describeOffered(root, sub as ProfiledCommand, profile, [...path, name]);\n }\n}\n\n/** Marks, in place, every loaded command `profile` is not offered as hidden from help. */\nfunction hideUnoffered(command: ProfiledCommand, profile: AgentProfile, path: string[]): void {\n const subCommands = command.subCommands;\n if (typeof subCommands !== \"object\" || subCommands === null) return;\n for (const [name, sub] of Object.entries(subCommands as Record<string, unknown>)) {\n if (typeof sub !== \"object\" || sub === null) continue;\n const subPath = [...path, name];\n if (!offers(profile, subPath.join(\" \"))) hide(sub as ProfiledCommand);\n hideUnoffered(sub as ProfiledCommand, profile, subPath);\n }\n}\n\ntype ArgDefinition = { type?: unknown; alias?: unknown };\n\nfunction camelCase(name: string): string {\n return name.replace(/-([a-z0-9])/g, (_, letter: string) => letter.toUpperCase());\n}\n\nfunction aliases(of: unknown): unknown[] {\n return Array.isArray(of) ? of : of === undefined ? [] : [of];\n}\n\n/** Whether `flag` takes the token after it as its value on `command`, as citty reads it. */\nfunction takesValue(command: ProfiledCommand & { args?: unknown }, flag: string): boolean {\n if (flag.includes(\"=\") || typeof command.args !== \"object\" || command.args === null) return false;\n const name = flag.replace(/^-{1,2}/, \"\");\n return Object.entries(command.args as Record<string, ArgDefinition>).some(\n ([key, definition]) =>\n (definition.type === \"string\" || definition.type === \"enum\") &&\n (camelCase(key) === camelCase(name) || aliases(definition.alias).includes(name)),\n );\n}\n\n/**\n * The command `argv` addresses, found the way citty finds it: flags, and the\n * value after one that takes it, are skipped, so a flag before a command's name\n * cannot leave the path at its group. Each step is loaded on the way —\n * `loadCommands` stops at the first flag, and `--company` is taken off only\n * after it ran, so the guard cannot lean on what it loaded.\n */\nasync function addressedCommand(\n root: ProfiledCommand,\n argv: readonly string[],\n): Promise<{ path: string; command: ProfiledCommand }> {\n const path: string[] = [];\n let command: ProfiledCommand = root;\n for (let index = 0; index < argv.length; index++) {\n const token = argv[index] ?? \"\";\n if (token === \"--\") break;\n if (token.startsWith(\"-\")) {\n if (takesValue(command, token)) index++;\n continue;\n }\n const next = await loadSubCommandNamed(command as LoadableCommand, token);\n if (!next) break;\n path.push(next[0]);\n command = next[1] as ProfiledCommand;\n }\n return { path: path.join(\" \"), command };\n}\n\n/**\n * Shapes the loaded command tree for the agent running it: what it is not\n * offered leaves its help, and the organization's agent is refused a command it\n * is not offered (the returned message; `null` when it may run). A company's\n * agent is never refused: the organization's commands are only out of its help,\n * because a Report published from the organization workspace runs them on a\n * runner that has no profile of its own.\n */\nexport async function applyAgentProfile(\n root: ProfiledCommand,\n profile: AgentProfile,\n argv: readonly string[],\n): Promise<string | null> {\n const { path, command } = await addressedCommand(root, argv);\n // A walk that ends on a group prints its usage — `--help` anywhere, past `--`\n // too, or no command or an unknown one — listing its subcommands, which are\n // hidden only once loaded. A walk that reaches a command loads nothing more.\n await loadAllCommands(command as LoadableCommand);\n // Judged before the help is shaped, which takes the refused flags off the command.\n const refused = profile === \"organization\" && (!offers(profile, path) || refusedFlagIn(path, argv) !== null);\n hideUnoffered(root, profile, []);\n describeOffered(root, root, profile, []);\n return refused ? ORGANIZATION_REFUSAL : null;\n}\n"],"mappings":";;;;;AASO,SAAS,eAAe,MAAyB,UAA+C;AACrG,QAAM,QAAQ,KAAK,KAAK,CAAC,UAAU,CAAC,MAAM,WAAW,GAAG,CAAC;AAEzD,MAAI,UAAU,UAAa,UAAU,YAAY,SAAS,SAAS,KAAK,EAAG,QAAO,CAAC,KAAK;AACxF,SAAO;AACT;AAIA,eAAe,SAAY,OAAkC;AAC3D,SAAO,OAAO,UAAU,aAAa,MAAO,MAA+B,IAAI,MAAM;AACvF;AAGA,eAAe,cAAc,SAA+D;AAC1F,MAAI,QAAQ,gBAAgB,OAAW,QAAO;AAC9C,QAAM,cAAc,MAAM,SAAS,QAAQ,WAAW;AACtD,UAAQ,cAAc;AACtB,SAAO;AACT;AAOA,eAAsB,oBACpB,SACA,OAC2C;AAC3C,QAAM,cAAc,MAAM,cAAc,OAAO;AAC/C,MAAI,CAAC,YAAa,QAAO;AACzB,QAAM,QAAQ,YAAY,KAAK;AAC/B,MAAI,UAAU,QAAW;AACvB,UAAM,SAAS,MAAM,SAAS,KAAK;AACnC,gBAAY,KAAK,IAAI;AACrB,WAAO,CAAC,OAAO,MAAM;AAAA,EACvB;AACA,aAAW,CAAC,MAAM,GAAG,KAAK,OAAO,QAAQ,WAAW,GAAG;AACrD,UAAM,SAAS,MAAM,SAAS,GAAG;AACjC,gBAAY,IAAI,IAAI;AACpB,UAAM,OAAQ,MAAM,SAAS,OAAO,QAAQ,CAAC,CAAC;AAC9C,UAAMA,WAAU,MAAM,QAAQ,KAAK,KAAK,IAAI,KAAK,QAAQ,KAAK,UAAU,SAAY,CAAC,IAAI,CAAC,KAAK,KAAK;AACpG,QAAIA,SAAQ,SAAS,KAAK,EAAG,QAAO,CAAC,MAAM,MAAM;AAAA,EACnD;AACA,SAAO;AACT;AAGA,eAAsB,gBAAgB,SAAyC;AAC7E,QAAM,cAAc,MAAM,cAAc,OAAO;AAC/C,MAAI,CAAC,YAAa;AAClB,aAAW,CAAC,MAAM,GAAG,KAAK,OAAO,QAAQ,WAAW,GAAG;AACrD,UAAM,SAAS,MAAM,SAAS,GAAG;AACjC,gBAAY,IAAI,IAAI;AACpB,UAAM,gBAAgB,MAAM;AAAA,EAC9B;AACF;AAUA,eAAsB,aAAwC,MAAS,MAAqC;AAC1G,QAAM,WAAW,OAAO,KAAM,MAAM,cAAc,IAAI,KAAM,CAAC,CAAC;AAC9D,MAAI,eAAe,MAAM,QAAQ,MAAM,OAAO;AAC5C,UAAM,gBAAgB,IAAI;AAC1B,WAAO;AAAA,EACT;AACA,MAAI,UAA2B;AAC/B,aAAW,SAAS,MAAM;AACxB,QAAI,UAAU,QAAQ,MAAM,WAAW,GAAG,EAAG;AAC7C,UAAM,cAAc,MAAM,cAAc,OAAO;AAC/C,UAAM,MAAM,cAAc,KAAK;AAC/B,QAAI,CAAC,eAAe,QAAQ,OAAW;AACvC,UAAM,SAAS,MAAM,SAAS,GAAG;AACjC,gBAAY,KAAK,IAAI;AACrB,cAAU;AAAA,EACZ;AACA,SAAO;AACT;;;AC3EA,SAAS,kBAAkB,MAA2C;AACpE,QAAM,cAAc,KAAK;AACzB,MAAI,OAAO,gBAAgB,YAAY,gBAAgB,KAAM,QAAO,CAAC;AACrE,SAAO,OAAO,QAAQ,WAAsC,EAAE;AAAA,IAAQ,CAAC,CAAC,MAAM,GAAG,MAC/E,OAAO,QAAQ,YAAY,QAAQ,OAAO,CAAC,CAAC,MAAM,GAAe,CAAuB,IAAI,CAAC;AAAA,EAC/F;AACF;AAEA,SAAS,gBAAgB,MAA0B;AACjD,QAAM,cAAc,KAAK;AACzB,SAAO,OAAO,gBAAgB,YAAY,gBAAgB,OAAO,OAAO,KAAK,WAAW,IAAI,CAAC;AAC/F;AASA,SAAS,UAAU,MAAgB,SAA2B;AAC5D,QAAM,QAAQ,QAAQ,KAAK,EAAE,MAAM,KAAK;AACxC,MAAI,OAAiB;AACrB,QAAM,OAAiB,CAAC;AACxB,aAAW,QAAQ,OAAO;AACxB,UAAM,SAAS,kBAAkB,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,SAAS,IAAI,IAAI,CAAC;AAC1E,QAAI,CAAC,QAAQ;AAEX,aAAO,gBAAgB,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC;AAAA,IAC1G;AACA,WAAO;AACP,SAAK,KAAK,IAAI;AAAA,EAChB;AACA,SAAO,CAAC,KAAK,KAAK,GAAG,CAAC;AACxB;AAEA,SAAS,SAAS,MAAsB;AACtC,SAAO,KAAK,SAAS,KAAK,UAAU,EAAE;AACxC;AAQA,SAAS,SAAS,OAAiB,OAAkD;AACnF,QAAM,OAAiB,CAAC;AACxB,MAAI,UAA8C;AAClD,aAAW,QAAQ,OAAO;AACxB,QAAI,UAAU,IAAI,EAAG;AACrB,cAAU;AACV,UAAM,OAAO,MAAM,IAAI;AACvB,QAAI,SAAS,MAAM;AACjB,WAAK,KAAK,IAAI;AACd;AAAA,IACF;AACA,UAAM,SAAS,SAAS,IAAI;AAC5B,QAAI,SAAS,KAAK,IAAI,GAAG;AACvB,UAAI,OAAO;AACX,gBAAU,CAAC,SAAS;AAClB,cAAM,YAAY;AAClB,eAAO,SAAS,KAAK,IAAI;AACzB,eAAO;AAAA,MACT;AAAA,IACF,WAAW,WAAW,KAAK,CAAC,cAAc,KAAK,IAAI,GAAG;AACpD,UAAI,OAAO;AACX,gBAAU,CAAC,SAAS;AAClB,cAAM,YAAY,QAAQ,KAAK,KAAK,MAAM,MAAM,SAAS,IAAI,MAAM;AACnE,eAAO,aAAa,CAAC,cAAc,KAAK,IAAI;AAC5C,eAAO;AAAA,MACT;AAAA,IACF,WAAW,SAAS,GAAG;AACrB,gBAAU,CAAC,SAAS,KAAK,KAAK,MAAM,MAAM,SAAS,IAAI,IAAI;AAAA,IAC7D;AAAA,EACF;AACA,SAAO;AACT;AAGA,IAAM,kBAAkB;AAExB,SAAS,SAAS,MAAuB;AACvC,UAAQ,KAAK,MAAM,KAAK,GAAG,UAAU,QAAQ,KAAK,MAAM,KAAK,GAAG,UAAU;AAC5E;AAGA,SAAS,gBAAgB,MAAgB,MAAoD;AAC3F,QAAM,WAAW,IAAI,IAAI,gBAAgB,IAAI,CAAC;AAC9C,QAAM,SAAS,CAAC,GAAG,KAAK,SAAS,gDAAgD,CAAC,EAAE;AAAA,IAAO,CAAC,UAC1F,SAAS,KAAK,MAAM,CAAC,KAAK,IAAI,MAAM,KAAK,EAAE,CAAC,KAAK,EAAE;AAAA,EACrD;AACA,SAAO,CAAC,GAAG,KAAK,SAAS,qCAAqC,GAAG,GAAG,MAAM,EAAE,IAAI,CAAC,WAAW;AAAA,IAC1F,IAAI,MAAM;AAAA,IACV,OAAO,MAAM,CAAC,KAAK;AAAA,EACrB,EAAE;AACJ;AAMA,SAAS,cAAc,MAAgB,MAAc,SAAiB,cAAyC;AAC7G,QAAM,WAAW,gBAAgB,MAAM,IAAI,EACxC,OAAO,CAAC,EAAE,MAAM,MAAM,UAAU,MAAM,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC,EAC3E,IAAI,CAAC,EAAE,IAAAC,IAAG,MAAMA,GAAE;AACrB,QAAM,QAAQ,aAAa,QAAQ,CAAC,SAAS;AAC3C,UAAM,QAAQ,IAAI,OAAO,KAAK,IAAI,YAAY,EAAE,KAAK,IAAI;AACzD,WAAO,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC;AAAA,EAClC,CAAC;AACD,QAAM,KAAK,CAAC,GAAG,UAAU,GAAG,KAAK;AACjC,SAAO,GAAG,SAAS,IAAI,KAAK,IAAI,GAAG,EAAE,IAAI;AAC3C;AAOA,SAAS,gBAAgB,UAAkB,YAA4B;AACrE,MAAI,eAAe,GAAI,QAAO;AAC9B,QAAM,SAAS,SAAS,MAAM,GAAG,UAAU,EAAE,QAAQ,MAAM,EAAE;AAC7D,QAAM,MAAM,KAAK,IAAI,OAAO,YAAY,IAAI,GAAG,OAAO,YAAY,UAAK,GAAG,OAAO,YAAY,IAAI,CAAC;AAClG,QAAM,SAAS,QAAQ,KAAK,KAAK,OAAO,MAAM,GAAG,GAAG,EAAE,KAAK;AAE3D,QAAM,UAAU,mCAAmC,KAAK,MAAM;AAC9D,SAAO,OAAO,MAAM,KAAK,EAAE,UAAU,KAAK,SAAS,MAAM,KAAK,CAAC,UAAU,GAAG,MAAM,MAAM;AAC1F;AAGA,IAAM,aAAa;AAGZ,SAAS,iBACd,MACA,MACA,SACA,eAAkC,CAAC,GAC3B;AACR,QAAM,WAAW,CAAC,SAAiB,cAAc,MAAM,MAAM,SAAS,YAAY;AAClF,SAAO,SAAS,KAAK,MAAM,IAAI,GAAG,CAAC,SAAS;AAC1C,QAAI,SAAS,IAAI,MAAM,GAAI,QAAO;AAClC,QAAI,gBAAgB,KAAK,IAAI,EAAG,QAAO;AACvC,UAAM,OAAiB,CAAC;AACxB,QAAI,UAAU;AACd,eAAW,YAAY,KAAK,MAAM,eAAe,GAAG;AAClD,YAAM,OAAe,WAAW,WAAW,KAAK,QAAQ,IAAI,KAAK,gBAAgB,UAAU,SAAS,QAAQ,CAAC;AAC7G,gBAAU,SAAS;AACnB,UAAI,SAAS,GAAI,MAAK,KAAK,IAAI;AAAA,IACjC;AACA,WAAO,KAAK,WAAW,IAAI,OAAO,KAAK,KAAK,GAAG;AAAA,EACjD,CAAC,EAAE,KAAK,IAAI;AACd;AAGA,SAAS,eAAe,MAAgB,MAAgB,SAA0B;AAChF,SAAO,kBAAkB,IAAI,EAAE;AAAA,IAC7B,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,EAAE,KAAK,GAAG,CAAC,KAAK,eAAe,KAAK,CAAC,GAAG,MAAM,IAAI,GAAG,OAAO;AAAA,EACtG;AACF;AAGA,IAAM,aACJ;AAGF,IAAM,eACJ;AAGF,IAAM,YAAY;AAGlB,SAAS,iBAAiB,UAAkB,UAA+B,WAAwC;AACjH,QAAM,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC;AACzC,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,QAAQ,KAAK,MAAM,yCAAyC,EAAE,IAAI,CAAC,SAAS,KAAK,YAAY,CAAC;AACpG,MAAI,CAAC,MAAM,MAAM,CAAC,SAAS,SAAS,IAAI,IAAI,CAAC,EAAG,QAAO;AACvD,QAAM,OAAO,MAAM,OAAO,CAAC,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC;AACxD,MAAI,KAAK,WAAW,EAAG,QAAO;AAC9B,QAAM,QAAQ,KAAK,WAAW,IAAK,KAAK,CAAC,KAAK,KAAM,GAAG,KAAK,MAAM,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;AACrG,SAAO,GAAG,MAAM,OAAO,CAAC,EAAE,YAAY,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC,GAAG,SAAS,MAAM,KAAK,MAAM,CAAC;AACxF;AAGA,SAAS,iBAAiB,MAAc,WAAyC;AAC/E,QAAM,QACJ,KACG,KAAK,EACL,MAAM,QAAQ,EAAE,CAAC,GAChB,YAAY,KAAK;AACvB,SAAO,UAAU,IAAI,KAAK;AAC5B;AAGA,SAAS,YAAY,MAAc,WAAyC;AAC1E,MAAI,WAAW,KAAK,KAAK,KAAK,CAAC,EAAG,QAAO;AACzC,MAAI,SAAS,IAAI,IAAI,EAAG,QAAO,iBAAiB,MAAM,SAAS;AAC/D,SAAO,QAAQ,KAAK,IAAI,KAAK,eAAe,KAAK,IAAI;AACvD;AAEA,SAAS,iBAAiB,WAAmB,UAA+B,WAAwC;AAClH,QAAM,QAAQ,CAAC,SACb,KACG,QAAQ,cAAc,EAAE,EACxB,MAAM,eAAe,EACrB,IAAI,CAAC,aAAa,iBAAiB,UAAU,UAAU,SAAS,CAAC,EACjE;AAAA,IACC,CAAC,aAAa,aAAa,MAAM,CAAC,WAAW,KAAK,SAAS,KAAK,CAAC,KAAK,CAAC,iBAAiB,UAAU,SAAS;AAAA,EAC7G,EACC,KAAK,GAAG;AACb,QAAM,QAAQ,UAAU,MAAM,IAAI;AAElC,MAAI,MAAM,KAAK,CAAC,SAAS,MAAM,KAAK,IAAI,KAAK,gBAAgB,KAAK,IAAI,KAAK,QAAQ,KAAK,IAAI,CAAC,GAAG;AAC9F,WAAO,SAAS,OAAO,CAAC,SAAS;AAC/B,UAAI,YAAY,MAAM,SAAS,EAAG,QAAO;AACzC,UAAI,SAAS,IAAI,IAAI,KAAK,gBAAgB,KAAK,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,EAAG,QAAO;AACxF,YAAM,OAAO,MAAM,IAAI;AACvB,aAAO,SAAS,KAAK,OAAO;AAAA,IAC9B,CAAC,EAAE,KAAK,IAAI;AAAA,EACd;AACA,SAAO,MAAM,MAAM,KAAK,GAAG,CAAC;AAC9B;AAGA,SAAS,uBAAuB,MAAc,MAAgB,SAAyB;AACrF,SAAO,KAAK,QAAQ,2BAA2B,CAAC,QAAQ,SAAiB;AACvE,UAAM,OAAO,KAAK,MAAM,MAAM,EAAE,OAAO,CAAC,SAAS,QAAQ,CAAC,GAAG,MAAM,KAAK,MAAM,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC;AACxG,WAAO,KAAK,SAAS,IAAI,gBAAgB,KAAK,KAAK,IAAI,CAAC,MAAM;AAAA,EAChE,CAAC;AACH;AAGA,SAAS,KAAK,MAAsB;AAClC,QAAM,QAAQ,KAAK,MAAM,IAAI;AAC7B,QAAM,OAAO,MAAM,OAAO,CAAC,MAAM,UAAU;AACzC,QAAI,CAAC,QAAQ,KAAK,IAAI,EAAG,QAAO;AAChC,UAAM,OAAO,MAAM,MAAM,QAAQ,CAAC,EAAE,KAAK,CAAC,UAAU,MAAM,KAAK,MAAM,EAAE;AACvE,WAAO,SAAS,UAAa,MAAM,KAAK,IAAI,KAAK,MAAM,QAAQ,CAAC,GAAG,KAAK,MAAM;AAAA,EAChF,CAAC;AACD,SAAO,KACJ,KAAK,IAAI,EACT,QAAQ,WAAW,MAAM,EACzB,QAAQ,kBAAkB,EAAE,EAC5B,QAAQ;AACb;AAEO,SAAS,aACd,MACA,aACA,MACA,MACA,SACA,SACA,eAAkC,CAAC,GAC3B;AACR,QAAM,QAAQ,iBAAiB,MAAM,aAAa,SAAS,YAAY;AACvE,MAAI,YAAY,aAAa,CAAC,eAAe,MAAM,MAAM,OAAO,EAAG,QAAO,KAAK,KAAK;AACpF,QAAM,WAAW,IAAI,IAAI,gBAAgB,IAAI,CAAC;AAC9C,QAAM,YAAY,IAAI,IAAI,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC7F,QAAM,SAAS,MACZ,MAAM,SAAS,EACf,IAAI,CAAC,cAAc,iBAAiB,uBAAuB,WAAW,MAAM,OAAO,GAAG,UAAU,SAAS,CAAC,EAC1G,KAAK,MAAM;AACd,QAAM,OAAO,KAAK,MAAM;AACxB,MAAI,SAAS,GAAI,QAAO;AACxB,QAAM,QAAQ,kBAAkB,IAAI,EAAE,QAAQ,CAAC,CAAC,IAAI,MAAO,QAAQ,CAAC,GAAG,MAAM,IAAI,EAAE,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAE;AAC5G,SAAO,MAAM,SAAS,IAAI,SAAS,MAAM,KAAK,IAAI,CAAC,MAAM;AAC3D;;;ACvQO,SAAS,aAAa,gBAAoC,sBAAsB,GAAiB;AACtG,SAAO,kBAAkB,iBAAiB,iBAAiB;AAC7D;AAGA,IAAM,oBAAoB,CAAC,cAAc;AAMlC,IAAM,wBAA2C;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA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","names":["aliases","at"]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|