agents-inc 0.159.0 → 0.161.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/CHANGELOG.md +23 -0
- package/README.md +1 -1
- package/dist/{chunk-PEHYVSJG.js → chunk-264XDRU7.js} +2 -2
- package/dist/{chunk-WVKGO3Y5.js → chunk-2MPXMJ2O.js} +7 -7
- package/dist/{chunk-IO2DPRDS.js → chunk-3H42U56X.js} +2 -2
- package/dist/{chunk-FBRLHNUT.js → chunk-3M75HVIM.js} +3 -3
- package/dist/{chunk-YKRPWZ3G.js → chunk-3TM4FHTG.js} +2 -2
- package/dist/{chunk-5YOSLSQJ.js → chunk-5DWDT6GM.js} +115 -96
- package/dist/chunk-5DWDT6GM.js.map +1 -0
- package/dist/{chunk-4APXK7ZY.js → chunk-5MML3K36.js} +2 -2
- package/dist/{chunk-F35G42TF.js → chunk-6PVWDTEM.js} +12 -12
- package/dist/{chunk-VCUXNKOY.js → chunk-A2NA377T.js} +6 -6
- package/dist/{chunk-4RYWFQK7.js → chunk-ADDYIMWN.js} +3 -3
- package/dist/{chunk-V625APR6.js → chunk-AMZO4YJK.js} +10789 -18786
- package/dist/chunk-AMZO4YJK.js.map +1 -0
- package/dist/{chunk-4VMLCWLD.js → chunk-AO6DXJUK.js} +3 -3
- package/dist/{chunk-G7TYOPON.js → chunk-B3YSTZZC.js} +3 -3
- package/dist/{chunk-THLQS2AW.js → chunk-B7YTQVAF.js} +4 -4
- package/dist/{chunk-7Z4N4JWQ.js → chunk-BLGETWYI.js} +6 -113
- package/dist/chunk-BLGETWYI.js.map +1 -0
- package/dist/{chunk-ITEJARWI.js → chunk-BRHU6J3C.js} +3 -3
- package/dist/{chunk-AU5FS3QK.js → chunk-DGXW2ZFY.js} +3 -3
- package/dist/{chunk-LSSGS2QS.js → chunk-DHRW3MDM.js} +3 -3
- package/dist/{chunk-OJIQOVWB.js → chunk-DTCUZL7S.js} +2 -2
- package/dist/{chunk-SKDTGHCD.js → chunk-EEFTUZHZ.js} +5 -5
- package/dist/{chunk-BQJVHD6Y.js → chunk-EERGAAGE.js} +5 -10
- package/dist/chunk-EERGAAGE.js.map +1 -0
- package/dist/{chunk-Z6G24ROK.js → chunk-EQSMVZGS.js} +10 -10
- package/dist/{chunk-2Q65K6E3.js → chunk-EY7Z34Y4.js} +15 -15
- package/dist/{chunk-BNHD2GIB.js → chunk-F6LS2BQD.js} +11 -11
- package/dist/{chunk-SITF5EZM.js → chunk-HB3YIAFD.js} +2 -2
- package/dist/{chunk-GPZQCLZJ.js → chunk-LZPRLHUE.js} +9 -9
- package/dist/{chunk-YAHTF4NO.js → chunk-MED6GNV3.js} +288 -203
- package/dist/chunk-MED6GNV3.js.map +1 -0
- package/dist/chunk-N6CILY5A.js +35 -0
- package/dist/chunk-N6CILY5A.js.map +1 -0
- package/dist/{chunk-42PQKBVU.js → chunk-ODUACQLV.js} +6 -6
- package/dist/{chunk-VZRO7RYT.js → chunk-OI2H6M5I.js} +1 -103
- package/dist/chunk-OI2H6M5I.js.map +1 -0
- package/dist/{chunk-MPLWPWL4.js → chunk-QKMT6OOP.js} +2 -2
- package/dist/{chunk-WVBJRFFM.js → chunk-SX57ZIGM.js} +4 -4
- package/dist/{chunk-62XKTOUI.js → chunk-T4RVCFWN.js} +5 -15
- package/dist/chunk-T4RVCFWN.js.map +1 -0
- package/dist/{chunk-4VVKVOOP.js → chunk-UMYEY6BA.js} +2 -2
- package/dist/{chunk-X5PLVOJS.js → chunk-W2RXRWDB.js} +2 -2
- package/dist/{chunk-JV4P7BL4.js → chunk-WVCF7KFV.js} +5 -5
- package/dist/chunk-XA4SWA2Z.js +591 -0
- package/dist/chunk-XA4SWA2Z.js.map +1 -0
- package/dist/{chunk-LVA6XJGR.js → chunk-YOVUXONB.js} +9 -43
- package/dist/chunk-YOVUXONB.js.map +1 -0
- package/dist/chunk-YSQ76LWG.js +8734 -0
- package/dist/chunk-YSQ76LWG.js.map +1 -0
- package/dist/{chunk-Z6KROWH4.js → chunk-ZQZHDYHQ.js} +7 -7
- package/dist/commands/build/marketplace.js +8 -8
- package/dist/commands/build/plugins.js +8 -8
- package/dist/commands/compile.js +14 -14
- package/dist/commands/doctor.js +13 -13
- package/dist/commands/edit.js +45 -45
- package/dist/commands/eject.js +11 -11
- package/dist/commands/init.js +37 -37
- package/dist/commands/list.js +9 -9
- package/dist/commands/new/marketplace.js +8 -9
- package/dist/commands/new/marketplace.js.map +1 -1
- package/dist/commands/search.js +11 -11
- package/dist/commands/share.js +11 -10
- package/dist/commands/share.js.map +1 -1
- package/dist/commands/uninstall.js +12 -12
- package/dist/commands/update.js +7 -7
- package/dist/components/common/removal-plan-confirm.js +2 -2
- package/dist/components/common/select-list.js +2 -2
- package/dist/components/wizard/category-grid.js +4 -4
- package/dist/components/wizard/checkbox-grid.js +4 -4
- package/dist/components/wizard/domain-selection.js +10 -10
- package/dist/components/wizard/run-wizard-session.js +27 -27
- package/dist/components/wizard/scroll-affordance.js +2 -2
- package/dist/components/wizard/skill-agent-summary.js +6 -6
- package/dist/components/wizard/source-grid.js +5 -5
- package/dist/components/wizard/stack-selection.js +8 -8
- package/dist/components/wizard/step-agents.js +9 -9
- package/dist/components/wizard/step-build.js +8 -8
- package/dist/components/wizard/step-confirm.js +10 -10
- package/dist/components/wizard/step-sources.js +9 -9
- package/dist/components/wizard/step-stack.js +9 -9
- package/dist/components/wizard/summary-panel.js +9 -9
- package/dist/components/wizard/toast.js +2 -2
- package/dist/components/wizard/wizard-layout.js +13 -13
- package/dist/components/wizard/wizard-tabs.js +2 -2
- package/dist/components/wizard/wizard.js +26 -26
- package/dist/config-exports.js +1 -1
- package/dist/hooks/init.js +37 -37
- package/dist/load-agent-defs-LDSND43G.js +13 -0
- package/dist/recompile-project-agents-GQLODH24.js +17 -0
- package/dist/{source-loader-CC6ZWKTI.js → source-loader-TSF5VS6V.js} +5 -5
- package/dist/src/agents/_templates/methodologies/anti-over-engineering.liquid +14 -0
- package/dist/src/agents/_templates/methodologies/context-management.liquid +7 -154
- package/dist/src/agents/_templates/methodologies/investigation-requirements.liquid +12 -0
- package/dist/src/agents/_templates/methodologies/success-criteria.liquid +10 -0
- package/dist/stores/wizard-store.js +5 -5
- package/package.json +9 -4
- package/src/agents/_templates/methodologies/anti-over-engineering.liquid +14 -0
- package/src/agents/_templates/methodologies/context-management.liquid +7 -154
- package/src/agents/_templates/methodologies/investigation-requirements.liquid +12 -0
- package/src/agents/_templates/methodologies/success-criteria.liquid +10 -0
- package/dist/chunk-5KB4I5J7.js +0 -262
- package/dist/chunk-5KB4I5J7.js.map +0 -1
- package/dist/chunk-5YOSLSQJ.js.map +0 -1
- package/dist/chunk-62XKTOUI.js.map +0 -1
- package/dist/chunk-7Z4N4JWQ.js.map +0 -1
- package/dist/chunk-BQJVHD6Y.js.map +0 -1
- package/dist/chunk-LVA6XJGR.js.map +0 -1
- package/dist/chunk-NS5COBTT.js +0 -254
- package/dist/chunk-NS5COBTT.js.map +0 -1
- package/dist/chunk-V625APR6.js.map +0 -1
- package/dist/chunk-VZRO7RYT.js.map +0 -1
- package/dist/chunk-YAHTF4NO.js.map +0 -1
- package/dist/chunk-YVQSDBTK.js +0 -169
- package/dist/chunk-YVQSDBTK.js.map +0 -1
- package/dist/load-agent-defs-2H42B2OO.js +0 -13
- package/dist/recompile-project-agents-QIAMBCM4.js +0 -17
- /package/dist/{chunk-PEHYVSJG.js.map → chunk-264XDRU7.js.map} +0 -0
- /package/dist/{chunk-WVKGO3Y5.js.map → chunk-2MPXMJ2O.js.map} +0 -0
- /package/dist/{chunk-IO2DPRDS.js.map → chunk-3H42U56X.js.map} +0 -0
- /package/dist/{chunk-FBRLHNUT.js.map → chunk-3M75HVIM.js.map} +0 -0
- /package/dist/{chunk-YKRPWZ3G.js.map → chunk-3TM4FHTG.js.map} +0 -0
- /package/dist/{chunk-4APXK7ZY.js.map → chunk-5MML3K36.js.map} +0 -0
- /package/dist/{chunk-F35G42TF.js.map → chunk-6PVWDTEM.js.map} +0 -0
- /package/dist/{chunk-VCUXNKOY.js.map → chunk-A2NA377T.js.map} +0 -0
- /package/dist/{chunk-4RYWFQK7.js.map → chunk-ADDYIMWN.js.map} +0 -0
- /package/dist/{chunk-4VMLCWLD.js.map → chunk-AO6DXJUK.js.map} +0 -0
- /package/dist/{chunk-G7TYOPON.js.map → chunk-B3YSTZZC.js.map} +0 -0
- /package/dist/{chunk-THLQS2AW.js.map → chunk-B7YTQVAF.js.map} +0 -0
- /package/dist/{chunk-ITEJARWI.js.map → chunk-BRHU6J3C.js.map} +0 -0
- /package/dist/{chunk-AU5FS3QK.js.map → chunk-DGXW2ZFY.js.map} +0 -0
- /package/dist/{chunk-LSSGS2QS.js.map → chunk-DHRW3MDM.js.map} +0 -0
- /package/dist/{chunk-OJIQOVWB.js.map → chunk-DTCUZL7S.js.map} +0 -0
- /package/dist/{chunk-SKDTGHCD.js.map → chunk-EEFTUZHZ.js.map} +0 -0
- /package/dist/{chunk-Z6G24ROK.js.map → chunk-EQSMVZGS.js.map} +0 -0
- /package/dist/{chunk-2Q65K6E3.js.map → chunk-EY7Z34Y4.js.map} +0 -0
- /package/dist/{chunk-BNHD2GIB.js.map → chunk-F6LS2BQD.js.map} +0 -0
- /package/dist/{chunk-SITF5EZM.js.map → chunk-HB3YIAFD.js.map} +0 -0
- /package/dist/{chunk-GPZQCLZJ.js.map → chunk-LZPRLHUE.js.map} +0 -0
- /package/dist/{chunk-42PQKBVU.js.map → chunk-ODUACQLV.js.map} +0 -0
- /package/dist/{chunk-MPLWPWL4.js.map → chunk-QKMT6OOP.js.map} +0 -0
- /package/dist/{chunk-WVBJRFFM.js.map → chunk-SX57ZIGM.js.map} +0 -0
- /package/dist/{chunk-4VVKVOOP.js.map → chunk-UMYEY6BA.js.map} +0 -0
- /package/dist/{chunk-X5PLVOJS.js.map → chunk-W2RXRWDB.js.map} +0 -0
- /package/dist/{chunk-JV4P7BL4.js.map → chunk-WVCF7KFV.js.map} +0 -0
- /package/dist/{chunk-Z6KROWH4.js.map → chunk-ZQZHDYHQ.js.map} +0 -0
- /package/dist/{load-agent-defs-2H42B2OO.js.map → load-agent-defs-LDSND43G.js.map} +0 -0
- /package/dist/{recompile-project-agents-QIAMBCM4.js.map → recompile-project-agents-GQLODH24.js.map} +0 -0
- /package/dist/{source-loader-CC6ZWKTI.js.map → source-loader-TSF5VS6V.js.map} +0 -0
package/package.json
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agents-inc",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.161.0",
|
|
4
4
|
"description": "CLI for managing Agents Inc. skills, stacks, and agents for Claude Code",
|
|
5
5
|
"//generate": "The write path for all three generators, in dependency order: generate:types reads the skills marketplace and writes src/cli/types/generated/, then generate:schemas copies SKILL_SLUGS and CATEGORIES out of it into metadata.schema.json's enums, then generate:matrix vendors the same directory into packages/matrix. A marketplace change drifts all three, so every caller runs all three — .github/workflows/regenerate-catalog.yml spells the sequence out step by step and could call this instead. It replaces the write path only: the :check variants stay separate because CI deliberately runs different subsets of them in different jobs.",
|
|
6
6
|
"//no-shared-vitest-config": "A three-project suite — unit, integration and commands, each with its own include and the retry that separates them — behind one root config that also carries vitest.setup.ts, disableConsoleIntercept for @oclif/test and ink-testing-library, and its own timeouts. @workspace/vitest-config is a single-project node config that turns globals off, which this suite needs on, so merging it in would contradict as much as it contributed. e2e/vitest.config.ts stands under the same decision. Read by scripts/check-shared-vitest-config.ts in packages/cli.",
|
|
7
|
-
"//pretest": "The unit suite executes dist/, not just src/: runCliCommand calls oclif's run() with this package as its root, and oclif resolves commands from `oclif.commands.target` — ./dist/commands. So a green `vitest run` is a statement about the last build. It stayed green through CLI-452 with src/cli/commands/import/skill.ts already deleted, eleven specs passing against the orphaned bundle. This hook mirrors pretest:e2e and closes that for `bun run test` and `npm test`. It does NOT close the direct `npx vitest run <file>` this repository's docs are full of — no script hook can — which is why vitest.config.ts also carries a globalSetup that refuses a stale dist outright. Both, not either: the hook keeps the documented command working with no extra step, the guard means no invocation path can produce a green against a build that no longer matches the source. turbo.json already declares test -> dependsOn build, so on the turbo path this is a second tsup pass; measured at 235ms against a ~25s suite, which is the whole cost of the belt.",
|
|
8
7
|
"//test:smoke": "The second half of e2e/vitest.config.ts, which is now two named projects over one tree: `test:e2e` runs `*.e2e.test.ts` and this runs `*.smoke.test.ts`. Before this pair existed no command ran the smoke files at all — the old single `include` excluded them, vitest has no `--include` flag, and reaching them took a hand-written config nobody had. Three files sat outside every gate for months and rotted exactly as you would expect: a marketplace fixture the Claude CLI has always rejected sat under a spec named 'should add a marketplace from a local directory source' that had never once added one. It DOES run in CI, and deliberately, even though every describe there is `skipIf(!claudeAvailable)` and the runner has no `claude`: what a fully-skipped run still proves is that the files collect, import and resolve their helpers, which is the whole of what rotted. It is not coverage of the Claude CLI on a runner and must not be reported as such — for that, run it on a machine that has the binary, where all 20 assertions execute in about ten seconds.",
|
|
9
8
|
"type": "module",
|
|
10
9
|
"main": "dist/index.js",
|
|
@@ -85,13 +84,15 @@
|
|
|
85
84
|
"lint": "eslint .",
|
|
86
85
|
"typecheck": "tsc --noEmit && tsc -p tsconfig.scripts.json --noEmit && tsc -p e2e/tsconfig.json --noEmit && echo '✓ No TypeScript errors'",
|
|
87
86
|
"typecheck:scripts": "tsc -p tsconfig.scripts.json --noEmit",
|
|
88
|
-
"generate": "bun run generate:types && bun run generate:schemas && bun run generate:matrix",
|
|
87
|
+
"generate": "bun run generate:types && bun run generate:schemas && bun run generate:matrix && bun run generate:compile",
|
|
89
88
|
"generate:types": "bun scripts/run-generate-source-types.ts",
|
|
90
89
|
"generate:types:check": "bun scripts/run-generate-source-types.ts --check",
|
|
91
90
|
"generate:schemas": "bun scripts/run-generate-json-schemas.ts",
|
|
92
91
|
"generate:schemas:check": "bun scripts/run-generate-json-schemas.ts --check",
|
|
93
92
|
"generate:matrix": "bun scripts/run-generate-matrix-package.ts",
|
|
94
93
|
"generate:matrix:check": "bun scripts/run-generate-matrix-package.ts --check",
|
|
94
|
+
"generate:compile": "bun scripts/run-generate-compile-package.ts",
|
|
95
|
+
"generate:compile:check": "bun scripts/run-generate-compile-package.ts --check",
|
|
95
96
|
"prepublishOnly": "bun run format:check && bun run lint && bun run typecheck && bun run generate:schemas:check && bun run generate:types:check && bun run build && bun run test"
|
|
96
97
|
},
|
|
97
98
|
"repository": {
|
|
@@ -128,10 +129,13 @@
|
|
|
128
129
|
"zod": "^4.4.3",
|
|
129
130
|
"zustand": "^5.0.14"
|
|
130
131
|
},
|
|
131
|
-
"//devDependencies": "@workspace/matrix
|
|
132
|
+
"//devDependencies": "@workspace/matrix, @workspace/compile and @workspace/api are private and never installed by a consumer, so all three are devDependencies and tsup bundles them (see `noExternal`). matrix is the one home of the seed wire contract, which src/cli/lib/seed/ used to hand-vendor; compile is the one home of the config-pair and compiled-agent renderers, which the editor's output preview draws with; api is the one home of the typed client both front doors reach the worker through, which src/cli/lib/seed/fetch-seed.ts used to hand-write a fetch for. api pulls `hono/client` in with it, and `hono` is deliberately NOT a dependency here: tsup externalises exactly what `dependencies` names, so leaving it out is what inlines it into the bundle rather than adding a runtime install to a CLI that makes one GET. The cost of that was measured before it was accepted — `find dist -name '*.js' -not -name '*.map' | xargs du -cb | tail -1` is the number. @workspace/api-mocks and msw are a different case and are named in neither `noExternal` nor this rule: nothing under src/cli/ imports them, so they reach no bundle at all — they are the one description of the worker this suite's network mocks are resolved from, and the editor's suites read the same one.",
|
|
132
133
|
"devDependencies": {
|
|
133
134
|
"@eslint/js": "^10",
|
|
134
135
|
"@workspace/eslint-config": "workspace:*",
|
|
136
|
+
"@workspace/api": "workspace:*",
|
|
137
|
+
"@workspace/api-mocks": "workspace:*",
|
|
138
|
+
"@workspace/compile": "workspace:*",
|
|
135
139
|
"@workspace/matrix": "workspace:*",
|
|
136
140
|
"@workspace/typescript-config": "workspace:*",
|
|
137
141
|
"@lydell/node-pty": "^1.2.0-beta.3",
|
|
@@ -145,6 +149,7 @@
|
|
|
145
149
|
"eslint-config-prettier": "^10",
|
|
146
150
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
147
151
|
"ink-testing-library": "^4.0.0",
|
|
152
|
+
"msw": "^2",
|
|
148
153
|
"prettier": "^3.8.3",
|
|
149
154
|
"tree-kill": "^1.2.2",
|
|
150
155
|
"tsup": "^8.0.0",
|
|
@@ -87,6 +87,20 @@ Analyze thoroughly and examine similar areas of the codebase to ensure your prop
|
|
|
87
87
|
- **(Do not change anything not explicitly mentioned in the specification)**
|
|
88
88
|
- This prevents 70%+ of unwanted refactoring
|
|
89
89
|
|
|
90
|
+
### The Class Is the Unit of Repair
|
|
91
|
+
|
|
92
|
+
**A defect found in one place is usually one instance of a class.** The same mistake tends to be repeated wherever the same pattern was written, so the file you found it in is where it surfaced rather than the extent of it. A fix scoped to that one file leaves working siblings of a defect you have already diagnosed.
|
|
93
|
+
|
|
94
|
+
Before calling a fix done:
|
|
95
|
+
|
|
96
|
+
- **Census the class** - Run the search that would find its siblings, keyed on the shape of the mistake rather than the name of the file
|
|
97
|
+
- **Read the whole result** - The first screen is a sample, not an answer
|
|
98
|
+
- **Fix them, or name them** - Repair the ones you safely can and list the rest with their locations
|
|
99
|
+
|
|
100
|
+
**Silence reads as "there were none."** A report that mentions no siblings tells its reader the class was checked and came back empty, so state the search you ran and what it returned - including when it returned nothing.
|
|
101
|
+
|
|
102
|
+
**This does not widen your scope.** The class is what is broken and the instance is only where it was found, so repairing the siblings of one diagnosed defect finishes the job rather than adding to it. Adding an abstraction, a helper, or a capability nobody asked for is still out of scope, and so is a different defect you happened to notice along the way.
|
|
103
|
+
|
|
90
104
|
</anti_over_engineering>
|
|
91
105
|
|
|
92
106
|
---
|
|
@@ -1,162 +1,15 @@
|
|
|
1
1
|
<context_management>
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## What Survives the Session
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Your report is the only part of this work that outlives it. Whatever you learned and did not write down is lost the moment the task ends, and the next person to touch this code pays for it a second time.
|
|
6
6
|
|
|
7
|
-
**
|
|
7
|
+
**Carry three things out of every task:**
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
.
|
|
11
|
-
|
|
12
|
-
decisions.md # Architectural decisions and rationale
|
|
13
|
-
insights.md # Lessons learned, gotchas discovered
|
|
14
|
-
tests.json # Structured test tracking (NEVER remove tests)
|
|
15
|
-
patterns.md # Codebase conventions being followed
|
|
16
|
-
```
|
|
9
|
+
- **Decisions, with the reason** - Where more than one route was open, name the one you took and why. A choice with no recorded reason is indistinguishable from an accident, so the next person to reach it will either re-argue it or quietly undo it.
|
|
10
|
+
- **Gotchas you hit** - Non-obvious behaviour, a constraint that only appears at runtime, an approach that looked correct and was not. This is the part nobody can reconstruct by reading the finished code.
|
|
11
|
+
- **Work you deliberately left** - What you did not do, and what stopped you. This is not the same as a criterion you failed to meet: it is the work no criterion named, which stays invisible unless you say it out loud.
|
|
17
12
|
|
|
18
|
-
**
|
|
19
|
-
|
|
20
|
-
### At Session Start
|
|
21
|
-
|
|
22
|
-
```xml
|
|
23
|
-
<session_start>
|
|
24
|
-
1. Call pwd to verify working directory
|
|
25
|
-
2. Read all context files in .claude/ directory:
|
|
26
|
-
- progress.md: What's been accomplished, what's next
|
|
27
|
-
- decisions.md: Past architectural choices and why
|
|
28
|
-
- insights.md: Important learnings from previous sessions
|
|
29
|
-
- tests.json: Test status (never modify test data)
|
|
30
|
-
3. Review git logs for recent changes
|
|
31
|
-
4. Understand current state from filesystem, not just chat history
|
|
32
|
-
</session_start>
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
### During Work
|
|
36
|
-
|
|
37
|
-
```xml
|
|
38
|
-
<during_work>
|
|
39
|
-
After each significant change or decision:
|
|
40
|
-
|
|
41
|
-
1. Update progress.md:
|
|
42
|
-
- What you just accomplished
|
|
43
|
-
- Current status of the task
|
|
44
|
-
- Next steps to take
|
|
45
|
-
- Any blockers or questions
|
|
46
|
-
|
|
47
|
-
2. Log decisions in decisions.md:
|
|
48
|
-
- What choice was made
|
|
49
|
-
- Why (rationale)
|
|
50
|
-
- Alternatives considered
|
|
51
|
-
- Implications for future work
|
|
52
|
-
|
|
53
|
-
3. Document insights in insights.md:
|
|
54
|
-
- Gotchas discovered
|
|
55
|
-
- Patterns that work well
|
|
56
|
-
- Things to avoid
|
|
57
|
-
- Non-obvious behaviors
|
|
58
|
-
|
|
59
|
-
Format:
|
|
60
|
-
## [Date] - [Brief Title]
|
|
61
|
-
|
|
62
|
-
**Decision/Insight:**
|
|
63
|
-
[What happened or what you learned]
|
|
64
|
-
|
|
65
|
-
**Context:**
|
|
66
|
-
[Why this matters]
|
|
67
|
-
|
|
68
|
-
**Impact:**
|
|
69
|
-
[What this means going forward]
|
|
70
|
-
</during_work>
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### At Session End
|
|
74
|
-
|
|
75
|
-
```xml
|
|
76
|
-
<session_end>
|
|
77
|
-
Before finishing, ensure:
|
|
78
|
-
|
|
79
|
-
1. progress.md reflects current state accurately
|
|
80
|
-
2. All decisions are logged with rationale
|
|
81
|
-
3. Any discoveries are documented in insights.md
|
|
82
|
-
4. tests.json is updated (never remove test entries)
|
|
83
|
-
5. Git commits have descriptive messages
|
|
84
|
-
|
|
85
|
-
Leave the project in a state where the next session can start immediately without context loss.
|
|
86
|
-
</session_end>
|
|
87
|
-
```
|
|
13
|
+
**Write these into your report, not into files nobody asked for.** Notes, logs and tracking files the task did not request leave clutter in someone's repository and a maintenance burden they never agreed to.
|
|
88
14
|
|
|
89
15
|
</context_management>
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
<context_overload_prevention>
|
|
94
|
-
|
|
95
|
-
### Context Overload Prevention
|
|
96
|
-
|
|
97
|
-
**CRITICAL:** Don't try to load everything into context at once.
|
|
98
|
-
|
|
99
|
-
**Instead:**
|
|
100
|
-
|
|
101
|
-
- Provide high-level summaries in progress.md
|
|
102
|
-
- Link to specific files for details
|
|
103
|
-
- Use git log for historical changes
|
|
104
|
-
- Request specific files as needed during work
|
|
105
|
-
|
|
106
|
-
**Example progress.md:**
|
|
107
|
-
|
|
108
|
-
```markdown
|
|
109
|
-
# Current Status
|
|
110
|
-
|
|
111
|
-
## Completed
|
|
112
|
-
|
|
113
|
-
- User profile editing UI (see ProfileEditor.tsx)
|
|
114
|
-
- Form validation (see validation.ts)
|
|
115
|
-
- Tests for happy path (see profile-editor.test.ts)
|
|
116
|
-
|
|
117
|
-
## In Progress
|
|
118
|
-
|
|
119
|
-
- Error handling for network failures
|
|
120
|
-
- Next: Add retry logic following pattern in api-client.ts
|
|
121
|
-
- Tests: Need to add network error scenarios
|
|
122
|
-
|
|
123
|
-
## Blocked
|
|
124
|
-
|
|
125
|
-
- Avatar upload feature
|
|
126
|
-
- Reason: Waiting for S3 configuration from DevOps
|
|
127
|
-
- Tracking: Issue #456
|
|
128
|
-
|
|
129
|
-
## Next Session
|
|
130
|
-
|
|
131
|
-
Start with: Implementing retry logic in ProfileEditor.tsx
|
|
132
|
-
Reference: api-client.ts lines 89-112 for the retry pattern
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
This approach lets you maintain continuity without context bloat.
|
|
136
|
-
|
|
137
|
-
</context_overload_prevention>
|
|
138
|
-
|
|
139
|
-
---
|
|
140
|
-
|
|
141
|
-
<fresh_start_approach>
|
|
142
|
-
|
|
143
|
-
## Fresh Start Approach
|
|
144
|
-
|
|
145
|
-
Start each session as if it's the first:
|
|
146
|
-
|
|
147
|
-
1. Read .claude/ context files to understand state
|
|
148
|
-
2. Use git log to see recent changes
|
|
149
|
-
3. Examine filesystem to discover what exists
|
|
150
|
-
4. Run integration tests to verify current behavior
|
|
151
|
-
|
|
152
|
-
This "fresh start" approach works better than trying to maintain long chat history.
|
|
153
|
-
|
|
154
|
-
**Give the RIGHT context, not MORE context.**
|
|
155
|
-
|
|
156
|
-
- For a React component task: Provide that component + immediate dependencies
|
|
157
|
-
- For a store update: Provide the store + related stores
|
|
158
|
-
- For API work: Provide the endpoint + client utilities
|
|
159
|
-
|
|
160
|
-
Don't dump the entire codebase - focus context on what's relevant for the specific task.
|
|
161
|
-
|
|
162
|
-
</fresh_start_approach>
|
|
@@ -46,4 +46,16 @@ Based on standard authentication patterns, I'll implement...
|
|
|
46
46
|
|
|
47
47
|
Always choose the good approach.
|
|
48
48
|
|
|
49
|
+
### The Specification Is a Claim, Not a Fact
|
|
50
|
+
|
|
51
|
+
**Reading the files a specification names is not the same as checking it was right about them.** Every path, symbol, signature, line reference and count in a specification was measured against a codebase that has since moved. Re-derive each one against the code in front of you.
|
|
52
|
+
|
|
53
|
+
When an instruction does not describe what you find:
|
|
54
|
+
|
|
55
|
+
- **Stop on that item** - An instruction whose subject is not there cannot be implemented
|
|
56
|
+
- **Report it with the evidence** - The command you ran and what it returned, not your conclusion about it
|
|
57
|
+
- **Move on to the next item** - Never invent work to make the instruction true, and never quietly widen it into something that is
|
|
58
|
+
|
|
59
|
+
**Corrections are a required field of your report.** List everything in the specification that proved false, and write "Corrections: nothing" explicitly when nothing did - a report that stays silent is indistinguishable from a specification that held.
|
|
60
|
+
|
|
49
61
|
</investigation_requirement>
|
|
@@ -108,4 +108,14 @@ PASS Verified: git diff shows no changes to auth.py or related files
|
|
|
108
108
|
Evidence: `git diff main...feature-branch -- auth.py` returns empty
|
|
109
109
|
```
|
|
110
110
|
|
|
111
|
+
### Name What Would Catch It
|
|
112
|
+
|
|
113
|
+
Verification proves a criterion holds now. Nothing about it says the criterion will still hold after the next change, and those are two different claims.
|
|
114
|
+
|
|
115
|
+
**When your work lands a rule, a convention or an invariant, state what would catch a violation of it** - the test that fails, the type that stops compiling, the check that reports, the build step that breaks. Name the specific one rather than the category.
|
|
116
|
+
|
|
117
|
+
**When nothing would catch it, say so in as many words.** Saying nothing is read as "something covers it," so a gap has to be stated to be visible at all.
|
|
118
|
+
|
|
119
|
+
A rule that nothing mechanically checks will eventually be broken, most often by someone who never read it - and because the rule is written down, everyone will believe the matter is handled. Writing a rule and enforcing a rule are separate pieces of work, and only the first is finished when the sentence exists.
|
|
120
|
+
|
|
111
121
|
</verification_process>
|
package/dist/chunk-5KB4I5J7.js
DELETED
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
// src/cli/consts.ts
|
|
4
|
-
import os from "os";
|
|
5
|
-
import path from "path";
|
|
6
|
-
import { fileURLToPath } from "url";
|
|
7
|
-
var __filename = fileURLToPath(import.meta.url);
|
|
8
|
-
var __dirname = path.dirname(__filename);
|
|
9
|
-
var isInDist = __dirname.includes("/dist");
|
|
10
|
-
var CLI_ROOT = isInDist ? path.resolve(__dirname, "..") : path.resolve(__dirname, "../..");
|
|
11
|
-
var PROJECT_ROOT = CLI_ROOT;
|
|
12
|
-
var CLAUDE_DIR = ".claude";
|
|
13
|
-
var CLAUDE_SRC_DIR = ".claude-src";
|
|
14
|
-
var PLUGINS_SUBDIR = "plugins";
|
|
15
|
-
var PLUGIN_MANIFEST_DIR = ".claude-plugin";
|
|
16
|
-
var PLUGIN_MANIFEST_FILE = "plugin.json";
|
|
17
|
-
var MARKETPLACE_JSON = "marketplace.json";
|
|
18
|
-
var CATALOG_JSON = "catalog.json";
|
|
19
|
-
var GENERATED_AT_BUILD = "build";
|
|
20
|
-
var PLUGINS_DIST_PATH = "dist/plugins";
|
|
21
|
-
function marketplaceManifestPath(dir) {
|
|
22
|
-
return path.join(dir, PLUGIN_MANIFEST_DIR, MARKETPLACE_JSON);
|
|
23
|
-
}
|
|
24
|
-
var DEFAULT_PLUGIN_NAME = "agents-inc";
|
|
25
|
-
function globalInstallRoot() {
|
|
26
|
-
return os.homedir();
|
|
27
|
-
}
|
|
28
|
-
function cacheRoot() {
|
|
29
|
-
return path.join(os.homedir(), ".cache", DEFAULT_PLUGIN_NAME);
|
|
30
|
-
}
|
|
31
|
-
var CLI_INVOKE_COMMAND = "npx agents-inc";
|
|
32
|
-
var EDITOR_URL = "https://agentsinc.sh";
|
|
33
|
-
function editorConfigUrl(id) {
|
|
34
|
-
return `${EDITOR_URL}/?fromId=${encodeURIComponent(id)}`;
|
|
35
|
-
}
|
|
36
|
-
var EDIT_PROJECT_SETUP_FLAG = "project-setup";
|
|
37
|
-
var SKILL_CATEGORIES_PATH = "config/skill-categories.ts";
|
|
38
|
-
var SKILL_RULES_PATH = "config/skill-rules.ts";
|
|
39
|
-
var STACKS_FILE_PATH = "config/stacks.ts";
|
|
40
|
-
var SOURCE_SRC_DIR = "src";
|
|
41
|
-
var SKILLS_DIR_PATH = `${SOURCE_SRC_DIR}/skills`;
|
|
42
|
-
var LOCAL_SKILLS_PATH = ".claude/skills";
|
|
43
|
-
var EJECT_SOURCE = "eject";
|
|
44
|
-
var LOCAL_PSEUDO_CATEGORY = "local";
|
|
45
|
-
var DIRS = {
|
|
46
|
-
agents: "src/agents",
|
|
47
|
-
skills: SKILLS_DIR_PATH,
|
|
48
|
-
stacks: "src/stacks",
|
|
49
|
-
templates: "src/agents/_templates"
|
|
50
|
-
};
|
|
51
|
-
var METADATA_YAML_FILE = "metadata.yaml";
|
|
52
|
-
var STANDARD_FILES = {
|
|
53
|
-
SKILL_MD: "SKILL.md",
|
|
54
|
-
METADATA_YAML: METADATA_YAML_FILE,
|
|
55
|
-
METADATA_JSON: "metadata.json",
|
|
56
|
-
CONFIG_YAML: "config.yaml",
|
|
57
|
-
SKILL_CATEGORIES_TS: "skill-categories.ts",
|
|
58
|
-
SKILL_RULES_TS: "skill-rules.ts",
|
|
59
|
-
AGENT_METADATA_YAML: METADATA_YAML_FILE,
|
|
60
|
-
PLUGIN_JSON: PLUGIN_MANIFEST_FILE,
|
|
61
|
-
CONFIG_TS: "config.ts",
|
|
62
|
-
CONFIG_TYPES_TS: "config-types.ts",
|
|
63
|
-
CLAUDE_MD: "CLAUDE.md",
|
|
64
|
-
README_MD: "README.md",
|
|
65
|
-
REFERENCE_MD: "reference.md",
|
|
66
|
-
IDENTITY_MD: "identity.md",
|
|
67
|
-
PLAYBOOK_MD: "playbook.md",
|
|
68
|
-
OUTPUT_MD: "output.md",
|
|
69
|
-
CRITICAL_REQUIREMENTS_MD: "critical-requirements.md",
|
|
70
|
-
CRITICAL_REMINDERS_MD: "critical-reminders.md",
|
|
71
|
-
SETTINGS_JSON: "settings.json",
|
|
72
|
-
SETTINGS_LOCAL_JSON: "settings.local.json",
|
|
73
|
-
PACKAGE_JSON: "package.json"
|
|
74
|
-
};
|
|
75
|
-
var STANDARD_DIRS = {
|
|
76
|
-
EXAMPLES: "examples",
|
|
77
|
-
SCRIPTS: "scripts",
|
|
78
|
-
SKILLS: "skills",
|
|
79
|
-
AGENTS: "agents",
|
|
80
|
-
/** Legacy per-project template override directory (`.claude/templates`). */
|
|
81
|
-
TEMPLATES: "templates"
|
|
82
|
-
};
|
|
83
|
-
var DEFAULT_VERSION = "1.0.0";
|
|
84
|
-
var SCHEMA_PKG_PREFIX = "https://raw.githubusercontent.com/agents-inc/agents-inc/main/packages/cli/src/schemas";
|
|
85
|
-
var SCHEMA_PATHS = {
|
|
86
|
-
agent: `${SCHEMA_PKG_PREFIX}/agent.schema.json`,
|
|
87
|
-
metadata: `${SCHEMA_PKG_PREFIX}/metadata.schema.json`,
|
|
88
|
-
customMetadata: `${SCHEMA_PKG_PREFIX}/custom-metadata.schema.json`,
|
|
89
|
-
marketplace: `${SCHEMA_PKG_PREFIX}/marketplace.schema.json`,
|
|
90
|
-
projectConfig: `${SCHEMA_PKG_PREFIX}/project-config.schema.json`,
|
|
91
|
-
projectSourceConfig: `${SCHEMA_PKG_PREFIX}/project-source-config.schema.json`,
|
|
92
|
-
stacks: `${SCHEMA_PKG_PREFIX}/stacks.schema.json`
|
|
93
|
-
};
|
|
94
|
-
var YAML_FORMATTING = {
|
|
95
|
-
INDENT: 2,
|
|
96
|
-
LINE_WIDTH: 120,
|
|
97
|
-
/** lineWidth: 0 disables wrapping — used for metadata files */
|
|
98
|
-
LINE_WIDTH_NONE: 0
|
|
99
|
-
};
|
|
100
|
-
var CHECK_GLYPH = "\u2713";
|
|
101
|
-
var EN_DASH_GLYPH = "\u2013";
|
|
102
|
-
var UI_SYMBOLS = {
|
|
103
|
-
CHEVRON: "\u276F",
|
|
104
|
-
CHEVRON_SPACER: " ",
|
|
105
|
-
SELECTED: CHECK_GLYPH,
|
|
106
|
-
UNSELECTED: "\u25CB",
|
|
107
|
-
CURRENT: "\u25CF",
|
|
108
|
-
SKIPPED: EN_DASH_GLYPH,
|
|
109
|
-
DISCOURAGED: "!",
|
|
110
|
-
DISABLED: EN_DASH_GLYPH,
|
|
111
|
-
LOCK: "\u{1F512}",
|
|
112
|
-
EJECT: "\u23CF",
|
|
113
|
-
BULLET: "\u2022",
|
|
114
|
-
SCROLL_UP: "\u25B2",
|
|
115
|
-
SCROLL_DOWN: "\u25BC",
|
|
116
|
-
CHECK: CHECK_GLYPH,
|
|
117
|
-
CROSS: "\u2717",
|
|
118
|
-
/** Removed/pending-removal diff marker (ASCII hyphen). Info panel + Sources tab share it. */
|
|
119
|
-
REMOVED: "-",
|
|
120
|
-
/** Added/newly-selected diff marker (ASCII plus). Info panel + Sources tab share it. */
|
|
121
|
-
ADDED: "+"
|
|
122
|
-
};
|
|
123
|
-
var GITHUB_SOURCE = {
|
|
124
|
-
HTTPS_PREFIX: "https://github.com/",
|
|
125
|
-
GITHUB_PREFIX: "github:",
|
|
126
|
-
GH_PREFIX: "gh:"
|
|
127
|
-
};
|
|
128
|
-
var GLOBAL_CONFIG_NAME = "global";
|
|
129
|
-
var KEBAB_CASE_PATTERN = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/;
|
|
130
|
-
var AUTHOR_HANDLE_PATTERN = /^@[a-z][a-z0-9-]*$/;
|
|
131
|
-
var HASH_PREFIX_LENGTH = 7;
|
|
132
|
-
var CACHE_HASH_LENGTH = 16;
|
|
133
|
-
var CACHE_READABLE_PREFIX_LENGTH = 32;
|
|
134
|
-
var ONE_MB = 1024 * 1024;
|
|
135
|
-
var MAX_MARKETPLACE_FILE_SIZE = 10 * ONE_MB;
|
|
136
|
-
var MAX_PLUGIN_FILE_SIZE = ONE_MB;
|
|
137
|
-
var MAX_CONFIG_FILE_SIZE = ONE_MB;
|
|
138
|
-
var MAX_JSON_NESTING_DEPTH = 10;
|
|
139
|
-
var MAX_MARKETPLACE_PLUGINS = 1e4;
|
|
140
|
-
var SCROLL_VIEWPORT = {
|
|
141
|
-
/** Height of the "N more above" scroll indicator */
|
|
142
|
-
SCROLL_INDICATOR_HEIGHT: 1,
|
|
143
|
-
/** Estimated lines per category name row (including top margin) */
|
|
144
|
-
CATEGORY_NAME_LINES: 2,
|
|
145
|
-
/** Margin between category sections (marginTop on CategorySection) */
|
|
146
|
-
CATEGORY_MARGIN_LINES: 1,
|
|
147
|
-
/** Minimum rows to show at least 1 category before enabling scroll */
|
|
148
|
-
MIN_VIEWPORT_ROWS: 5
|
|
149
|
-
};
|
|
150
|
-
var MIN_TERMINAL_SIZE = {
|
|
151
|
-
COLS: 80,
|
|
152
|
-
ROWS: 20
|
|
153
|
-
};
|
|
154
|
-
var LOGO_MIN_TERMINAL_ROWS = 26;
|
|
155
|
-
var DEFAULT_BRANDING = {
|
|
156
|
-
NAME: "Agents Inc."
|
|
157
|
-
};
|
|
158
|
-
var DEFAULT_PUBLIC_SOURCE_NAME = DEFAULT_PLUGIN_NAME;
|
|
159
|
-
var PUBLIC_CATALOGUE_PACKAGE = "@agents-inc/skills";
|
|
160
|
-
var SOURCE_DISPLAY_NAMES = {
|
|
161
|
-
public: "Public",
|
|
162
|
-
eject: "Eject",
|
|
163
|
-
"agents-inc": "Agents Inc"
|
|
164
|
-
};
|
|
165
|
-
var INSTALL_MODES = ["eject", "plugin"];
|
|
166
|
-
var INSTALL_MODE_CELL_LABELS = {
|
|
167
|
-
eject: "Local",
|
|
168
|
-
plugin: "Plugin"
|
|
169
|
-
};
|
|
170
|
-
function formatSourceDisplayName(source) {
|
|
171
|
-
return SOURCE_DISPLAY_NAMES[source] ?? source;
|
|
172
|
-
}
|
|
173
|
-
var ALL_SKILLS_EJECTED_LABEL = "All skills ejected";
|
|
174
|
-
var CLI_COLORS = {
|
|
175
|
-
PRIMARY: "#99FFFF",
|
|
176
|
-
SUCCESS: "#90EE90",
|
|
177
|
-
ERROR: "#DC343B",
|
|
178
|
-
WARNING: "#E6A817",
|
|
179
|
-
INFO: "#3B82F6",
|
|
180
|
-
NEUTRAL: "#888888",
|
|
181
|
-
FOCUS: "#87CEFA",
|
|
182
|
-
UNFOCUSED: "#FFFFFF",
|
|
183
|
-
WHITE: "#FFFFFF",
|
|
184
|
-
BLACK: "#000000",
|
|
185
|
-
DIM: "#666666",
|
|
186
|
-
GRAY_1: "#ddd",
|
|
187
|
-
LABEL_BG: "#383838",
|
|
188
|
-
TOAST_BG: "#EEEEEE",
|
|
189
|
-
TOAST_FG: "#000000",
|
|
190
|
-
HOVER_BG: "#333333"
|
|
191
|
-
};
|
|
192
|
-
var DEFAULT_SCRATCH_DOMAINS = ["web", "api", "mobile"];
|
|
193
|
-
var FALLBACK_DOMAIN = "web";
|
|
194
|
-
var ASCII_LOGO = ` \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557
|
|
195
|
-
\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D
|
|
196
|
-
\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551
|
|
197
|
-
\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551 \u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551
|
|
198
|
-
\u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557
|
|
199
|
-
\u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D`;
|
|
200
|
-
|
|
201
|
-
export {
|
|
202
|
-
PROJECT_ROOT,
|
|
203
|
-
CLAUDE_DIR,
|
|
204
|
-
CLAUDE_SRC_DIR,
|
|
205
|
-
PLUGINS_SUBDIR,
|
|
206
|
-
PLUGIN_MANIFEST_DIR,
|
|
207
|
-
PLUGIN_MANIFEST_FILE,
|
|
208
|
-
MARKETPLACE_JSON,
|
|
209
|
-
CATALOG_JSON,
|
|
210
|
-
GENERATED_AT_BUILD,
|
|
211
|
-
PLUGINS_DIST_PATH,
|
|
212
|
-
marketplaceManifestPath,
|
|
213
|
-
DEFAULT_PLUGIN_NAME,
|
|
214
|
-
globalInstallRoot,
|
|
215
|
-
cacheRoot,
|
|
216
|
-
CLI_INVOKE_COMMAND,
|
|
217
|
-
EDITOR_URL,
|
|
218
|
-
editorConfigUrl,
|
|
219
|
-
EDIT_PROJECT_SETUP_FLAG,
|
|
220
|
-
SKILL_CATEGORIES_PATH,
|
|
221
|
-
SKILL_RULES_PATH,
|
|
222
|
-
STACKS_FILE_PATH,
|
|
223
|
-
SOURCE_SRC_DIR,
|
|
224
|
-
SKILLS_DIR_PATH,
|
|
225
|
-
LOCAL_SKILLS_PATH,
|
|
226
|
-
EJECT_SOURCE,
|
|
227
|
-
LOCAL_PSEUDO_CATEGORY,
|
|
228
|
-
DIRS,
|
|
229
|
-
STANDARD_FILES,
|
|
230
|
-
STANDARD_DIRS,
|
|
231
|
-
DEFAULT_VERSION,
|
|
232
|
-
SCHEMA_PATHS,
|
|
233
|
-
YAML_FORMATTING,
|
|
234
|
-
UI_SYMBOLS,
|
|
235
|
-
GITHUB_SOURCE,
|
|
236
|
-
GLOBAL_CONFIG_NAME,
|
|
237
|
-
KEBAB_CASE_PATTERN,
|
|
238
|
-
AUTHOR_HANDLE_PATTERN,
|
|
239
|
-
HASH_PREFIX_LENGTH,
|
|
240
|
-
CACHE_HASH_LENGTH,
|
|
241
|
-
CACHE_READABLE_PREFIX_LENGTH,
|
|
242
|
-
MAX_MARKETPLACE_FILE_SIZE,
|
|
243
|
-
MAX_PLUGIN_FILE_SIZE,
|
|
244
|
-
MAX_CONFIG_FILE_SIZE,
|
|
245
|
-
MAX_JSON_NESTING_DEPTH,
|
|
246
|
-
MAX_MARKETPLACE_PLUGINS,
|
|
247
|
-
SCROLL_VIEWPORT,
|
|
248
|
-
MIN_TERMINAL_SIZE,
|
|
249
|
-
LOGO_MIN_TERMINAL_ROWS,
|
|
250
|
-
DEFAULT_BRANDING,
|
|
251
|
-
DEFAULT_PUBLIC_SOURCE_NAME,
|
|
252
|
-
PUBLIC_CATALOGUE_PACKAGE,
|
|
253
|
-
INSTALL_MODES,
|
|
254
|
-
INSTALL_MODE_CELL_LABELS,
|
|
255
|
-
formatSourceDisplayName,
|
|
256
|
-
ALL_SKILLS_EJECTED_LABEL,
|
|
257
|
-
CLI_COLORS,
|
|
258
|
-
DEFAULT_SCRATCH_DOMAINS,
|
|
259
|
-
FALLBACK_DOMAIN,
|
|
260
|
-
ASCII_LOGO
|
|
261
|
-
};
|
|
262
|
-
//# sourceMappingURL=chunk-5KB4I5J7.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/consts.ts"],"sourcesContent":["import os from \"os\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport type { Domain, InstallMode } from \"./types/index.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\n// After tsup build, dist/ is flat, so we go up one level from dist/ to get CLI root\n// In development (src/cli/consts.ts), we go up two levels\nconst isInDist = __dirname.includes(\"/dist\");\nconst CLI_ROOT = isInDist ? path.resolve(__dirname, \"..\") : path.resolve(__dirname, \"../..\");\nexport const PROJECT_ROOT = CLI_ROOT;\n\nexport const CLAUDE_DIR = \".claude\";\nexport const CLAUDE_SRC_DIR = \".claude-src\";\nexport const PLUGINS_SUBDIR = \"plugins\";\nexport const PLUGIN_MANIFEST_DIR = \".claude-plugin\";\nexport const PLUGIN_MANIFEST_FILE = \"plugin.json\";\nexport const MARKETPLACE_JSON = \"marketplace.json\";\n\n/**\n * The catalogue a marketplace publishes beside its manifest — its whole matrix\n * as JSON, in the shape `@workspace/matrix`'s `matrixSchema` describes.\n *\n * `marketplace.json` lists what a marketplace installs; this lists what it\n * OFFERS — every skill, category and stack, with the relationships resolved. The\n * editor fetches it directly and parses it with that schema, so nothing between\n * the two transforms it.\n */\nexport const CATALOG_JSON = \"catalog.json\";\n\n/**\n * What `generatedAt` says on a matrix that was WRITTEN to disk rather than built\n * in memory — a fixed word where the live matrix carries an ISO timestamp.\n *\n * A moment recorded in a committed artefact makes every regeneration a diff even\n * when nothing about the matrix moved, which costs the vendored\n * `types/generated/matrix.ts` a pull request of pure noise and costs\n * {@link CATALOG_JSON} its cache: the editor fetches the catalogue directly, and\n * a file whose bytes always change can never answer a conditional request.\n * Nothing reads the field back, so there is nothing a real timestamp would buy.\n *\n * Both emitters — `scripts/generate-source-types.ts` and `build marketplace` —\n * stamp this, and they are the only two places a matrix becomes a file.\n */\nexport const GENERATED_AT_BUILD = \"build\";\n\n/** Compiled plugin output directory, relative to a marketplace root */\nexport const PLUGINS_DIST_PATH = \"dist/plugins\";\n\n/** Path to the marketplace manifest inside a marketplace/source root. */\nexport function marketplaceManifestPath(dir: string): string {\n return path.join(dir, PLUGIN_MANIFEST_DIR, MARKETPLACE_JSON);\n}\nexport const DEFAULT_PLUGIN_NAME = \"agents-inc\";\n\n/**\n * Home directory used as the root for global installations, read when it is asked for.\n *\n * A `const` here froze whichever home was in force when this module was first imported, and the\n * damage was invisible: `runCliCommand` drives oclif through `dist/`, a SECOND module graph first\n * imported by whichever spec runs a command first, so the value settled on that spec's fake home\n * and every later spec in the file wrote under a directory its own `afterEach` had removed — the\n * writes succeeding, into the wrong tree. In the `src` graph it was worse still: `consts.ts` is\n * imported while vitest collects, before any hook has redirected the home, so the constant held\n * the DEVELOPER'S own home in every unit test that read it.\n *\n * Every other home-dir reader in the codebase already calls `os.homedir()` at call time —\n * `installBaseDir`, `isHomeDirectory`, `globalPairPaths` — each with its own note saying why.\n * This is that rule arriving at the constants file, and `home-dir-read-at-call-time.test.ts`\n * refuses the frozen shape from coming back.\n */\nexport function globalInstallRoot(): string {\n return os.homedir();\n}\n\n/** Root of the CLI's own cache, read at call time for the reason {@link globalInstallRoot} carries. */\nexport function cacheRoot(): string {\n return path.join(os.homedir(), \".cache\", DEFAULT_PLUGIN_NAME);\n}\n\n/**\n * Promoted invocation prefix shown in user-facing messages (e.g. \"Run '<CLI_INVOKE_COMMAND> init'\").\n *\n * `bin` in package.json registers BOTH names — `agents-inc` (primary, matching this constant and\n * the package name) and `agentsinc` (kept so existing global installs keep working). A global\n * install therefore answers to either spelling.\n *\n * `agents-inc` rather than `agentsinc` because it is the published package name, so `npx\n * agents-inc` resolves with nothing installed, and it is what agentsinc.sh hands people when they\n * copy an install command.\n *\n * CONVENTION: every user-facing instruction in this repo — messages, docs, code comments, agent\n * playbooks — writes commands in this `npx agents-inc <cmd>` form. Prose that merely names a\n * command (\"the `agents-inc list` table\") does not.\n */\nexport const CLI_INVOKE_COMMAND = \"npx agents-inc\";\n\n/**\n * The editor — the web half of the product, where a configuration is built without the wizard\n * and handed to `init --from <id>`. `agentsinc.sh` is the editor Worker's custom domain\n * (`apps/editor/wrangler.jsonc`); the config store it posts to is the sibling\n * `api.agentsinc.sh`, spelled once in `lib/seed/fetch-seed.ts` because that one is\n * overridable for tests and this one is not.\n */\nexport const EDITOR_URL = \"https://agentsinc.sh\";\n\n/**\n * Where a shared configuration opens in the editor — the form the editor's own Share button\n * copies, so a link the CLI prints and one the web app hands out are the same link.\n *\n * Exported before it had a second caller, and now it has two: `share` prints it, and\n * `edit --ui` hands it to a browser. Two surfaces each building their own query string is\n * exactly how one of them ends up pointing at a page the other never opens.\n */\nexport function editorConfigUrl(id: string): string {\n return `${EDITOR_URL}/?fromId=${encodeURIComponent(id)}`;\n}\n\n/**\n * Internal `edit` flag marking the invocation as the project-setup half of a `cc init`\n * that routed through the dashboard. Not part of the documented CLI surface (declared\n * `hidden`): `init` is the only caller, and it passes the flag so `edit` can tell\n * \"set this project up\" apart from a bare inspection.\n */\nexport const EDIT_PROJECT_SETUP_FLAG = \"project-setup\";\n\nexport const SKILL_CATEGORIES_PATH = \"config/skill-categories.ts\";\nexport const SKILL_RULES_PATH = \"config/skill-rules.ts\";\nexport const STACKS_FILE_PATH = \"config/stacks.ts\";\n/** Source root directory inside a marketplace/source repo (holds skills/, agents/, etc.). */\nexport const SOURCE_SRC_DIR = \"src\";\nexport const SKILLS_DIR_PATH = `${SOURCE_SRC_DIR}/skills`;\nexport const LOCAL_SKILLS_PATH = \".claude/skills\";\n\n/** Synthetic source name for skills copied into the project (ejected) rather than installed as plugins. */\nexport const EJECT_SOURCE = \"eject\";\n\n/** Pseudo-category assigned to local skills — not a `Category` union member; category traversals skip it. */\nexport const LOCAL_PSEUDO_CATEGORY = \"local\";\n\nexport const DIRS = {\n agents: \"src/agents\",\n skills: SKILLS_DIR_PATH,\n stacks: \"src/stacks\",\n templates: \"src/agents/_templates\",\n} as const;\n\n/** Single source for the metadata file name shared by skill and agent metadata. */\nconst METADATA_YAML_FILE = \"metadata.yaml\";\n\nexport const STANDARD_FILES = {\n SKILL_MD: \"SKILL.md\",\n METADATA_YAML: METADATA_YAML_FILE,\n METADATA_JSON: \"metadata.json\",\n CONFIG_YAML: \"config.yaml\",\n SKILL_CATEGORIES_TS: \"skill-categories.ts\",\n SKILL_RULES_TS: \"skill-rules.ts\",\n AGENT_METADATA_YAML: METADATA_YAML_FILE,\n PLUGIN_JSON: PLUGIN_MANIFEST_FILE,\n CONFIG_TS: \"config.ts\",\n CONFIG_TYPES_TS: \"config-types.ts\",\n CLAUDE_MD: \"CLAUDE.md\",\n README_MD: \"README.md\",\n REFERENCE_MD: \"reference.md\",\n IDENTITY_MD: \"identity.md\",\n PLAYBOOK_MD: \"playbook.md\",\n OUTPUT_MD: \"output.md\",\n CRITICAL_REQUIREMENTS_MD: \"critical-requirements.md\",\n CRITICAL_REMINDERS_MD: \"critical-reminders.md\",\n SETTINGS_JSON: \"settings.json\",\n SETTINGS_LOCAL_JSON: \"settings.local.json\",\n PACKAGE_JSON: \"package.json\",\n} as const;\n\nexport const STANDARD_DIRS = {\n EXAMPLES: \"examples\",\n SCRIPTS: \"scripts\",\n SKILLS: \"skills\",\n AGENTS: \"agents\",\n /** Legacy per-project template override directory (`.claude/templates`). */\n TEMPLATES: \"templates\",\n} as const;\n\nexport const DEFAULT_VERSION = \"1.0.0\";\n\n// \"0.0.0\" indicates no version was explicitly set\nexport const DEFAULT_DISPLAY_VERSION = \"0.0.0\";\n\n// JSON Schema URLs for yaml-language-server $schema comments.\n// Uses raw.githubusercontent.com so schemas resolve without requiring the CLI as a dependency.\n// The prefix encodes two things that have each moved once: the repository name (renamed to\n// agents-inc/agents-inc on 2026-08-04, when it stopped being only the CLI) and this package's\n// location inside it (packages/cli, since the monorepo merge). If either moves again this must\n// move with it, or every generated $schema comment 404s. GitHub redirects the old forms — files\n// written before each move still resolve, verified two renames deep — but a redirect is a\n// courtesy, so what we emit should be the current address rather than rely on one.\nconst SCHEMA_PKG_PREFIX =\n \"https://raw.githubusercontent.com/agents-inc/agents-inc/main/packages/cli/src/schemas\";\n\nexport const SCHEMA_PATHS = {\n agent: `${SCHEMA_PKG_PREFIX}/agent.schema.json`,\n metadata: `${SCHEMA_PKG_PREFIX}/metadata.schema.json`,\n customMetadata: `${SCHEMA_PKG_PREFIX}/custom-metadata.schema.json`,\n marketplace: `${SCHEMA_PKG_PREFIX}/marketplace.schema.json`,\n projectConfig: `${SCHEMA_PKG_PREFIX}/project-config.schema.json`,\n projectSourceConfig: `${SCHEMA_PKG_PREFIX}/project-source-config.schema.json`,\n stacks: `${SCHEMA_PKG_PREFIX}/stacks.schema.json`,\n} as const;\n\nexport const YAML_FORMATTING = {\n INDENT: 2,\n LINE_WIDTH: 120,\n /** lineWidth: 0 disables wrapping — used for metadata files */\n LINE_WIDTH_NONE: 0,\n} as const;\n\n// Shared glyphs: SELECTED/CHECK render the same checkmark; SKIPPED/DISABLED the\n// same en-dash. Both keys are kept so call sites express intent, but the value\n// has a single source.\nconst CHECK_GLYPH = \"\\u2713\";\nconst EN_DASH_GLYPH = \"\\u2013\";\n\nexport const UI_SYMBOLS = {\n CHEVRON: \"\\u276F\",\n CHEVRON_SPACER: \" \",\n SELECTED: CHECK_GLYPH,\n UNSELECTED: \"\\u25CB\",\n CURRENT: \"\\u25CF\",\n SKIPPED: EN_DASH_GLYPH,\n DISCOURAGED: \"!\",\n DISABLED: EN_DASH_GLYPH,\n LOCK: \"\\uD83D\\uDD12\",\n EJECT: \"\\u23CF\",\n BULLET: \"\\u2022\",\n SCROLL_UP: \"\\u25B2\",\n SCROLL_DOWN: \"\\u25BC\",\n CHECK: CHECK_GLYPH,\n CROSS: \"\\u2717\",\n /** Removed/pending-removal diff marker (ASCII hyphen). Info panel + Sources tab share it. */\n REMOVED: \"-\",\n /** Added/newly-selected diff marker (ASCII plus). Info panel + Sources tab share it. */\n ADDED: \"+\",\n} as const;\n\nexport const GITHUB_SOURCE = {\n HTTPS_PREFIX: \"https://github.com/\",\n GITHUB_PREFIX: \"github:\",\n GH_PREFIX: \"gh:\",\n} as const;\n\n/** Name written into a global-scope config's `name` field (`~/.claude-src/config.ts`). */\nexport const GLOBAL_CONFIG_NAME = \"global\";\n\n/** Strict kebab-case: starts with letter, segments separated by single hyphens, no trailing hyphens */\nexport const KEBAB_CASE_PATTERN = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/;\n\n/** Author handle format: `@` followed by a lowercase-led alphanumeric-hyphen slug. */\nexport const AUTHOR_HANDLE_PATTERN = /^@[a-z][a-z0-9-]*$/;\n\nexport const HASH_PREFIX_LENGTH = 7;\n\n/** Hex chars from SHA-256 hash used in cache directory names (64 bits of collision resistance) */\nexport const CACHE_HASH_LENGTH = 16;\n\n/** Max chars of human-readable prefix in cache directory names (for debugging) */\nexport const CACHE_READABLE_PREFIX_LENGTH = 32;\n\n// File size limits for parsing boundaries (DoS prevention)\nconst ONE_MB = 1024 * 1024;\nexport const MAX_MARKETPLACE_FILE_SIZE = 10 * ONE_MB;\nexport const MAX_PLUGIN_FILE_SIZE = ONE_MB;\nexport const MAX_CONFIG_FILE_SIZE = ONE_MB;\n\nexport const MAX_JSON_NESTING_DEPTH = 10;\nexport const MAX_MARKETPLACE_PLUGINS = 10_000;\n\nexport const SCROLL_VIEWPORT = {\n /** Height of the \"N more above\" scroll indicator */\n SCROLL_INDICATOR_HEIGHT: 1,\n /** Estimated lines per category name row (including top margin) */\n CATEGORY_NAME_LINES: 2,\n /** Margin between category sections (marginTop on CategorySection) */\n CATEGORY_MARGIN_LINES: 1,\n /** Minimum rows to show at least 1 category before enabling scroll */\n MIN_VIEWPORT_ROWS: 5,\n} as const;\n\n/**\n * The terminal geometry every command refuses to run below. This is the only\n * minimum-size gate there is: `BaseCommand.ensureTerminalSize` reads it and\n * blocks until the terminal is at least this big, so raising `ROWS` raises the\n * bar for the whole CLI, tests included.\n *\n * `ROWS: 20` is measured, not guessed. Driving the real binary to the build\n * step — the binding constraint, since it is the tallest step — gives:\n * 15/16/17 corrupt (overlapping card borders, unreadable); 18 the first clean\n * render (one complete category card, correctly clipped); 20 clean with one\n * full card plus the next category heading; 24 comfortable. 18 is the hard\n * correctness floor because it is where {@link SCROLL_VIEWPORT.MIN_VIEWPORT_ROWS}\n * starts being satisfied — below it the shared scroll gate stops clipping and\n * the grid bleeds over its borders. 20 buys two rows of margin above that floor\n * while staying under the 24-row default of common terminals.\n */\nexport const MIN_TERMINAL_SIZE = {\n COLS: 80,\n ROWS: 20,\n} as const;\n\n/**\n * The terminal height at or above which the stack step paints the six-row ASCII\n * logo. Below it the logo is dropped — it is decoration, and the stack list is\n * the content.\n *\n * This is NOT a second size gate. {@link MIN_TERMINAL_SIZE} decides whether a\n * command runs at all; this decides only whether one decorative element renders\n * inside a terminal that already cleared that gate. Conflating them would be a\n * regression in both directions: raising `MIN_TERMINAL_SIZE.ROWS` to 26 would\n * refuse to run in the 24-row terminal that is still a common default, and\n * lowering this to 20 brings back the bleed below.\n *\n * 26 is measured against the real binary at 100 columns, on the stack step:\n *\n * | rows | stack step with the logo rendered |\n * | ---- | ----------------------------------------------------------------- |\n * | 20 | bleeds — stack rows paint over the \"Start from scratch\" row |\n * | 24 | bleeds — stack rows paint through the hotkey row and the footer |\n * | 26 | clean |\n * | 27 | clean |\n * | 28 | clean |\n *\n * The mechanism: the logo eats six rows of the stack step's list viewport,\n * starving it below {@link SCROLL_VIEWPORT.MIN_VIEWPORT_ROWS}, at which point\n * the shared scroll hooks stop clipping and the rows bleed. Hiding the logo\n * returns those rows to the viewport; the bail-instead-of-clip behaviour itself\n * is untouched and remains the open underlying defect.\n */\nexport const LOGO_MIN_TERMINAL_ROWS = 26;\n\nexport const DEFAULT_BRANDING = {\n NAME: \"Agents Inc.\",\n} as const;\n\n/**\n * Fallback name for the default public marketplace when marketplace.json is\n * unavailable. Same value as `DEFAULT_PLUGIN_NAME` but a distinct concept: this\n * is the resolved source/marketplace name, that is the plugin bundle name.\n */\nexport const DEFAULT_PUBLIC_SOURCE_NAME = DEFAULT_PLUGIN_NAME;\n\n/**\n * The npm package the public catalogue publishes from, and the one thing that\n * tells the catalogue apart from a marketplace merely calling itself\n * {@link DEFAULT_PUBLIC_SOURCE_NAME}.\n *\n * Nothing a marketplace ships is unforgeable — every signal is a string in a file\n * its author controls, this one included. What it does is make the reserved\n * namespace unreachable by ACCIDENT: taking it requires renaming your own package\n * to the catalogue's published, npm-scope-governed name, which is impersonation\n * rather than drift.\n *\n * Two guards read it and must agree, which is why it lives here rather than in\n * either: `validateMarketplaceName` (`lib/marketplace-generator.ts`) exempts the\n * catalogue from the reserved-name refusal at BUILD time, and the collision guard\n * in `lib/loading/source-loader.ts` exempts it from the catalogue-id refusal at\n * LOAD time. Two definitions of who the catalogue is would let a source be the\n * catalogue to one guard and not to the other.\n */\nexport const PUBLIC_CATALOGUE_PACKAGE = \"@agents-inc/skills\";\n\n/** Human-readable labels for skill source types shown in the wizard and edit command */\nexport const SOURCE_DISPLAY_NAMES: Record<string, string> = {\n public: \"Public\",\n eject: \"Eject\",\n \"agents-inc\": \"Agents Inc\",\n};\n\n/** The two install modes a Sources row offers, in the order the grid renders them. */\nexport const INSTALL_MODES = [\"eject\", \"plugin\"] as const satisfies readonly Exclude<\n InstallMode,\n \"mixed\"\n>[];\n\n/**\n * How the Sources grid captions each of its two cells.\n *\n * Deliberately not `INSTALL_MODE_LABELS` (`Eject`/`Plugin`), which names a mode by what it does\n * to the files, nor `SOURCE_DISPLAY_NAMES`, which labels a `SkillConfig.origin` VALUE on the\n * summary surfaces. The grid asks where the skill should LIVE, and the two answers are the\n * project's own copy or the marketplace plugin — so the cells read `Local` and `Plugin`, which\n * is also the two-state badge the editor settled on (`.claude-design/DECISIONS.md`).\n */\nexport const INSTALL_MODE_CELL_LABELS = {\n eject: \"Local\",\n plugin: \"Plugin\",\n} as const satisfies Record<Exclude<InstallMode, \"mixed\">, string>;\n\n/** Resolves a source name to its human-readable display label. */\nexport function formatSourceDisplayName(source: string): string {\n return SOURCE_DISPLAY_NAMES[source] ?? source;\n}\n\n/**\n * Marketplace-row value when skills are selected but every one of them is `EJECT_SOURCE`. \"eject\"\n * names no marketplace, so there is nothing to list — but the selection is not empty either, and\n * naming the default public marketplace would claim an origin none of those skills has.\n */\nexport const ALL_SKILLS_EJECTED_LABEL = \"All skills ejected\";\n\n// TODO: update naming convention to GRAY_1,2, etc\nexport const CLI_COLORS = {\n PRIMARY: \"#99FFFF\",\n SUCCESS: \"#90EE90\",\n ERROR: \"#DC343B\",\n WARNING: \"#E6A817\",\n INFO: \"#3B82F6\",\n NEUTRAL: \"#888888\",\n FOCUS: \"#87CEFA\",\n UNFOCUSED: \"#FFFFFF\",\n WHITE: \"#FFFFFF\",\n BLACK: \"#000000\",\n DIM: \"#666666\",\n GRAY_1: \"#ddd\",\n LABEL_BG: \"#383838\",\n TOAST_BG: \"#EEEEEE\",\n TOAST_FG: \"#000000\",\n HOVER_BG: \"#333333\",\n} as const;\n\n/** Default domains pre-selected when \"Start from scratch\" is chosen (all except CLI) */\nexport const DEFAULT_SCRATCH_DOMAINS: readonly Domain[] = [\"web\", \"api\", \"mobile\"];\n\n/** Domain used when no active domain can be resolved from wizard state. */\nexport const FALLBACK_DOMAIN: Domain = \"web\";\n\n/**\n * The product's own mark, and **deliberately not brandable** (owner ruling 2026-08-24).\n *\n * `branding.name` reaches every command that prints a name — the dashboard, the wizard footer,\n * `doctor`'s header, six surfaces in all — so a white-labelled installation says its own name\n * throughout. This does not follow it, and that is the decision rather than an omission: the mark\n * is the product's, not the installation's.\n *\n * Filed as CLI-769 by an agent that found a white-labelled install still drawing `AGENTS INC` in\n * ASCII and read the gap as unfinished branding. Recorded here so the next reader finds the answer\n * beside the constant instead of refiling it. `package.json`'s `description` — the first line of\n * `--help`, which oclif reads from package metadata — is the same class and the same answer.\n */\nexport const ASCII_LOGO = ` █████╗ ██████╗ ███████╗███╗ ██╗████████╗███████╗ ██╗███╗ ██╗ ██████╗\n██╔══██╗██╔════╝ ██╔════╝████╗ ██║╚══██╔══╝██╔════╝ ██║████╗ ██║██╔════╝\n███████║██║ ███╗█████╗ ██╔██╗ ██║ ██║ ███████╗ ██║██╔██╗ ██║██║\n██╔══██║██║ ██║██╔══╝ ██║╚██╗██║ ██║ ╚════██║ ██║██║╚██╗██║██║\n██║ ██║╚██████╔╝███████╗██║ ╚████║ ██║ ███████║ ██║██║ ╚████║╚██████╗\n╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝`;\n"],"mappings":"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","names":[]}
|