@asterxsk/kiln 0.3.0 → 0.4.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 +2 -2
- package/agent/version.txt +1 -1
- package/bin/kiln.js +10 -8
- package/package.json +1 -1
- package/agent.bak.20260905-190020/AGENTS.md +0 -67
- package/agent.bak.20260905-190020/README.md +0 -5
- package/agent.bak.20260905-190020/extensions/ask-user/index.ts +0 -418
- package/agent.bak.20260905-190020/extensions/ask-user/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/ask-user/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/ask-user/package-lock.json +0 -769
- package/agent.bak.20260905-190020/extensions/ask-user/package.json +0 -19
- package/agent.bak.20260905-190020/extensions/ask-user/prompt.ts +0 -45
- package/agent.bak.20260905-190020/extensions/ask-user/tsconfig.json +0 -7
- package/agent.bak.20260905-190020/extensions/background-terminals/docs/implementation-guide.md +0 -942
- package/agent.bak.20260905-190020/extensions/background-terminals/index.ts +0 -629
- package/agent.bak.20260905-190020/extensions/background-terminals/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/background-terminals/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/background-terminals/package-lock.json +0 -769
- package/agent.bak.20260905-190020/extensions/background-terminals/package.json +0 -17
- package/agent.bak.20260905-190020/extensions/background-terminals/src/domain.ts +0 -87
- package/agent.bak.20260905-190020/extensions/background-terminals/src/manager.ts +0 -907
- package/agent.bak.20260905-190020/extensions/background-terminals/src/output.ts +0 -84
- package/agent.bak.20260905-190020/extensions/background-terminals/src/prompt.ts +0 -142
- package/agent.bak.20260905-190020/extensions/background-terminals/src/result-delivery.ts +0 -27
- package/agent.bak.20260905-190020/extensions/background-terminals/src/runtime.ts +0 -36
- package/agent.bak.20260905-190020/extensions/background-terminals/src/ui/output-view.ts +0 -79
- package/agent.bak.20260905-190020/extensions/background-terminals/src/ui/ps.ts +0 -621
- package/agent.bak.20260905-190020/extensions/background-terminals/src/widget-order.ts +0 -121
- package/agent.bak.20260905-190020/extensions/background-terminals/test/manager.test.ts +0 -735
- package/agent.bak.20260905-190020/extensions/background-terminals/test/output.test.ts +0 -109
- package/agent.bak.20260905-190020/extensions/background-terminals/test/prompt.test.ts +0 -125
- package/agent.bak.20260905-190020/extensions/background-terminals/test/ps.test.ts +0 -82
- package/agent.bak.20260905-190020/extensions/background-terminals/test/result-delivery.test.ts +0 -44
- package/agent.bak.20260905-190020/extensions/background-terminals/tsconfig.json +0 -7
- package/agent.bak.20260905-190020/extensions/destructive/README.md +0 -34
- package/agent.bak.20260905-190020/extensions/destructive/index.ts +0 -124
- package/agent.bak.20260905-190020/extensions/destructive/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/destructive/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/file-search/index.ts +0 -459
- package/agent.bak.20260905-190020/extensions/file-search/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/file-search/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/file-search/package-lock.json +0 -2253
- package/agent.bak.20260905-190020/extensions/file-search/package.json +0 -23
- package/agent.bak.20260905-190020/extensions/file-search/src/args.ts +0 -122
- package/agent.bak.20260905-190020/extensions/file-search/src/binaries.ts +0 -422
- package/agent.bak.20260905-190020/extensions/file-search/src/output.ts +0 -126
- package/agent.bak.20260905-190020/extensions/file-search/src/process.ts +0 -146
- package/agent.bak.20260905-190020/extensions/file-search/src/prompt.ts +0 -52
- package/agent.bak.20260905-190020/extensions/file-search/test/index.spec.ts +0 -443
- package/agent.bak.20260905-190020/extensions/file-search/tsconfig.json +0 -7
- package/agent.bak.20260905-190020/extensions/goal/README.md +0 -50
- package/agent.bak.20260905-190020/extensions/goal/index.ts +0 -155
- package/agent.bak.20260905-190020/extensions/goal/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/goal/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/kiln-update/README.md +0 -25
- package/agent.bak.20260905-190020/extensions/kiln-update/index.ts +0 -99
- package/agent.bak.20260905-190020/extensions/kiln-update/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/kiln-update/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/modelconf/PLAN.md +0 -915
- package/agent.bak.20260905-190020/extensions/modelconf/README.md +0 -66
- package/agent.bak.20260905-190020/extensions/modelconf/index.ts +0 -296
- package/agent.bak.20260905-190020/extensions/modelconf/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/modelconf/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/modelconf/package-lock.json +0 -1809
- package/agent.bak.20260905-190020/extensions/modelconf/package.json +0 -13
- package/agent.bak.20260905-190020/extensions/modelconf/src/fuzzy.ts +0 -26
- package/agent.bak.20260905-190020/extensions/modelconf/src/glob.ts +0 -13
- package/agent.bak.20260905-190020/extensions/modelconf/src/persistence.test.ts +0 -46
- package/agent.bak.20260905-190020/extensions/modelconf/src/persistence.ts +0 -164
- package/agent.bak.20260905-190020/extensions/modelconf/src/ui/ModelConfView.test.ts +0 -75
- package/agent.bak.20260905-190020/extensions/modelconf/src/ui/ModelConfView.ts +0 -1101
- package/agent.bak.20260905-190020/extensions/modelconf/tsconfig.json +0 -15
- package/agent.bak.20260905-190020/extensions/pi-web-access/CHANGELOG.md +0 -690
- package/agent.bak.20260905-190020/extensions/pi-web-access/LICENSE +0 -21
- package/agent.bak.20260905-190020/extensions/pi-web-access/README.md +0 -470
- package/agent.bak.20260905-190020/extensions/pi-web-access/SECURITY.md +0 -5
- package/agent.bak.20260905-190020/extensions/pi-web-access/activity.ts +0 -101
- package/agent.bak.20260905-190020/extensions/pi-web-access/auth-fetch.ts +0 -148
- package/agent.bak.20260905-190020/extensions/pi-web-access/banner.png +0 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/brightdata-unlocker.ts +0 -272
- package/agent.bak.20260905-190020/extensions/pi-web-access/chrome-cookies.ts +0 -669
- package/agent.bak.20260905-190020/extensions/pi-web-access/content-find.ts +0 -139
- package/agent.bak.20260905-190020/extensions/pi-web-access/credential-source.ts +0 -191
- package/agent.bak.20260905-190020/extensions/pi-web-access/data-uri-sanitize.ts +0 -406
- package/agent.bak.20260905-190020/extensions/pi-web-access/datalab-pdf-extract.ts +0 -568
- package/agent.bak.20260905-190020/extensions/pi-web-access/declared-web-links.ts +0 -173
- package/agent.bak.20260905-190020/extensions/pi-web-access/evidence/CONTRACT-EVIDENCE.md +0 -496
- package/agent.bak.20260905-190020/extensions/pi-web-access/evidence/contract-probe.mjs +0 -140
- package/agent.bak.20260905-190020/extensions/pi-web-access/exa.ts +0 -526
- package/agent.bak.20260905-190020/extensions/pi-web-access/extract.ts +0 -1196
- package/agent.bak.20260905-190020/extensions/pi-web-access/feature-config.ts +0 -29
- package/agent.bak.20260905-190020/extensions/pi-web-access/fetch-params.ts +0 -111
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-adc.ts +0 -298
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-api.ts +0 -353
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-pdf-extract.ts +0 -108
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-search.ts +0 -21
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-url-context.ts +0 -128
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-web-config.ts +0 -101
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-web.ts +0 -487
- package/agent.bak.20260905-190020/extensions/pi-web-access/github-api.ts +0 -197
- package/agent.bak.20260905-190020/extensions/pi-web-access/github-extract.ts +0 -746
- package/agent.bak.20260905-190020/extensions/pi-web-access/github-issue-pr.ts +0 -700
- package/agent.bak.20260905-190020/extensions/pi-web-access/index.ts +0 -1737
- package/agent.bak.20260905-190020/extensions/pi-web-access/package-lock.json +0 -5808
- package/agent.bak.20260905-190020/extensions/pi-web-access/package.json +0 -64
- package/agent.bak.20260905-190020/extensions/pi-web-access/page-query.ts +0 -96
- package/agent.bak.20260905-190020/extensions/pi-web-access/pdf-extract.ts +0 -409
- package/agent.bak.20260905-190020/extensions/pi-web-access/pi-web-fetch-demo.mp4 +0 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/promise-try.d.ts +0 -7
- package/agent.bak.20260905-190020/extensions/pi-web-access/query-rewrite.ts +0 -51
- package/agent.bak.20260905-190020/extensions/pi-web-access/render-search-error.ts +0 -170
- package/agent.bak.20260905-190020/extensions/pi-web-access/rsc-extract.ts +0 -338
- package/agent.bak.20260905-190020/extensions/pi-web-access/search-types.ts +0 -20
- package/agent.bak.20260905-190020/extensions/pi-web-access/source-check.ts +0 -282
- package/agent.bak.20260905-190020/extensions/pi-web-access/ssrf-protection.ts +0 -526
- package/agent.bak.20260905-190020/extensions/pi-web-access/storage.ts +0 -521
- package/agent.bak.20260905-190020/extensions/pi-web-access/summary-model-scope.ts +0 -125
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/auth-fetch.test.mjs +0 -208
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/brightdata-unlocker.test.mjs +0 -840
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/chrome-cookie-extraction.test.mjs +0 -441
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/config-path.test.mjs +0 -283
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/content-find.test.mjs +0 -25
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/credential-source.test.mjs +0 -118
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/data-uri-sanitize.test.mjs +0 -210
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/datalab-pdf-extract.test.mjs +0 -552
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/declared-web-links.test.mjs +0 -212
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-answer-storage.test.mjs +0 -40
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-cache-storage.test.mjs +0 -334
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-content-domain-policy.test.mjs +0 -95
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-modes.test.mjs +0 -53
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-not-found-guidance.test.mjs +0 -92
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-params.test.mjs +0 -86
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-render-call.test.mjs +0 -34
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-routing.test.mjs +0 -173
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/gemini-adc-auth.test.mjs +0 -257
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/gemini-api-transport.test.mjs +0 -170
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/gemini-pdf-extract.test.mjs +0 -133
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/gemini-web-cookie-opt-in.test.mjs +0 -178
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/gemini-web-header-overflow.test.mjs +0 -148
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/get-search-content.test.mjs +0 -223
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/github-extract.test.mjs +0 -378
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/github-issue-pr.test.mjs +0 -565
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/inline-content-config.test.mjs +0 -99
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/lazy-extract-load.test.mjs +0 -118
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/local-video-oversize.test.mjs +0 -52
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/package-typebox-dependency.test.mjs +0 -50
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/page-query.test.mjs +0 -51
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/pdf-config.test.mjs +0 -140
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/pdf-extract.test.mjs +0 -500
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/proxy-transport.test.mjs +0 -286
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/query-rewrite.test.mjs +0 -52
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/rsc-fallback.test.mjs +0 -102
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/search-error-render.test.mjs +0 -152
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/search-providers.test.mjs +0 -274
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/source-check.test.mjs +0 -179
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/ssrf-allow-ranges-config.test.mjs +0 -205
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/ssrf-protection.test.mjs +0 -456
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/summary-model-scope.test.mjs +0 -106
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/tool-registration-config.test.mjs +0 -182
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/web-search-answer-render.test.mjs +0 -66
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/youtube-extract-errors.test.mjs +0 -64
- package/agent.bak.20260905-190020/extensions/pi-web-access/tsconfig.json +0 -11
- package/agent.bak.20260905-190020/extensions/pi-web-access/utils.ts +0 -451
- package/agent.bak.20260905-190020/extensions/pi-web-access/video-extract.ts +0 -392
- package/agent.bak.20260905-190020/extensions/pi-web-access/youtube-extract.ts +0 -328
- package/agent.bak.20260905-190020/extensions/shared/activity-status.ts +0 -31
- package/agent.bak.20260905-190020/extensions/shared/child-session.ts +0 -148
- package/agent.bak.20260905-190020/extensions/shared/context-utilization.ts +0 -47
- package/agent.bak.20260905-190020/extensions/shared/dashboard-state.ts +0 -99
- package/agent.bak.20260905-190020/extensions/shared/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/shared/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/shared/test/child-session.test.ts +0 -270
- package/agent.bak.20260905-190020/extensions/shared/test/context-utilization.test.ts +0 -48
- package/agent.bak.20260905-190020/extensions/shared/test/tool-call-timeout.test.ts +0 -117
- package/agent.bak.20260905-190020/extensions/shared/test/widget-order.test.ts +0 -167
- package/agent.bak.20260905-190020/extensions/shared/tool-call-timeout.ts +0 -104
- package/agent.bak.20260905-190020/extensions/skillsconf/README.md +0 -74
- package/agent.bak.20260905-190020/extensions/skillsconf/index.ts +0 -92
- package/agent.bak.20260905-190020/extensions/skillsconf/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/skillsconf/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/skillsconf/package-lock.json +0 -1809
- package/agent.bak.20260905-190020/extensions/skillsconf/package.json +0 -18
- package/agent.bak.20260905-190020/extensions/skillsconf/src/delete-skill.test.ts +0 -64
- package/agent.bak.20260905-190020/extensions/skillsconf/src/delete-skill.ts +0 -45
- package/agent.bak.20260905-190020/extensions/skillsconf/src/filter.test.ts +0 -80
- package/agent.bak.20260905-190020/extensions/skillsconf/src/filter.ts +0 -74
- package/agent.bak.20260905-190020/extensions/skillsconf/src/fuzzy.ts +0 -26
- package/agent.bak.20260905-190020/extensions/skillsconf/src/persistence.test.ts +0 -72
- package/agent.bak.20260905-190020/extensions/skillsconf/src/persistence.ts +0 -169
- package/agent.bak.20260905-190020/extensions/skillsconf/src/ui/SkillConfView.test.ts +0 -337
- package/agent.bak.20260905-190020/extensions/skillsconf/src/ui/SkillConfView.ts +0 -758
- package/agent.bak.20260905-190020/extensions/skillsconf/src/ui/text-input.ts +0 -91
- package/agent.bak.20260905-190020/extensions/skillsconf/src/ui/tui-helpers.ts +0 -144
- package/agent.bak.20260905-190020/extensions/skillsconf/tsconfig.json +0 -15
- package/agent.bak.20260905-190020/extensions/statusline/index.ts +0 -282
- package/agent.bak.20260905-190020/extensions/statusline/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/statusline/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/subagents/docs/design-plan.md +0 -568
- package/agent.bak.20260905-190020/extensions/subagents/docs/effect-v4-extension-guide.md +0 -354
- package/agent.bak.20260905-190020/extensions/subagents/docs/effect-v4-notes.md +0 -571
- package/agent.bak.20260905-190020/extensions/subagents/index.ts +0 -826
- package/agent.bak.20260905-190020/extensions/subagents/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/subagents/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/subagents/package-lock.json +0 -2244
- package/agent.bak.20260905-190020/extensions/subagents/package.json +0 -19
- package/agent.bak.20260905-190020/extensions/subagents/src/backend.ts +0 -73
- package/agent.bak.20260905-190020/extensions/subagents/src/backends/claude.ts +0 -701
- package/agent.bak.20260905-190020/extensions/subagents/src/backends/codex.ts +0 -1060
- package/agent.bak.20260905-190020/extensions/subagents/src/backends/pi.ts +0 -575
- package/agent.bak.20260905-190020/extensions/subagents/src/backends/stub.ts +0 -300
- package/agent.bak.20260905-190020/extensions/subagents/src/by-the-way.ts +0 -21
- package/agent.bak.20260905-190020/extensions/subagents/src/domain.ts +0 -253
- package/agent.bak.20260905-190020/extensions/subagents/src/format.ts +0 -74
- package/agent.bak.20260905-190020/extensions/subagents/src/manager.ts +0 -736
- package/agent.bak.20260905-190020/extensions/subagents/src/prompt.ts +0 -92
- package/agent.bak.20260905-190020/extensions/subagents/src/result-delivery.ts +0 -20
- package/agent.bak.20260905-190020/extensions/subagents/src/runtime.ts +0 -53
- package/agent.bak.20260905-190020/extensions/subagents/src/ui/takeover.ts +0 -583
- package/agent.bak.20260905-190020/extensions/subagents/src/ui/transcript.ts +0 -201
- package/agent.bak.20260905-190020/extensions/subagents/src/widget-order.ts +0 -121
- package/agent.bak.20260905-190020/extensions/subagents/test/by-the-way.test.ts +0 -29
- package/agent.bak.20260905-190020/extensions/subagents/test/claude.test.ts +0 -119
- package/agent.bak.20260905-190020/extensions/subagents/test/codex.test.ts +0 -102
- package/agent.bak.20260905-190020/extensions/subagents/test/context-usage.test.ts +0 -107
- package/agent.bak.20260905-190020/extensions/subagents/test/manager.test.ts +0 -276
- package/agent.bak.20260905-190020/extensions/subagents/test/result-delivery.test.ts +0 -27
- package/agent.bak.20260905-190020/extensions/subagents/test/takeover.test.ts +0 -29
- package/agent.bak.20260905-190020/extensions/subagents/tsconfig.json +0 -7
- package/agent.bak.20260905-190020/extensions/taste/index.ts +0 -443
- package/agent.bak.20260905-190020/extensions/taste/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/taste/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/todo/AGENTS.md +0 -38
- package/agent.bak.20260905-190020/extensions/todo/LICENSE +0 -21
- package/agent.bak.20260905-190020/extensions/todo/config.ts +0 -55
- package/agent.bak.20260905-190020/extensions/todo/index.ts +0 -151
- package/agent.bak.20260905-190020/extensions/todo/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/todo/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/todo/locales/de.json +0 -17
- package/agent.bak.20260905-190020/extensions/todo/locales/en.json +0 -15
- package/agent.bak.20260905-190020/extensions/todo/locales/es.json +0 -17
- package/agent.bak.20260905-190020/extensions/todo/locales/fr.json +0 -17
- package/agent.bak.20260905-190020/extensions/todo/locales/pt-BR.json +0 -17
- package/agent.bak.20260905-190020/extensions/todo/locales/pt.json +0 -17
- package/agent.bak.20260905-190020/extensions/todo/locales/ru.json +0 -17
- package/agent.bak.20260905-190020/extensions/todo/locales/uk.json +0 -17
- package/agent.bak.20260905-190020/extensions/todo/locales/zh.json +0 -17
- package/agent.bak.20260905-190020/extensions/todo/package-lock.json +0 -3358
- package/agent.bak.20260905-190020/extensions/todo/package.json +0 -67
- package/agent.bak.20260905-190020/extensions/todo/state/i18n-bridge.ts +0 -64
- package/agent.bak.20260905-190020/extensions/todo/state/invariants.ts +0 -20
- package/agent.bak.20260905-190020/extensions/todo/state/replay.ts +0 -38
- package/agent.bak.20260905-190020/extensions/todo/state/selectors.ts +0 -107
- package/agent.bak.20260905-190020/extensions/todo/state/state-reducer.ts +0 -326
- package/agent.bak.20260905-190020/extensions/todo/state/state.ts +0 -18
- package/agent.bak.20260905-190020/extensions/todo/state/store.ts +0 -82
- package/agent.bak.20260905-190020/extensions/todo/state/task-graph.ts +0 -57
- package/agent.bak.20260905-190020/extensions/todo/todo-overlay.ts +0 -204
- package/agent.bak.20260905-190020/extensions/todo/todo.ts +0 -155
- package/agent.bak.20260905-190020/extensions/todo/tool/response-envelope.ts +0 -109
- package/agent.bak.20260905-190020/extensions/todo/tool/types.ts +0 -206
- package/agent.bak.20260905-190020/extensions/todo/view/format.ts +0 -177
- package/agent.bak.20260905-190020/extensions/todo/widget-order.ts +0 -121
- package/agent.bak.20260905-190020/extensions/trim-context/README.md +0 -54
- package/agent.bak.20260905-190020/extensions/trim-context/index.ts +0 -487
- package/agent.bak.20260905-190020/extensions/trim-context/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/trim-context/install.sh +0 -21
- package/agent.bak.20260905-190020/keybindings.json +0 -7
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
# modelconf
|
|
2
|
-
|
|
3
|
-
Per-provider model visibility manager for pi.
|
|
4
|
-
|
|
5
|
-
`/modelconf` opens a tab view — one tab per configured provider (providers that appear in `enabledModels` or have configured auth; falls back to all providers if none detected). Each tab shows `visible/total` counts. Switching tabs preserves per-provider cursor and filter state.
|
|
6
|
-
|
|
7
|
-
## Usage
|
|
8
|
-
|
|
9
|
-
```
|
|
10
|
-
/modelconf
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
Tab bar at top highlights the active provider `[provider vis/total]`. Models in the active tab are filtered and toggled independently — bulk operations are scoped to the active provider.
|
|
14
|
-
|
|
15
|
-
## Keybindings
|
|
16
|
-
|
|
17
|
-
- `Tab` / `Shift-Tab` — switch provider tab (also `←` / `→` as alternative when not in search)
|
|
18
|
-
- `/` — fuzzy search within active tab (filters `provider/modelId name`); `↑` / `↓` / `Home` / `End` navigate while typing, `Esc` clears filter, `Enter` keeps filter
|
|
19
|
-
- `Space` — toggle visibility of selected model (`◉` visible / `○` hidden), marks `● unsaved`
|
|
20
|
-
- `a` — add (show) whatever models are currently visible after search (whole tab when unfiltered)
|
|
21
|
-
- `x` — hide whatever models are currently visible after search (whole tab when unfiltered)
|
|
22
|
-
- `↑` / `↓` or `j` / `k` — navigate list; `Home` / `End` jump
|
|
23
|
-
- `Enter` — save draft to `enabledModels` (writes `undefined` / removes key when all visible, sorted array otherwise); notifies and triggers `ctx.reload()` when available
|
|
24
|
-
- `Esc` / `q` — close; if dirty, prompts `Discard changes? (y/N)`; `y` or `Esc` discards, `n` keeps editing. While filtered, first `Esc` clears filter.
|
|
25
|
-
|
|
26
|
-
### Empty states
|
|
27
|
-
|
|
28
|
-
- Fuzzy yields 0 in active tab → `No models match 'q' in <provider>` + `Press Esc to clear filter`
|
|
29
|
-
|
|
30
|
-
### Scrolling & layout
|
|
31
|
-
|
|
32
|
-
Visible rows are clamped to terminal height minus tab bar and chrome (`getAvailableHeight()` subtracts tab bar + dividers + optional search line, capped at 40 rows). Large catalogs paginate with a centered window around the cursor and a `(pos/total) in <provider>` indicator.
|
|
33
|
-
|
|
34
|
-
## Persistence
|
|
35
|
-
|
|
36
|
-
Writes `enabledModels` in `~/.pi/agent/settings.json`:
|
|
37
|
-
|
|
38
|
-
- All visible → `enabledModels` removed (`undefined`) to keep settings clean
|
|
39
|
-
- Some hidden → sorted array of `provider/modelId` ids (stale ids filtered on save)
|
|
40
|
-
- File missing → treated as all visible
|
|
41
|
-
- Parse error → treated as all visible; save recreates file safely
|
|
42
|
-
|
|
43
|
-
After save, a reload is triggered if `ctx.reload` is available; otherwise run `/reload` manually. The model picker (`/model`) reflects the new visibility.
|
|
44
|
-
|
|
45
|
-
## Keyboard shortcut
|
|
46
|
-
|
|
47
|
-
`Ctrl+Alt+M` opens modelconf when supported by the host (registered via `pi.registerShortcut("ctrl+alt+m")` with a try/catch guard for API differences).
|
|
48
|
-
|
|
49
|
-
## Persistence edge cases
|
|
50
|
-
|
|
51
|
-
- Stale ids in `enabledModels` are ignored for visibility but filtered on next save.
|
|
52
|
-
- Save with all visible deletes the key rather than writing a full list.
|
|
53
|
-
- Large providers (e.g. `opencode` with thousands of models) remain responsive — fuzzy filtering is scoped to the active tab and rendering is windowed.
|
|
54
|
-
|
|
55
|
-
## Example flow
|
|
56
|
-
|
|
57
|
-
1. `/modelconf` → opens tab view on first configured provider
|
|
58
|
-
2. `Tab` to `anthropic` tab → `/` type `mini` → fuzzy filters within that tab
|
|
59
|
-
3. `Space` toggles a model, `x` type `*free*` `Enter` excludes matches in that provider
|
|
60
|
-
4. `Enter` saves → `modelconf: saved N enabled models — reload to apply`
|
|
61
|
-
|
|
62
|
-
## Development
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
npx tsc --noEmit --project ./tsconfig.json
|
|
66
|
-
```
|
|
@@ -1,296 +0,0 @@
|
|
|
1
|
-
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import { loadHiddenModels, getVisibilityMap, saveHiddenModels } from "./src/persistence.js";
|
|
3
|
-
import { ModelConfView } from "./src/ui/ModelConfView.js";
|
|
4
|
-
import fs from "node:fs";
|
|
5
|
-
import os from "node:os";
|
|
6
|
-
import path from "node:path";
|
|
7
|
-
import { globToRegExp } from "./src/glob.js";
|
|
8
|
-
|
|
9
|
-
// ---------- helpers for filtering main /model list ----------
|
|
10
|
-
function settingsPath(): string {
|
|
11
|
-
return path.join(os.homedir(), ".pi", "agent", "settings.json");
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function loadHiddenModelsSync(): string[] | undefined {
|
|
15
|
-
try {
|
|
16
|
-
const raw = fs.readFileSync(settingsPath(), "utf8");
|
|
17
|
-
const j = JSON.parse(raw) as { hiddenModels?: string[] };
|
|
18
|
-
return j.hiddenModels;
|
|
19
|
-
} catch {
|
|
20
|
-
return undefined;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
// Backward compat alias
|
|
24
|
-
function loadEnabledModelsSync(): string[] | undefined {
|
|
25
|
-
return loadHiddenModelsSync();
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const VALID_THINKING = new Set(["off", "minimal", "low", "medium", "high", "xhigh", "max"]);
|
|
29
|
-
|
|
30
|
-
function stripThinkingLevel(pattern: string): string {
|
|
31
|
-
const idx = pattern.lastIndexOf(":");
|
|
32
|
-
if (idx !== -1) {
|
|
33
|
-
const suffix = pattern.slice(idx + 1);
|
|
34
|
-
if (VALID_THINKING.has(suffix)) return pattern.slice(0, idx);
|
|
35
|
-
}
|
|
36
|
-
return pattern;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function matchesPattern(modelRef: string, pattern: string): boolean {
|
|
40
|
-
const pat = stripThinkingLevel(pattern);
|
|
41
|
-
const lowerRef = modelRef.toLowerCase();
|
|
42
|
-
const lowerPat = pat.toLowerCase();
|
|
43
|
-
const bareId = modelRef.split("/").slice(1).join("/")?.toLowerCase() ?? lowerRef;
|
|
44
|
-
const hasGlob = /[*?\[\]]/.test(pat);
|
|
45
|
-
if (hasGlob) {
|
|
46
|
-
const rx = globToRegExp(pat);
|
|
47
|
-
// pi matches against full ref OR bare id via minimatch
|
|
48
|
-
if (rx.test(modelRef)) return true;
|
|
49
|
-
if (rx.test(bareId)) return true;
|
|
50
|
-
// also try lower variants (globToRegExp is already i-flag)
|
|
51
|
-
return false;
|
|
52
|
-
} else {
|
|
53
|
-
return lowerRef === lowerPat || bareId === lowerPat;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function modelMatchesAnyPattern(modelRef: string, patterns: string[]): boolean {
|
|
58
|
-
for (const p of patterns) if (matchesPattern(modelRef, p)) return true;
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
function patchRuntime(runtime: any) {
|
|
63
|
-
if (!runtime || runtime.__modelconfPatched) return;
|
|
64
|
-
const origSnapshot = runtime.getAvailableSnapshot?.bind(runtime);
|
|
65
|
-
const origGetAvailable = runtime.getAvailable?.bind(runtime);
|
|
66
|
-
const origGetModels = runtime.getModels?.bind(runtime);
|
|
67
|
-
|
|
68
|
-
if (typeof origSnapshot === "function") {
|
|
69
|
-
runtime.getAvailableSnapshot = function (...args: any[]) {
|
|
70
|
-
const base: any[] = origSnapshot(...args);
|
|
71
|
-
const hidden = loadHiddenModelsSync();
|
|
72
|
-
if (!hidden || hidden.length === 0) return base;
|
|
73
|
-
const filtered = base.filter((m: any) => {
|
|
74
|
-
const ref = `${m.provider}/${m.id}`;
|
|
75
|
-
// Hide if matches hidden denylist (from full list). Keep visible otherwise.
|
|
76
|
-
const isHidden = modelMatchesAnyPattern(ref, hidden) || modelMatchesAnyPattern(m.id ?? "", hidden);
|
|
77
|
-
return !isHidden;
|
|
78
|
-
});
|
|
79
|
-
return filtered;
|
|
80
|
-
};
|
|
81
|
-
// keep original for modelconf's own unfiltered view
|
|
82
|
-
runtime.__originalGetAvailableSnapshot = origSnapshot;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// also patch async getAvailable(providerId, opts) if present
|
|
86
|
-
if (typeof origGetAvailable === "function") {
|
|
87
|
-
runtime.getAvailable = async function (providerId?: string, opts?: any) {
|
|
88
|
-
const base: any[] = await origGetAvailable(providerId, opts);
|
|
89
|
-
const hidden = loadHiddenModelsSync();
|
|
90
|
-
if (!hidden || hidden.length === 0) return base;
|
|
91
|
-
// Always filter hidden from any provider query — hidden applies to full picker list
|
|
92
|
-
const filtered = base.filter((m: any) => {
|
|
93
|
-
const ref = `${m.provider}/${m.id}`;
|
|
94
|
-
const isHidden = modelMatchesAnyPattern(ref, hidden) || modelMatchesAnyPattern(m.id ?? "", hidden);
|
|
95
|
-
return !isHidden;
|
|
96
|
-
});
|
|
97
|
-
return filtered;
|
|
98
|
-
};
|
|
99
|
-
runtime.__originalGetAvailable = origGetAvailable;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
runtime.__modelconfPatched = true;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
function patchRegistry(registry: any) {
|
|
106
|
-
if (!registry) return;
|
|
107
|
-
// ModelRegistry.getAvailable is async and delegates to runtime; patching runtime is enough.
|
|
108
|
-
// Also patch registry.getAvailableSnapshot if it exists (some pi versions expose it)
|
|
109
|
-
if (typeof registry.getAvailableSnapshot === "function" && !registry.__modelconfPatched) {
|
|
110
|
-
const orig = registry.getAvailableSnapshot.bind(registry);
|
|
111
|
-
registry.getAvailableSnapshot = function (...args: any[]) {
|
|
112
|
-
const base: any[] = orig(...args);
|
|
113
|
-
const hidden = loadHiddenModelsSync();
|
|
114
|
-
if (!hidden || hidden.length === 0) return base;
|
|
115
|
-
const filtered = base.filter((m: any) => {
|
|
116
|
-
const ref = `${m.provider}/${m.id}`;
|
|
117
|
-
return !modelMatchesAnyPattern(ref, hidden);
|
|
118
|
-
});
|
|
119
|
-
return filtered;
|
|
120
|
-
};
|
|
121
|
-
registry.__originalGetAvailableSnapshot = orig;
|
|
122
|
-
registry.__modelconfPatched = true;
|
|
123
|
-
}
|
|
124
|
-
if (registry.runtime) patchRuntime(registry.runtime);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
export default function modelconf(pi: ExtensionAPI) {
|
|
128
|
-
// patch on session start for every new session's runtime
|
|
129
|
-
try {
|
|
130
|
-
(pi as any).on?.("session_start", async (_ev: any, ctx: any) => {
|
|
131
|
-
try {
|
|
132
|
-
patchRegistry(ctx?.modelRegistry);
|
|
133
|
-
} catch {}
|
|
134
|
-
});
|
|
135
|
-
} catch {}
|
|
136
|
-
|
|
137
|
-
// also attempt to patch via global require at load time (best-effort, may be different copy)
|
|
138
|
-
try {
|
|
139
|
-
// try to find main pi runtime via ctx-less import — no-op if not found
|
|
140
|
-
// we rely on patchRegistry on first command invocation as fallback
|
|
141
|
-
} catch {}
|
|
142
|
-
|
|
143
|
-
async function openModelConf(ctx: any) {
|
|
144
|
-
if (ctx.mode !== "tui") {
|
|
145
|
-
ctx.ui.notify("/modelconf requires TUI mode", "error");
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
// Ensure main list filtering is active for this session
|
|
150
|
-
try {
|
|
151
|
-
patchRegistry(ctx.modelRegistry);
|
|
152
|
-
} catch {}
|
|
153
|
-
|
|
154
|
-
const rawAll = ctx.modelRegistry.getAll() as any[];
|
|
155
|
-
const allModelsRaw = rawAll.map((m) => ({
|
|
156
|
-
provider: (m as any).provider ?? "unknown",
|
|
157
|
-
id: (m as any).id ?? "",
|
|
158
|
-
name: (m as any).name ?? (m as any).id ?? "",
|
|
159
|
-
}));
|
|
160
|
-
|
|
161
|
-
const hiddenRaw = await loadHiddenModels();
|
|
162
|
-
const allIds = allModelsRaw.map((m) => `${m.provider}/${m.id}`);
|
|
163
|
-
|
|
164
|
-
// ---- Determine available models (main /model list) as auth-filtered set ----
|
|
165
|
-
// This is the FULL list that /model shows (not the scoped subset). We use
|
|
166
|
-
// hasConfiguredAuth / getProviderAuthStatus to replicate pi's available snapshot.
|
|
167
|
-
const allProvidersSet = new Set<string>(allModelsRaw.map((m) => m.provider));
|
|
168
|
-
const allProviders = [...allProvidersSet];
|
|
169
|
-
|
|
170
|
-
const hasConfiguredAuthFn =
|
|
171
|
-
typeof (ctx.modelRegistry as any).hasConfiguredAuth === "function"
|
|
172
|
-
? (ctx.modelRegistry as any).hasConfiguredAuth.bind(ctx.modelRegistry)
|
|
173
|
-
: null;
|
|
174
|
-
const getProviderAuthStatusFn =
|
|
175
|
-
typeof (ctx.modelRegistry as any).getProviderAuthStatus === "function"
|
|
176
|
-
? (ctx.modelRegistry as any).getProviderAuthStatus.bind(ctx.modelRegistry)
|
|
177
|
-
: null;
|
|
178
|
-
|
|
179
|
-
function isProviderAuthConfigured(provider: string): boolean {
|
|
180
|
-
try {
|
|
181
|
-
if (getProviderAuthStatusFn) {
|
|
182
|
-
const s: any = getProviderAuthStatusFn(provider);
|
|
183
|
-
if (s && (s.ok === true || s.configured === true)) return true;
|
|
184
|
-
}
|
|
185
|
-
} catch {}
|
|
186
|
-
try {
|
|
187
|
-
if (hasConfiguredAuthFn) {
|
|
188
|
-
for (const mm of rawAll) {
|
|
189
|
-
if ((mm as any).provider === provider) {
|
|
190
|
-
try {
|
|
191
|
-
if (hasConfiguredAuthFn(mm)) return true;
|
|
192
|
-
} catch {}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
} catch {}
|
|
197
|
-
return false;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
// Available providers = those with configured auth. Fallback to all if none detected
|
|
201
|
-
// (e.g. no auth yet, to avoid empty view).
|
|
202
|
-
let availableProviders = allProviders.filter((p) => isProviderAuthConfigured(p));
|
|
203
|
-
if (availableProviders.length === 0) availableProviders = allProviders;
|
|
204
|
-
|
|
205
|
-
// Full list for modelconf = all models from available providers.
|
|
206
|
-
// This is the same set that /model's main list shows BEFORE enabledModels filtering.
|
|
207
|
-
// We intentionally do NOT filter by enabledModels here — we show the full available
|
|
208
|
-
// catalogue so users can toggle visibility for the main list.
|
|
209
|
-
// If runtime was patched, getAvailableSnapshot would already be filtered; we bypass that
|
|
210
|
-
// by using getAll filtered by auth, not the patched snapshot.
|
|
211
|
-
const allModels = allModelsRaw.filter((m) => availableProviders.includes(m.provider));
|
|
212
|
-
|
|
213
|
-
// Visibility: hiddenRaw is denylist for full picker. Visible = not hidden.
|
|
214
|
-
function isVisiblePat(modelRef: string, hidden: string[] | undefined): boolean {
|
|
215
|
-
if (!hidden || hidden.length === 0) return true;
|
|
216
|
-
return !modelMatchesAnyPattern(modelRef, hidden);
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
const visibleSet = new Set<string>();
|
|
220
|
-
for (const m of allModels) {
|
|
221
|
-
const ref = `${m.provider}/${m.id}`;
|
|
222
|
-
if (isVisiblePat(ref, hiddenRaw)) visibleSet.add(ref);
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
await ctx.ui.custom((tui: any, theme: any, kb: any, done: any) => {
|
|
226
|
-
const view = new ModelConfView({
|
|
227
|
-
tui,
|
|
228
|
-
theme,
|
|
229
|
-
keybindings: kb,
|
|
230
|
-
allModels: allModels as any,
|
|
231
|
-
visibleSet,
|
|
232
|
-
enabledRaw: hiddenRaw,
|
|
233
|
-
allIds,
|
|
234
|
-
onDone: (saved: boolean) => {
|
|
235
|
-
done(saved);
|
|
236
|
-
try {
|
|
237
|
-
tui?.requestRender?.();
|
|
238
|
-
} catch {}
|
|
239
|
-
},
|
|
240
|
-
onPersist: async (nextEnabled: string[] | undefined) => {
|
|
241
|
-
let filtered = nextEnabled;
|
|
242
|
-
if (filtered !== undefined) {
|
|
243
|
-
const allSet = new Set(allIds);
|
|
244
|
-
filtered = filtered.filter((id) => allSet.has(id));
|
|
245
|
-
if (filtered.length === allIds.length) filtered = undefined;
|
|
246
|
-
if (filtered !== undefined) filtered = [...filtered].sort();
|
|
247
|
-
}
|
|
248
|
-
await saveHiddenModels(filtered);
|
|
249
|
-
const hiddenCount = filtered === undefined ? 0 : filtered.length;
|
|
250
|
-
const visibleInAvailable = allModels.length - hiddenCount; // rough; hidden may be outside available but still filtered
|
|
251
|
-
// More accurate: count hidden that are in available
|
|
252
|
-
let hiddenInAvailable = 0;
|
|
253
|
-
if (filtered) {
|
|
254
|
-
hiddenInAvailable = allModels.filter((m) => modelMatchesAnyPattern(`${m.provider}/${m.id}`, filtered!)).length;
|
|
255
|
-
}
|
|
256
|
-
const actualVisible = allModels.length - hiddenInAvailable;
|
|
257
|
-
ctx.ui.notify(
|
|
258
|
-
`modelconf: saved ${hiddenCount} hidden models — ${actualVisible} visible in /model — reload to apply`,
|
|
259
|
-
"info"
|
|
260
|
-
);
|
|
261
|
-
try {
|
|
262
|
-
await (ctx as any).reload?.();
|
|
263
|
-
} catch {}
|
|
264
|
-
// re-patch after save so /model immediately reflects new setting without reload
|
|
265
|
-
try {
|
|
266
|
-
patchRegistry(ctx.modelRegistry);
|
|
267
|
-
} catch {}
|
|
268
|
-
},
|
|
269
|
-
});
|
|
270
|
-
|
|
271
|
-
return {
|
|
272
|
-
render: view.render.bind(view),
|
|
273
|
-
handleInput: view.handleInput.bind(view),
|
|
274
|
-
invalidate: view.invalidate.bind(view),
|
|
275
|
-
};
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
pi.registerCommand("modelconf", {
|
|
280
|
-
description:
|
|
281
|
-
"Manage main /model list visibility per provider (fuzzy: /, toggle: space, bulk: x, save: enter)",
|
|
282
|
-
handler: async (_args, ctx) => openModelConf(ctx),
|
|
283
|
-
});
|
|
284
|
-
|
|
285
|
-
// Also patch /model command to show filtered main list if pi allows overriding.
|
|
286
|
-
// We register a wrapper that ensures filtering is active; we don't replace the UI,
|
|
287
|
-
// filtering is done via runtime patch, so no need to override command.
|
|
288
|
-
// The patch above ensures /model's ModelSelectorComponent automatically shows filtered list.
|
|
289
|
-
|
|
290
|
-
try {
|
|
291
|
-
(pi as any).registerShortcut?.("ctrl+alt+m" as any, {
|
|
292
|
-
description: "Open modelconf",
|
|
293
|
-
handler: async (ctx: any) => openModelConf(ctx),
|
|
294
|
-
});
|
|
295
|
-
} catch {}
|
|
296
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env pwsh
|
|
2
|
-
# Per-extension installer — Windows / PowerShell
|
|
3
|
-
# Installs npm dependencies for this extension. No-op if no package.json.
|
|
4
|
-
$ErrorActionPreference = "Stop"
|
|
5
|
-
$extDir = $PSScriptRoot
|
|
6
|
-
if (-not $extDir) { $extDir = Split-Path -Parent $MyInvocation.MyCommand.Path }
|
|
7
|
-
if (-not (Test-Path "$extDir/package.json")) {
|
|
8
|
-
Write-Host " - no package.json — skipping" -ForegroundColor DarkGray
|
|
9
|
-
exit 0
|
|
10
|
-
}
|
|
11
|
-
if (-not (Get-Command npm -ErrorAction SilentlyContinue)) {
|
|
12
|
-
Write-Host " x npm not found — install Node.js 22+" -ForegroundColor Red
|
|
13
|
-
exit 1
|
|
14
|
-
}
|
|
15
|
-
if (Test-Path "$extDir/package-lock.json") {
|
|
16
|
-
Write-Host " - npm ci" -ForegroundColor DarkGray
|
|
17
|
-
npm --prefix $extDir ci --no-audit --no-fund
|
|
18
|
-
} else {
|
|
19
|
-
Write-Host " - npm install" -ForegroundColor DarkGray
|
|
20
|
-
npm --prefix $extDir install --no-audit --no-fund
|
|
21
|
-
}
|
|
22
|
-
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
23
|
-
Write-Host " + done" -ForegroundColor Green
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
# Per-extension installer — macOS / Linux
|
|
3
|
-
# Installs npm dependencies for this extension. No-op if no package.json.
|
|
4
|
-
set -eu
|
|
5
|
-
EXT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
6
|
-
if [ ! -f "$EXT_DIR/package.json" ]; then
|
|
7
|
-
echo " · no package.json — skipping"
|
|
8
|
-
exit 0
|
|
9
|
-
fi
|
|
10
|
-
if ! command -v npm >/dev/null 2>&1; then
|
|
11
|
-
echo " ✖ npm not found — install Node.js 22+" >&2
|
|
12
|
-
exit 1
|
|
13
|
-
fi
|
|
14
|
-
if [ -f "$EXT_DIR/package-lock.json" ]; then
|
|
15
|
-
echo " · npm ci"
|
|
16
|
-
npm --prefix "$EXT_DIR" ci --no-audit --no-fund
|
|
17
|
-
else
|
|
18
|
-
echo " · npm install"
|
|
19
|
-
npm --prefix "$EXT_DIR" install --no-audit --no-fund
|
|
20
|
-
fi
|
|
21
|
-
echo " ✓ done"
|