@asterxsk/kiln 0.1.0 → 0.3.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 +155 -170
- package/agent/AGENTS.md +67 -67
- package/agent/README.md +5 -5
- package/agent/extensions/ask-user/index.ts +418 -418
- package/agent/extensions/ask-user/install.ps1 +4 -0
- package/agent/extensions/ask-user/install.sh +3 -0
- package/agent/extensions/ask-user/package-lock.json +769 -769
- package/agent/extensions/ask-user/package.json +19 -19
- package/agent/extensions/ask-user/prompt.ts +45 -45
- package/agent/extensions/ask-user/tsconfig.json +7 -7
- package/agent/extensions/background-terminals/docs/implementation-guide.md +942 -942
- package/agent/extensions/background-terminals/index.ts +627 -627
- package/agent/extensions/background-terminals/install.ps1 +4 -0
- package/agent/extensions/background-terminals/install.sh +3 -0
- package/agent/extensions/background-terminals/manager.test.ts +735 -735
- package/agent/extensions/background-terminals/output.test.ts +109 -109
- package/agent/extensions/background-terminals/package-lock.json +769 -769
- package/agent/extensions/background-terminals/package.json +17 -17
- package/agent/extensions/background-terminals/prompt.test.ts +125 -125
- package/agent/extensions/background-terminals/ps.test.ts +82 -82
- package/agent/extensions/background-terminals/result-delivery.test.ts +44 -44
- package/agent/extensions/background-terminals/src/domain.ts +87 -87
- package/agent/extensions/background-terminals/src/manager.ts +907 -907
- package/agent/extensions/background-terminals/src/output.ts +84 -84
- package/agent/extensions/background-terminals/src/prompt.ts +142 -142
- package/agent/extensions/background-terminals/src/result-delivery.ts +27 -27
- package/agent/extensions/background-terminals/src/runtime.ts +36 -36
- package/agent/extensions/background-terminals/src/ui/output-view.ts +79 -79
- package/agent/extensions/background-terminals/src/ui/ps.ts +621 -621
- package/agent/extensions/background-terminals/tsconfig.json +7 -7
- package/agent/extensions/destructive/install.ps1 +4 -0
- package/agent/extensions/destructive/install.sh +3 -0
- package/agent/extensions/file-search/index.spec.ts +443 -443
- package/agent/extensions/file-search/index.ts +459 -459
- package/agent/extensions/file-search/install.ps1 +4 -0
- package/agent/extensions/file-search/install.sh +3 -0
- package/agent/extensions/file-search/package-lock.json +2253 -2253
- package/agent/extensions/file-search/package.json +23 -23
- package/agent/extensions/file-search/src/args.ts +122 -122
- package/agent/extensions/file-search/src/binaries.ts +422 -422
- package/agent/extensions/file-search/src/output.ts +126 -126
- package/agent/extensions/file-search/src/process.ts +146 -146
- package/agent/extensions/file-search/src/prompt.ts +52 -52
- package/agent/extensions/file-search/tsconfig.json +7 -7
- package/agent/extensions/goal/install.ps1 +4 -0
- package/agent/extensions/goal/install.sh +3 -0
- package/agent/extensions/herdr-agent-state.ts +257 -0
- package/agent/extensions/kiln-update/README.md +25 -0
- package/agent/extensions/kiln-update/index.ts +99 -0
- package/agent/extensions/kiln-update/install.ps1 +27 -0
- package/agent/extensions/kiln-update/install.sh +24 -0
- package/agent/extensions/modelconf/PLAN.md +915 -915
- package/agent/extensions/modelconf/index.ts +296 -296
- package/agent/extensions/modelconf/install.ps1 +4 -0
- package/agent/extensions/modelconf/install.sh +3 -0
- package/agent/extensions/modelconf/src/ui/ModelConfView.ts +1101 -1101
- package/agent/extensions/pi-web-access/CHANGELOG.md +690 -690
- package/agent/extensions/pi-web-access/LICENSE +21 -21
- package/agent/extensions/pi-web-access/README.md +470 -470
- package/agent/extensions/pi-web-access/SECURITY.md +5 -5
- package/agent/extensions/pi-web-access/activity.ts +101 -101
- package/agent/extensions/pi-web-access/auth-fetch.ts +148 -148
- package/agent/extensions/pi-web-access/brightdata-unlocker.ts +272 -272
- package/agent/extensions/pi-web-access/chrome-cookies.ts +669 -669
- package/agent/extensions/pi-web-access/content-find.ts +139 -139
- package/agent/extensions/pi-web-access/credential-source.ts +191 -191
- package/agent/extensions/pi-web-access/data-uri-sanitize.ts +406 -406
- package/agent/extensions/pi-web-access/datalab-pdf-extract.ts +568 -568
- package/agent/extensions/pi-web-access/declared-web-links.ts +173 -173
- package/agent/extensions/pi-web-access/evidence/CONTRACT-EVIDENCE.md +496 -496
- package/agent/extensions/pi-web-access/evidence/contract-probe.mjs +140 -140
- package/agent/extensions/pi-web-access/exa.ts +526 -526
- package/agent/extensions/pi-web-access/extract.ts +1196 -1196
- package/agent/extensions/pi-web-access/feature-config.ts +29 -29
- package/agent/extensions/pi-web-access/fetch-params.ts +111 -111
- package/agent/extensions/pi-web-access/gemini-adc.ts +298 -298
- package/agent/extensions/pi-web-access/gemini-api.ts +353 -353
- package/agent/extensions/pi-web-access/gemini-pdf-extract.ts +108 -108
- package/agent/extensions/pi-web-access/gemini-url-context.ts +128 -128
- package/agent/extensions/pi-web-access/gemini-web-config.ts +101 -101
- package/agent/extensions/pi-web-access/gemini-web.ts +487 -487
- package/agent/extensions/pi-web-access/github-api.ts +197 -197
- package/agent/extensions/pi-web-access/github-extract.ts +746 -746
- package/agent/extensions/pi-web-access/github-issue-pr.ts +700 -700
- package/agent/extensions/pi-web-access/index.ts +1737 -1737
- package/agent/extensions/pi-web-access/package-lock.json +5808 -5808
- package/agent/extensions/pi-web-access/package.json +64 -64
- package/agent/extensions/pi-web-access/page-query.ts +96 -96
- package/agent/extensions/pi-web-access/pdf-extract.ts +409 -409
- package/agent/extensions/pi-web-access/promise-try.d.ts +7 -7
- package/agent/extensions/pi-web-access/query-rewrite.ts +51 -51
- package/agent/extensions/pi-web-access/render-search-error.ts +170 -170
- package/agent/extensions/pi-web-access/rsc-extract.ts +338 -338
- package/agent/extensions/pi-web-access/source-check.ts +282 -282
- package/agent/extensions/pi-web-access/ssrf-protection.ts +526 -526
- package/agent/extensions/pi-web-access/storage.ts +521 -521
- package/agent/extensions/pi-web-access/summary-model-scope.ts +125 -125
- package/agent/extensions/pi-web-access/test/auth-fetch.test.mjs +208 -208
- package/agent/extensions/pi-web-access/test/brightdata-unlocker.test.mjs +840 -840
- package/agent/extensions/pi-web-access/test/chrome-cookie-extraction.test.mjs +441 -441
- package/agent/extensions/pi-web-access/test/config-path.test.mjs +283 -283
- package/agent/extensions/pi-web-access/test/content-find.test.mjs +25 -25
- package/agent/extensions/pi-web-access/test/credential-source.test.mjs +118 -118
- package/agent/extensions/pi-web-access/test/data-uri-sanitize.test.mjs +210 -210
- package/agent/extensions/pi-web-access/test/datalab-pdf-extract.test.mjs +552 -552
- package/agent/extensions/pi-web-access/test/declared-web-links.test.mjs +212 -212
- package/agent/extensions/pi-web-access/test/fetch-answer-storage.test.mjs +40 -40
- package/agent/extensions/pi-web-access/test/fetch-cache-storage.test.mjs +334 -334
- package/agent/extensions/pi-web-access/test/fetch-content-domain-policy.test.mjs +95 -95
- package/agent/extensions/pi-web-access/test/fetch-modes.test.mjs +53 -53
- package/agent/extensions/pi-web-access/test/fetch-not-found-guidance.test.mjs +92 -92
- package/agent/extensions/pi-web-access/test/fetch-params.test.mjs +86 -86
- package/agent/extensions/pi-web-access/test/fetch-render-call.test.mjs +34 -34
- package/agent/extensions/pi-web-access/test/fetch-routing.test.mjs +173 -173
- package/agent/extensions/pi-web-access/test/gemini-adc-auth.test.mjs +257 -257
- package/agent/extensions/pi-web-access/test/gemini-api-transport.test.mjs +170 -170
- package/agent/extensions/pi-web-access/test/gemini-pdf-extract.test.mjs +133 -133
- package/agent/extensions/pi-web-access/test/gemini-web-cookie-opt-in.test.mjs +178 -178
- package/agent/extensions/pi-web-access/test/gemini-web-header-overflow.test.mjs +148 -148
- package/agent/extensions/pi-web-access/test/get-search-content.test.mjs +223 -223
- package/agent/extensions/pi-web-access/test/github-extract.test.mjs +378 -378
- package/agent/extensions/pi-web-access/test/github-issue-pr.test.mjs +565 -565
- package/agent/extensions/pi-web-access/test/inline-content-config.test.mjs +99 -99
- package/agent/extensions/pi-web-access/test/lazy-extract-load.test.mjs +118 -118
- package/agent/extensions/pi-web-access/test/local-video-oversize.test.mjs +52 -52
- package/agent/extensions/pi-web-access/test/package-typebox-dependency.test.mjs +50 -50
- package/agent/extensions/pi-web-access/test/page-query.test.mjs +51 -51
- package/agent/extensions/pi-web-access/test/pdf-config.test.mjs +140 -140
- package/agent/extensions/pi-web-access/test/pdf-extract.test.mjs +500 -500
- package/agent/extensions/pi-web-access/test/proxy-transport.test.mjs +286 -286
- package/agent/extensions/pi-web-access/test/query-rewrite.test.mjs +52 -52
- package/agent/extensions/pi-web-access/test/rsc-fallback.test.mjs +102 -102
- package/agent/extensions/pi-web-access/test/search-error-render.test.mjs +152 -152
- package/agent/extensions/pi-web-access/test/search-providers.test.mjs +274 -274
- package/agent/extensions/pi-web-access/test/source-check.test.mjs +179 -179
- package/agent/extensions/pi-web-access/test/ssrf-allow-ranges-config.test.mjs +205 -205
- package/agent/extensions/pi-web-access/test/ssrf-protection.test.mjs +456 -456
- package/agent/extensions/pi-web-access/test/tool-registration-config.test.mjs +182 -182
- package/agent/extensions/pi-web-access/test/youtube-extract-errors.test.mjs +64 -64
- package/agent/extensions/pi-web-access/tsconfig.json +11 -11
- package/agent/extensions/pi-web-access/utils.ts +451 -451
- package/agent/extensions/pi-web-access/video-extract.ts +392 -392
- package/agent/extensions/pi-web-access/youtube-extract.ts +328 -328
- package/agent/extensions/shared/activity-status.ts +31 -31
- package/agent/extensions/shared/child-session.test.ts +270 -270
- package/agent/extensions/shared/child-session.ts +148 -148
- package/agent/extensions/shared/context-utilization.test.ts +48 -48
- package/agent/extensions/shared/context-utilization.ts +47 -47
- package/agent/extensions/shared/dashboard-state.ts +99 -99
- package/agent/extensions/shared/install.ps1 +4 -0
- package/agent/extensions/shared/install.sh +3 -0
- package/agent/extensions/shared/tool-call-timeout.test.ts +117 -117
- package/agent/extensions/shared/tool-call-timeout.ts +104 -104
- package/agent/extensions/skillsconf/install.ps1 +4 -0
- package/agent/extensions/skillsconf/install.sh +3 -0
- package/agent/extensions/statusline/index.ts +282 -0
- package/agent/extensions/statusline/install.ps1 +27 -0
- package/agent/extensions/statusline/install.sh +24 -0
- package/agent/extensions/subagents/by-the-way.test.ts +29 -29
- package/agent/extensions/subagents/claude.test.ts +119 -119
- package/agent/extensions/subagents/codex.test.ts +102 -102
- package/agent/extensions/subagents/context-usage.test.ts +107 -107
- package/agent/extensions/subagents/docs/design-plan.md +568 -568
- package/agent/extensions/subagents/docs/effect-v4-extension-guide.md +354 -354
- package/agent/extensions/subagents/docs/effect-v4-notes.md +571 -571
- package/agent/extensions/subagents/index.ts +779 -779
- package/agent/extensions/subagents/install.ps1 +4 -0
- package/agent/extensions/subagents/install.sh +3 -0
- package/agent/extensions/subagents/manager.test.ts +276 -276
- package/agent/extensions/subagents/package-lock.json +2244 -2244
- package/agent/extensions/subagents/package.json +19 -19
- package/agent/extensions/subagents/result-delivery.test.ts +27 -27
- package/agent/extensions/subagents/src/backend.ts +73 -73
- package/agent/extensions/subagents/src/backends/claude.ts +701 -701
- package/agent/extensions/subagents/src/backends/codex.ts +1060 -1060
- package/agent/extensions/subagents/src/backends/pi.ts +575 -575
- package/agent/extensions/subagents/src/backends/stub.ts +300 -300
- package/agent/extensions/subagents/src/by-the-way.ts +21 -21
- package/agent/extensions/subagents/src/domain.ts +253 -253
- package/agent/extensions/subagents/src/format.ts +74 -74
- package/agent/extensions/subagents/src/manager.ts +736 -736
- package/agent/extensions/subagents/src/prompt.ts +92 -92
- package/agent/extensions/subagents/src/result-delivery.ts +20 -20
- package/agent/extensions/subagents/src/runtime.ts +53 -53
- package/agent/extensions/subagents/src/ui/takeover.ts +583 -583
- package/agent/extensions/subagents/src/ui/transcript.ts +201 -201
- package/agent/extensions/subagents/takeover.test.ts +29 -29
- package/agent/extensions/subagents/tsconfig.json +7 -7
- package/agent/extensions/taste/install.ps1 +4 -0
- package/agent/extensions/taste/install.sh +3 -0
- package/agent/extensions/todo/AGENTS.md +38 -38
- package/agent/extensions/todo/LICENSE +21 -21
- package/agent/extensions/todo/config.ts +55 -55
- package/agent/extensions/todo/index.ts +151 -151
- package/agent/extensions/todo/install.ps1 +4 -0
- package/agent/extensions/todo/install.sh +3 -0
- package/agent/extensions/todo/locales/de.json +17 -17
- package/agent/extensions/todo/locales/en.json +15 -15
- package/agent/extensions/todo/locales/es.json +17 -17
- package/agent/extensions/todo/locales/fr.json +17 -17
- package/agent/extensions/todo/locales/pt-BR.json +17 -17
- package/agent/extensions/todo/locales/pt.json +17 -17
- package/agent/extensions/todo/locales/ru.json +17 -17
- package/agent/extensions/todo/locales/uk.json +17 -17
- package/agent/extensions/todo/locales/zh.json +17 -17
- package/agent/extensions/todo/package-lock.json +3358 -3358
- package/agent/extensions/todo/package.json +67 -67
- package/agent/extensions/todo/state/i18n-bridge.ts +64 -64
- package/agent/extensions/todo/state/invariants.ts +20 -20
- package/agent/extensions/todo/state/replay.ts +38 -38
- package/agent/extensions/todo/state/selectors.ts +107 -107
- package/agent/extensions/todo/state/state-reducer.ts +326 -326
- package/agent/extensions/todo/state/state.ts +18 -18
- package/agent/extensions/todo/state/store.ts +82 -82
- package/agent/extensions/todo/state/task-graph.ts +57 -57
- package/agent/extensions/todo/todo-overlay.ts +200 -200
- package/agent/extensions/todo/todo.ts +155 -155
- package/agent/extensions/todo/tool/response-envelope.ts +109 -109
- package/agent/extensions/todo/tool/types.ts +206 -206
- package/agent/extensions/todo/view/format.ts +177 -177
- package/agent/extensions/trim-context/install.ps1 +4 -0
- package/agent/extensions/trim-context/install.sh +3 -0
- package/agent/keybindings.json +7 -7
- package/agent/version.txt +1 -0
- package/agent.bak.20260905-190020/AGENTS.md +67 -0
- package/agent.bak.20260905-190020/README.md +5 -0
- package/agent.bak.20260905-190020/extensions/ask-user/index.ts +418 -0
- package/agent.bak.20260905-190020/extensions/ask-user/package-lock.json +769 -0
- package/agent.bak.20260905-190020/extensions/ask-user/package.json +19 -0
- package/agent.bak.20260905-190020/extensions/ask-user/prompt.ts +45 -0
- package/agent.bak.20260905-190020/extensions/ask-user/tsconfig.json +7 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/docs/implementation-guide.md +942 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/index.ts +629 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/install.ps1 +23 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/install.sh +21 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/package-lock.json +769 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/package.json +17 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/src/domain.ts +87 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/src/manager.ts +907 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/src/output.ts +84 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/src/prompt.ts +142 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/src/result-delivery.ts +27 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/src/runtime.ts +36 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/src/ui/output-view.ts +79 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/src/ui/ps.ts +621 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/src/widget-order.ts +121 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/test/manager.test.ts +735 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/test/output.test.ts +109 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/test/prompt.test.ts +125 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/test/ps.test.ts +82 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/test/result-delivery.test.ts +44 -0
- package/agent.bak.20260905-190020/extensions/background-terminals/tsconfig.json +7 -0
- package/agent.bak.20260905-190020/extensions/destructive/README.md +34 -0
- package/agent.bak.20260905-190020/extensions/destructive/index.ts +124 -0
- package/agent.bak.20260905-190020/extensions/destructive/install.ps1 +23 -0
- package/agent.bak.20260905-190020/extensions/destructive/install.sh +21 -0
- package/agent.bak.20260905-190020/extensions/file-search/index.ts +459 -0
- package/agent.bak.20260905-190020/extensions/file-search/install.ps1 +23 -0
- package/agent.bak.20260905-190020/extensions/file-search/install.sh +21 -0
- package/agent.bak.20260905-190020/extensions/file-search/package-lock.json +2253 -0
- package/agent.bak.20260905-190020/extensions/file-search/package.json +23 -0
- package/agent.bak.20260905-190020/extensions/file-search/src/args.ts +122 -0
- package/agent.bak.20260905-190020/extensions/file-search/src/binaries.ts +422 -0
- package/agent.bak.20260905-190020/extensions/file-search/src/output.ts +126 -0
- package/agent.bak.20260905-190020/extensions/file-search/src/process.ts +146 -0
- package/agent.bak.20260905-190020/extensions/file-search/src/prompt.ts +52 -0
- package/agent.bak.20260905-190020/extensions/file-search/test/index.spec.ts +443 -0
- package/agent.bak.20260905-190020/extensions/file-search/tsconfig.json +7 -0
- package/agent.bak.20260905-190020/extensions/goal/README.md +50 -0
- package/agent.bak.20260905-190020/extensions/goal/index.ts +155 -0
- package/agent.bak.20260905-190020/extensions/goal/install.ps1 +23 -0
- package/agent.bak.20260905-190020/extensions/goal/install.sh +21 -0
- package/agent.bak.20260905-190020/extensions/kiln-update/README.md +25 -0
- package/agent.bak.20260905-190020/extensions/kiln-update/index.ts +99 -0
- package/agent.bak.20260905-190020/extensions/kiln-update/install.ps1 +23 -0
- package/agent.bak.20260905-190020/extensions/kiln-update/install.sh +21 -0
- package/agent.bak.20260905-190020/extensions/modelconf/PLAN.md +915 -0
- package/agent.bak.20260905-190020/extensions/modelconf/README.md +66 -0
- package/agent.bak.20260905-190020/extensions/modelconf/index.ts +296 -0
- package/agent.bak.20260905-190020/extensions/modelconf/install.ps1 +23 -0
- package/agent.bak.20260905-190020/extensions/modelconf/install.sh +21 -0
- package/agent.bak.20260905-190020/extensions/modelconf/package-lock.json +1809 -0
- package/agent.bak.20260905-190020/extensions/modelconf/package.json +13 -0
- package/agent.bak.20260905-190020/extensions/modelconf/src/fuzzy.ts +26 -0
- package/agent.bak.20260905-190020/extensions/modelconf/src/glob.ts +13 -0
- package/agent.bak.20260905-190020/extensions/modelconf/src/persistence.test.ts +46 -0
- package/agent.bak.20260905-190020/extensions/modelconf/src/persistence.ts +164 -0
- package/agent.bak.20260905-190020/extensions/modelconf/src/ui/ModelConfView.test.ts +75 -0
- package/agent.bak.20260905-190020/extensions/modelconf/src/ui/ModelConfView.ts +1101 -0
- package/agent.bak.20260905-190020/extensions/modelconf/tsconfig.json +15 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/CHANGELOG.md +690 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/LICENSE +21 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/README.md +470 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/SECURITY.md +5 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/activity.ts +101 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/auth-fetch.ts +148 -0
- 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 +272 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/chrome-cookies.ts +669 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/content-find.ts +139 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/credential-source.ts +191 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/data-uri-sanitize.ts +406 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/datalab-pdf-extract.ts +568 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/declared-web-links.ts +173 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/evidence/CONTRACT-EVIDENCE.md +496 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/evidence/contract-probe.mjs +140 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/exa.ts +526 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/extract.ts +1196 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/feature-config.ts +29 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/fetch-params.ts +111 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-adc.ts +298 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-api.ts +353 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-pdf-extract.ts +108 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-search.ts +21 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-url-context.ts +128 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-web-config.ts +101 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-web.ts +487 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/github-api.ts +197 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/github-extract.ts +746 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/github-issue-pr.ts +700 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/index.ts +1737 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/package-lock.json +5808 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/package.json +64 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/page-query.ts +96 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/pdf-extract.ts +409 -0
- 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 +7 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/query-rewrite.ts +51 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/render-search-error.ts +170 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/rsc-extract.ts +338 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/search-types.ts +20 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/source-check.ts +282 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/ssrf-protection.ts +526 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/storage.ts +521 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/summary-model-scope.ts +125 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/auth-fetch.test.mjs +208 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/brightdata-unlocker.test.mjs +840 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/chrome-cookie-extraction.test.mjs +441 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/config-path.test.mjs +283 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/content-find.test.mjs +25 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/credential-source.test.mjs +118 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/data-uri-sanitize.test.mjs +210 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/datalab-pdf-extract.test.mjs +552 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/declared-web-links.test.mjs +212 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-answer-storage.test.mjs +40 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-cache-storage.test.mjs +334 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-content-domain-policy.test.mjs +95 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-modes.test.mjs +53 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-not-found-guidance.test.mjs +92 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-params.test.mjs +86 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-render-call.test.mjs +34 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-routing.test.mjs +173 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/gemini-adc-auth.test.mjs +257 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/gemini-api-transport.test.mjs +170 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/gemini-pdf-extract.test.mjs +133 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/gemini-web-cookie-opt-in.test.mjs +178 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/gemini-web-header-overflow.test.mjs +148 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/get-search-content.test.mjs +223 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/github-extract.test.mjs +378 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/github-issue-pr.test.mjs +565 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/inline-content-config.test.mjs +99 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/lazy-extract-load.test.mjs +118 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/local-video-oversize.test.mjs +52 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/package-typebox-dependency.test.mjs +50 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/page-query.test.mjs +51 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/pdf-config.test.mjs +140 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/pdf-extract.test.mjs +500 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/proxy-transport.test.mjs +286 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/query-rewrite.test.mjs +52 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/rsc-fallback.test.mjs +102 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/search-error-render.test.mjs +152 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/search-providers.test.mjs +274 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/source-check.test.mjs +179 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/ssrf-allow-ranges-config.test.mjs +205 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/ssrf-protection.test.mjs +456 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/summary-model-scope.test.mjs +106 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/tool-registration-config.test.mjs +182 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/web-search-answer-render.test.mjs +66 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/youtube-extract-errors.test.mjs +64 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/tsconfig.json +11 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/utils.ts +451 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/video-extract.ts +392 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/youtube-extract.ts +328 -0
- package/agent.bak.20260905-190020/extensions/shared/activity-status.ts +31 -0
- package/agent.bak.20260905-190020/extensions/shared/child-session.ts +148 -0
- package/agent.bak.20260905-190020/extensions/shared/context-utilization.ts +47 -0
- package/agent.bak.20260905-190020/extensions/shared/dashboard-state.ts +99 -0
- package/agent.bak.20260905-190020/extensions/shared/install.ps1 +23 -0
- package/agent.bak.20260905-190020/extensions/shared/install.sh +21 -0
- package/agent.bak.20260905-190020/extensions/shared/test/child-session.test.ts +270 -0
- package/agent.bak.20260905-190020/extensions/shared/test/context-utilization.test.ts +48 -0
- package/agent.bak.20260905-190020/extensions/shared/test/tool-call-timeout.test.ts +117 -0
- package/agent.bak.20260905-190020/extensions/shared/test/widget-order.test.ts +167 -0
- package/agent.bak.20260905-190020/extensions/shared/tool-call-timeout.ts +104 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/README.md +74 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/index.ts +92 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/install.ps1 +23 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/install.sh +21 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/package-lock.json +1809 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/package.json +18 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/src/delete-skill.test.ts +64 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/src/delete-skill.ts +45 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/src/filter.test.ts +80 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/src/filter.ts +74 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/src/fuzzy.ts +26 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/src/persistence.test.ts +72 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/src/persistence.ts +169 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/src/ui/SkillConfView.test.ts +337 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/src/ui/SkillConfView.ts +758 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/src/ui/text-input.ts +91 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/src/ui/tui-helpers.ts +144 -0
- package/agent.bak.20260905-190020/extensions/skillsconf/tsconfig.json +15 -0
- package/agent.bak.20260905-190020/extensions/statusline/install.ps1 +23 -0
- package/agent.bak.20260905-190020/extensions/statusline/install.sh +21 -0
- package/agent.bak.20260905-190020/extensions/subagents/docs/design-plan.md +568 -0
- package/agent.bak.20260905-190020/extensions/subagents/docs/effect-v4-extension-guide.md +354 -0
- package/agent.bak.20260905-190020/extensions/subagents/docs/effect-v4-notes.md +571 -0
- package/agent.bak.20260905-190020/extensions/subagents/index.ts +826 -0
- package/agent.bak.20260905-190020/extensions/subagents/install.ps1 +23 -0
- package/agent.bak.20260905-190020/extensions/subagents/install.sh +21 -0
- package/agent.bak.20260905-190020/extensions/subagents/package-lock.json +2244 -0
- package/agent.bak.20260905-190020/extensions/subagents/package.json +19 -0
- package/agent.bak.20260905-190020/extensions/subagents/src/backend.ts +73 -0
- package/agent.bak.20260905-190020/extensions/subagents/src/backends/claude.ts +701 -0
- package/agent.bak.20260905-190020/extensions/subagents/src/backends/codex.ts +1060 -0
- package/agent.bak.20260905-190020/extensions/subagents/src/backends/pi.ts +575 -0
- package/agent.bak.20260905-190020/extensions/subagents/src/backends/stub.ts +300 -0
- package/agent.bak.20260905-190020/extensions/subagents/src/by-the-way.ts +21 -0
- package/agent.bak.20260905-190020/extensions/subagents/src/domain.ts +253 -0
- package/agent.bak.20260905-190020/extensions/subagents/src/format.ts +74 -0
- package/agent.bak.20260905-190020/extensions/subagents/src/manager.ts +736 -0
- package/agent.bak.20260905-190020/extensions/subagents/src/prompt.ts +92 -0
- package/agent.bak.20260905-190020/extensions/subagents/src/result-delivery.ts +20 -0
- package/agent.bak.20260905-190020/extensions/subagents/src/runtime.ts +53 -0
- package/agent.bak.20260905-190020/extensions/subagents/src/ui/takeover.ts +583 -0
- package/agent.bak.20260905-190020/extensions/subagents/src/ui/transcript.ts +201 -0
- package/agent.bak.20260905-190020/extensions/subagents/src/widget-order.ts +121 -0
- package/agent.bak.20260905-190020/extensions/subagents/test/by-the-way.test.ts +29 -0
- package/agent.bak.20260905-190020/extensions/subagents/test/claude.test.ts +119 -0
- package/agent.bak.20260905-190020/extensions/subagents/test/codex.test.ts +102 -0
- package/agent.bak.20260905-190020/extensions/subagents/test/context-usage.test.ts +107 -0
- package/agent.bak.20260905-190020/extensions/subagents/test/manager.test.ts +276 -0
- package/agent.bak.20260905-190020/extensions/subagents/test/result-delivery.test.ts +27 -0
- package/agent.bak.20260905-190020/extensions/subagents/test/takeover.test.ts +29 -0
- package/agent.bak.20260905-190020/extensions/subagents/tsconfig.json +7 -0
- package/agent.bak.20260905-190020/extensions/taste/index.ts +443 -0
- package/agent.bak.20260905-190020/extensions/taste/install.ps1 +23 -0
- package/agent.bak.20260905-190020/extensions/taste/install.sh +21 -0
- package/agent.bak.20260905-190020/extensions/todo/AGENTS.md +38 -0
- package/agent.bak.20260905-190020/extensions/todo/LICENSE +21 -0
- package/agent.bak.20260905-190020/extensions/todo/config.ts +55 -0
- package/agent.bak.20260905-190020/extensions/todo/index.ts +151 -0
- package/agent.bak.20260905-190020/extensions/todo/install.ps1 +23 -0
- package/agent.bak.20260905-190020/extensions/todo/install.sh +21 -0
- package/agent.bak.20260905-190020/extensions/todo/locales/de.json +17 -0
- package/agent.bak.20260905-190020/extensions/todo/locales/en.json +15 -0
- package/agent.bak.20260905-190020/extensions/todo/locales/es.json +17 -0
- package/agent.bak.20260905-190020/extensions/todo/locales/fr.json +17 -0
- package/agent.bak.20260905-190020/extensions/todo/locales/pt-BR.json +17 -0
- package/agent.bak.20260905-190020/extensions/todo/locales/pt.json +17 -0
- package/agent.bak.20260905-190020/extensions/todo/locales/ru.json +17 -0
- package/agent.bak.20260905-190020/extensions/todo/locales/uk.json +17 -0
- package/agent.bak.20260905-190020/extensions/todo/locales/zh.json +17 -0
- package/agent.bak.20260905-190020/extensions/todo/package-lock.json +3358 -0
- package/agent.bak.20260905-190020/extensions/todo/package.json +67 -0
- package/agent.bak.20260905-190020/extensions/todo/state/i18n-bridge.ts +64 -0
- package/agent.bak.20260905-190020/extensions/todo/state/invariants.ts +20 -0
- package/agent.bak.20260905-190020/extensions/todo/state/replay.ts +38 -0
- package/agent.bak.20260905-190020/extensions/todo/state/selectors.ts +107 -0
- package/agent.bak.20260905-190020/extensions/todo/state/state-reducer.ts +326 -0
- package/agent.bak.20260905-190020/extensions/todo/state/state.ts +18 -0
- package/agent.bak.20260905-190020/extensions/todo/state/store.ts +82 -0
- package/agent.bak.20260905-190020/extensions/todo/state/task-graph.ts +57 -0
- package/agent.bak.20260905-190020/extensions/todo/todo-overlay.ts +204 -0
- package/agent.bak.20260905-190020/extensions/todo/todo.ts +155 -0
- package/agent.bak.20260905-190020/extensions/todo/tool/response-envelope.ts +109 -0
- package/agent.bak.20260905-190020/extensions/todo/tool/types.ts +206 -0
- package/agent.bak.20260905-190020/extensions/todo/view/format.ts +177 -0
- package/agent.bak.20260905-190020/extensions/todo/widget-order.ts +121 -0
- package/agent.bak.20260905-190020/extensions/trim-context/README.md +54 -0
- package/agent.bak.20260905-190020/extensions/trim-context/index.ts +487 -0
- package/agent.bak.20260905-190020/extensions/trim-context/install.ps1 +23 -0
- package/agent.bak.20260905-190020/extensions/trim-context/install.sh +21 -0
- package/agent.bak.20260905-190020/keybindings.json +7 -0
- package/bin/kiln.js +588 -358
- package/package.json +27 -21
- package/agent/install.ps1 +0 -527
- package/agent/install.sh +0 -511
- /package/{agent/extensions/status line → agent.bak.20260905-190020/extensions/ask-user}/install.ps1 +0 -0
- /package/{agent/extensions/status line → agent.bak.20260905-190020/extensions/ask-user}/install.sh +0 -0
- /package/{agent/extensions/status line → agent.bak.20260905-190020/extensions/statusline}/index.ts +0 -0
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
|
|
5
|
-
// ---------------------------------------------------------------------------
|
|
6
|
-
// Self-contained config utilities — inlined from @juicesharp/rpiv-config so
|
|
7
|
-
// this extension has zero npm dependencies and can be freely edited.
|
|
8
|
-
// ---------------------------------------------------------------------------
|
|
9
|
-
|
|
10
|
-
export interface GuidanceFields {
|
|
11
|
-
promptSnippet?: string;
|
|
12
|
-
promptGuidelines?: string[];
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
function configPath(name: string, file: string = "config.json"): string {
|
|
16
|
-
return join(homedir(), ".config", name, file);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
function loadJsonConfig<T>(path: string): T {
|
|
20
|
-
if (!existsSync(path)) return {} as T;
|
|
21
|
-
try {
|
|
22
|
-
const parsed = JSON.parse(readFileSync(path, "utf-8")) as unknown;
|
|
23
|
-
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) return {} as T;
|
|
24
|
-
return parsed as T;
|
|
25
|
-
} catch {
|
|
26
|
-
return {} as T;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export function validateGuidanceFields(fields: unknown): GuidanceFields {
|
|
31
|
-
if (!fields || typeof fields !== "object") return {};
|
|
32
|
-
const g = fields as Record<string, unknown>;
|
|
33
|
-
const result: GuidanceFields = {};
|
|
34
|
-
if (typeof g.promptSnippet === "string" && g.promptSnippet.length > 0) {
|
|
35
|
-
result.promptSnippet = g.promptSnippet;
|
|
36
|
-
}
|
|
37
|
-
if (
|
|
38
|
-
Array.isArray(g.promptGuidelines) &&
|
|
39
|
-
g.promptGuidelines.length > 0 &&
|
|
40
|
-
g.promptGuidelines.every((s) => typeof s === "string" && s.length > 0)
|
|
41
|
-
) {
|
|
42
|
-
result.promptGuidelines = g.promptGuidelines;
|
|
43
|
-
}
|
|
44
|
-
return result;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const CONFIG_PATH = configPath("rpiv-todo");
|
|
48
|
-
|
|
49
|
-
interface TodoConfig {
|
|
50
|
-
guidance?: GuidanceFields;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export function loadConfig(): TodoConfig {
|
|
54
|
-
return loadJsonConfig<TodoConfig>(CONFIG_PATH);
|
|
55
|
-
}
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
// Self-contained config utilities — inlined from @juicesharp/rpiv-config so
|
|
7
|
+
// this extension has zero npm dependencies and can be freely edited.
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
|
|
10
|
+
export interface GuidanceFields {
|
|
11
|
+
promptSnippet?: string;
|
|
12
|
+
promptGuidelines?: string[];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function configPath(name: string, file: string = "config.json"): string {
|
|
16
|
+
return join(homedir(), ".config", name, file);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function loadJsonConfig<T>(path: string): T {
|
|
20
|
+
if (!existsSync(path)) return {} as T;
|
|
21
|
+
try {
|
|
22
|
+
const parsed = JSON.parse(readFileSync(path, "utf-8")) as unknown;
|
|
23
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) return {} as T;
|
|
24
|
+
return parsed as T;
|
|
25
|
+
} catch {
|
|
26
|
+
return {} as T;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function validateGuidanceFields(fields: unknown): GuidanceFields {
|
|
31
|
+
if (!fields || typeof fields !== "object") return {};
|
|
32
|
+
const g = fields as Record<string, unknown>;
|
|
33
|
+
const result: GuidanceFields = {};
|
|
34
|
+
if (typeof g.promptSnippet === "string" && g.promptSnippet.length > 0) {
|
|
35
|
+
result.promptSnippet = g.promptSnippet;
|
|
36
|
+
}
|
|
37
|
+
if (
|
|
38
|
+
Array.isArray(g.promptGuidelines) &&
|
|
39
|
+
g.promptGuidelines.length > 0 &&
|
|
40
|
+
g.promptGuidelines.every((s) => typeof s === "string" && s.length > 0)
|
|
41
|
+
) {
|
|
42
|
+
result.promptGuidelines = g.promptGuidelines;
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const CONFIG_PATH = configPath("rpiv-todo");
|
|
48
|
+
|
|
49
|
+
interface TodoConfig {
|
|
50
|
+
guidance?: GuidanceFields;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function loadConfig(): TodoConfig {
|
|
54
|
+
return loadJsonConfig<TodoConfig>(CONFIG_PATH);
|
|
55
|
+
}
|
|
@@ -1,151 +1,151 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* rpiv-todo — Pi extension. Registers the `todo` tool, `/todos` slash
|
|
3
|
-
* command, and the persistent TodoOverlay widget.
|
|
4
|
-
*
|
|
5
|
-
* TUI chrome strings localize at render time via the i18n bridge. Strings are
|
|
6
|
-
* registered with rpiv-i18n here, once, at module init — but only when the
|
|
7
|
-
* SDK is actually installed. If `@juicesharp/rpiv-i18n` is missing (standalone
|
|
8
|
-
* install of just this package), the dynamic-load shim no-ops and the bridge's
|
|
9
|
-
* `t(key, fallback)` returns the inline English literal at every call site.
|
|
10
|
-
* The extension stays online either way.
|
|
11
|
-
*
|
|
12
|
-
* Adding a locale: drop `locales/<code>.json` next to en.json (mirroring the
|
|
13
|
-
* key set). No edit needed here — `registerLocalesFromDir` iterates
|
|
14
|
-
* `SUPPORTED_LOCALES` from the SDK. See `@juicesharp/rpiv-i18n` README →
|
|
15
|
-
* "Contributing translations" for the full convention.
|
|
16
|
-
*
|
|
17
|
-
* Extracted from rpiv-pi@7525a5d. Tool name "todo" and widget key
|
|
18
|
-
* "rpiv-todos" preserved verbatim so existing session history replays
|
|
19
|
-
* correctly after upgrade.
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
23
|
-
import { I18N_NAMESPACE } from "./state/i18n-bridge.js";
|
|
24
|
-
import { replayFromBranch } from "./state/replay.js";
|
|
25
|
-
import { dropState, emptyState, getState, replaceState } from "./state/store.js";
|
|
26
|
-
import { registerTodosCommand, registerTodoTool, TOOL_NAME } from "./todo.js";
|
|
27
|
-
import { TodoOverlay } from "./todo-overlay.js";
|
|
28
|
-
|
|
29
|
-
type I18nLoader = {
|
|
30
|
-
registerLocalesFromDir: (namespace: string, packageUrl: string, options?: { label?: string }) => void;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
// Dynamic import keeps `@juicesharp/rpiv-i18n` a soft optional peer: when the
|
|
34
|
-
// SDK is installed alongside this package the strings register and
|
|
35
|
-
// `/languages` flips them live; when it isn't, the import rejects here, we
|
|
36
|
-
// no-op, and the bridge's English-fallback shim keeps the extension online.
|
|
37
|
-
//
|
|
38
|
-
// The `/loader` subpath is used instead of the SDK entry so the i18n-ui +
|
|
39
|
-
// pi-tui modules are not pulled into our load graph just to register strings.
|
|
40
|
-
try {
|
|
41
|
-
const sdk = (await import("@juicesharp/rpiv-i18n/loader")) as I18nLoader;
|
|
42
|
-
sdk.registerLocalesFromDir(I18N_NAMESPACE, import.meta.url, { label: "rpiv-todo" });
|
|
43
|
-
} catch {
|
|
44
|
-
// SDK absent — extension still loads with English-only UI.
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// pi-core's ExtensionRunner throws this exact phrase from an invalidated ctx
|
|
48
|
-
// proxy after session replacement/reload. Match the stable substring so genuine
|
|
49
|
-
// replay bugs still propagate instead of being silently swallowed.
|
|
50
|
-
function isStaleCtxError(e: unknown): boolean {
|
|
51
|
-
return /stale after session replacement/.test(String(e));
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export default function (pi: ExtensionAPI) {
|
|
55
|
-
// Todo overlay widget — constructed lazily at the first session_start with UI.
|
|
56
|
-
let todoOverlay: TodoOverlay | undefined;
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* If no active tasks remain (all completed, deleted, or empty), reset the
|
|
60
|
-
* state to empty. Called at agent_end and after replay on session lifecycle
|
|
61
|
-
* events so stale completed tasks don't persist across turns.
|
|
62
|
-
*
|
|
63
|
-
* Note: clearing is in-memory only (no tool result written to the branch).
|
|
64
|
-
* Session lifecycle handlers re-check on replay so the empty state survives
|
|
65
|
-
* compaction and session transitions. If a future pi-core ordering change
|
|
66
|
-
* skips those lifecycle events, completed tasks would reappear.
|
|
67
|
-
*/
|
|
68
|
-
function autoClearIfNoActiveTasks(sessionId: string): void {
|
|
69
|
-
const state = getState(sessionId);
|
|
70
|
-
if (!state.tasks.some((t) => t.status === "pending" || t.status === "in_progress")) {
|
|
71
|
-
replaceState(sessionId, emptyState());
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
registerTodoTool(pi);
|
|
76
|
-
registerTodosCommand(pi);
|
|
77
|
-
|
|
78
|
-
pi.on("session_start", async (_event, ctx) => {
|
|
79
|
-
const sessionId = ctx.sessionManager.getSessionId();
|
|
80
|
-
replaceState(sessionId, replayFromBranch(ctx));
|
|
81
|
-
autoClearIfNoActiveTasks(sessionId);
|
|
82
|
-
if (ctx.hasUI) {
|
|
83
|
-
todoOverlay ??= new TodoOverlay();
|
|
84
|
-
todoOverlay.setSession(sessionId);
|
|
85
|
-
todoOverlay.setUICtx(ctx.ui);
|
|
86
|
-
todoOverlay.resetCompletedDisplayState();
|
|
87
|
-
todoOverlay.update();
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
pi.on("session_compact", async (_event, ctx) => {
|
|
92
|
-
// Auto-compaction races session disposal: pi-core invalidates the
|
|
93
|
-
// extension runner while still emitting session_compact, so `ctx` may be
|
|
94
|
-
// a dead proxy whose getters throw the stale error. The compacting session
|
|
95
|
-
// is being discarded — the replacement session's session_start replays
|
|
96
|
-
// state — so keep current state on a stale ctx. Other errors are real
|
|
97
|
-
// replay bugs and must propagate.
|
|
98
|
-
try {
|
|
99
|
-
replaceState(ctx.sessionManager.getSessionId(), replayFromBranch(ctx));
|
|
100
|
-
} catch (e) {
|
|
101
|
-
if (!isStaleCtxError(e)) throw e;
|
|
102
|
-
}
|
|
103
|
-
autoClearIfNoActiveTasks(ctx.sessionManager.getSessionId());
|
|
104
|
-
todoOverlay?.resetCompletedDisplayState();
|
|
105
|
-
todoOverlay?.update();
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
pi.on("session_tree", async (_event, ctx) => {
|
|
109
|
-
try {
|
|
110
|
-
replaceState(ctx.sessionManager.getSessionId(), replayFromBranch(ctx));
|
|
111
|
-
} catch (e) {
|
|
112
|
-
if (!isStaleCtxError(e)) throw e;
|
|
113
|
-
}
|
|
114
|
-
autoClearIfNoActiveTasks(ctx.sessionManager.getSessionId());
|
|
115
|
-
todoOverlay?.resetCompletedDisplayState();
|
|
116
|
-
todoOverlay?.update();
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
pi.on("session_shutdown", async (_event, ctx) => {
|
|
120
|
-
try {
|
|
121
|
-
dropState(ctx.sessionManager.getSessionId());
|
|
122
|
-
} catch (e) {
|
|
123
|
-
// A stale ctx proxy after session replacement may throw on any getter;
|
|
124
|
-
// the cell for a replaced session is abandoned regardless.
|
|
125
|
-
if (!isStaleCtxError(e)) throw e;
|
|
126
|
-
}
|
|
127
|
-
todoOverlay?.dispose();
|
|
128
|
-
todoOverlay = undefined;
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
// Reads getTodos() at render time; do NOT call replayFromBranch here
|
|
132
|
-
// (branch is stale — message_end runs after tool_execution_end).
|
|
133
|
-
pi.on("tool_execution_end", async (event) => {
|
|
134
|
-
if (event.toolName !== TOOL_NAME || event.isError) return;
|
|
135
|
-
todoOverlay?.update();
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
pi.on("agent_start", async () => {
|
|
139
|
-
todoOverlay?.hideCompletedTasksFromPreviousTurn();
|
|
140
|
-
todoOverlay?.onAgentTurnStart();
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
// Run auto-clear BEFORE onAgentTurnEnd so the overlay's completed-tracking
|
|
144
|
-
// sets (pendingHide, hiddenCompleted) are still valid for any future logic
|
|
145
|
-
// in onAgentTurnEnd that references them. The overlay resets its display
|
|
146
|
-
// state separately at session lifecycle boundaries.
|
|
147
|
-
pi.on("agent_end", async (_event, ctx) => {
|
|
148
|
-
autoClearIfNoActiveTasks(ctx.sessionManager.getSessionId());
|
|
149
|
-
todoOverlay?.onAgentTurnEnd();
|
|
150
|
-
});
|
|
151
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* rpiv-todo — Pi extension. Registers the `todo` tool, `/todos` slash
|
|
3
|
+
* command, and the persistent TodoOverlay widget.
|
|
4
|
+
*
|
|
5
|
+
* TUI chrome strings localize at render time via the i18n bridge. Strings are
|
|
6
|
+
* registered with rpiv-i18n here, once, at module init — but only when the
|
|
7
|
+
* SDK is actually installed. If `@juicesharp/rpiv-i18n` is missing (standalone
|
|
8
|
+
* install of just this package), the dynamic-load shim no-ops and the bridge's
|
|
9
|
+
* `t(key, fallback)` returns the inline English literal at every call site.
|
|
10
|
+
* The extension stays online either way.
|
|
11
|
+
*
|
|
12
|
+
* Adding a locale: drop `locales/<code>.json` next to en.json (mirroring the
|
|
13
|
+
* key set). No edit needed here — `registerLocalesFromDir` iterates
|
|
14
|
+
* `SUPPORTED_LOCALES` from the SDK. See `@juicesharp/rpiv-i18n` README →
|
|
15
|
+
* "Contributing translations" for the full convention.
|
|
16
|
+
*
|
|
17
|
+
* Extracted from rpiv-pi@7525a5d. Tool name "todo" and widget key
|
|
18
|
+
* "rpiv-todos" preserved verbatim so existing session history replays
|
|
19
|
+
* correctly after upgrade.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
23
|
+
import { I18N_NAMESPACE } from "./state/i18n-bridge.js";
|
|
24
|
+
import { replayFromBranch } from "./state/replay.js";
|
|
25
|
+
import { dropState, emptyState, getState, replaceState } from "./state/store.js";
|
|
26
|
+
import { registerTodosCommand, registerTodoTool, TOOL_NAME } from "./todo.js";
|
|
27
|
+
import { TodoOverlay } from "./todo-overlay.js";
|
|
28
|
+
|
|
29
|
+
type I18nLoader = {
|
|
30
|
+
registerLocalesFromDir: (namespace: string, packageUrl: string, options?: { label?: string }) => void;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
// Dynamic import keeps `@juicesharp/rpiv-i18n` a soft optional peer: when the
|
|
34
|
+
// SDK is installed alongside this package the strings register and
|
|
35
|
+
// `/languages` flips them live; when it isn't, the import rejects here, we
|
|
36
|
+
// no-op, and the bridge's English-fallback shim keeps the extension online.
|
|
37
|
+
//
|
|
38
|
+
// The `/loader` subpath is used instead of the SDK entry so the i18n-ui +
|
|
39
|
+
// pi-tui modules are not pulled into our load graph just to register strings.
|
|
40
|
+
try {
|
|
41
|
+
const sdk = (await import("@juicesharp/rpiv-i18n/loader")) as I18nLoader;
|
|
42
|
+
sdk.registerLocalesFromDir(I18N_NAMESPACE, import.meta.url, { label: "rpiv-todo" });
|
|
43
|
+
} catch {
|
|
44
|
+
// SDK absent — extension still loads with English-only UI.
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// pi-core's ExtensionRunner throws this exact phrase from an invalidated ctx
|
|
48
|
+
// proxy after session replacement/reload. Match the stable substring so genuine
|
|
49
|
+
// replay bugs still propagate instead of being silently swallowed.
|
|
50
|
+
function isStaleCtxError(e: unknown): boolean {
|
|
51
|
+
return /stale after session replacement/.test(String(e));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export default function (pi: ExtensionAPI) {
|
|
55
|
+
// Todo overlay widget — constructed lazily at the first session_start with UI.
|
|
56
|
+
let todoOverlay: TodoOverlay | undefined;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* If no active tasks remain (all completed, deleted, or empty), reset the
|
|
60
|
+
* state to empty. Called at agent_end and after replay on session lifecycle
|
|
61
|
+
* events so stale completed tasks don't persist across turns.
|
|
62
|
+
*
|
|
63
|
+
* Note: clearing is in-memory only (no tool result written to the branch).
|
|
64
|
+
* Session lifecycle handlers re-check on replay so the empty state survives
|
|
65
|
+
* compaction and session transitions. If a future pi-core ordering change
|
|
66
|
+
* skips those lifecycle events, completed tasks would reappear.
|
|
67
|
+
*/
|
|
68
|
+
function autoClearIfNoActiveTasks(sessionId: string): void {
|
|
69
|
+
const state = getState(sessionId);
|
|
70
|
+
if (!state.tasks.some((t) => t.status === "pending" || t.status === "in_progress")) {
|
|
71
|
+
replaceState(sessionId, emptyState());
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
registerTodoTool(pi);
|
|
76
|
+
registerTodosCommand(pi);
|
|
77
|
+
|
|
78
|
+
pi.on("session_start", async (_event, ctx) => {
|
|
79
|
+
const sessionId = ctx.sessionManager.getSessionId();
|
|
80
|
+
replaceState(sessionId, replayFromBranch(ctx));
|
|
81
|
+
autoClearIfNoActiveTasks(sessionId);
|
|
82
|
+
if (ctx.hasUI) {
|
|
83
|
+
todoOverlay ??= new TodoOverlay();
|
|
84
|
+
todoOverlay.setSession(sessionId);
|
|
85
|
+
todoOverlay.setUICtx(ctx.ui);
|
|
86
|
+
todoOverlay.resetCompletedDisplayState();
|
|
87
|
+
todoOverlay.update();
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
pi.on("session_compact", async (_event, ctx) => {
|
|
92
|
+
// Auto-compaction races session disposal: pi-core invalidates the
|
|
93
|
+
// extension runner while still emitting session_compact, so `ctx` may be
|
|
94
|
+
// a dead proxy whose getters throw the stale error. The compacting session
|
|
95
|
+
// is being discarded — the replacement session's session_start replays
|
|
96
|
+
// state — so keep current state on a stale ctx. Other errors are real
|
|
97
|
+
// replay bugs and must propagate.
|
|
98
|
+
try {
|
|
99
|
+
replaceState(ctx.sessionManager.getSessionId(), replayFromBranch(ctx));
|
|
100
|
+
} catch (e) {
|
|
101
|
+
if (!isStaleCtxError(e)) throw e;
|
|
102
|
+
}
|
|
103
|
+
autoClearIfNoActiveTasks(ctx.sessionManager.getSessionId());
|
|
104
|
+
todoOverlay?.resetCompletedDisplayState();
|
|
105
|
+
todoOverlay?.update();
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
pi.on("session_tree", async (_event, ctx) => {
|
|
109
|
+
try {
|
|
110
|
+
replaceState(ctx.sessionManager.getSessionId(), replayFromBranch(ctx));
|
|
111
|
+
} catch (e) {
|
|
112
|
+
if (!isStaleCtxError(e)) throw e;
|
|
113
|
+
}
|
|
114
|
+
autoClearIfNoActiveTasks(ctx.sessionManager.getSessionId());
|
|
115
|
+
todoOverlay?.resetCompletedDisplayState();
|
|
116
|
+
todoOverlay?.update();
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
pi.on("session_shutdown", async (_event, ctx) => {
|
|
120
|
+
try {
|
|
121
|
+
dropState(ctx.sessionManager.getSessionId());
|
|
122
|
+
} catch (e) {
|
|
123
|
+
// A stale ctx proxy after session replacement may throw on any getter;
|
|
124
|
+
// the cell for a replaced session is abandoned regardless.
|
|
125
|
+
if (!isStaleCtxError(e)) throw e;
|
|
126
|
+
}
|
|
127
|
+
todoOverlay?.dispose();
|
|
128
|
+
todoOverlay = undefined;
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
// Reads getTodos() at render time; do NOT call replayFromBranch here
|
|
132
|
+
// (branch is stale — message_end runs after tool_execution_end).
|
|
133
|
+
pi.on("tool_execution_end", async (event) => {
|
|
134
|
+
if (event.toolName !== TOOL_NAME || event.isError) return;
|
|
135
|
+
todoOverlay?.update();
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
pi.on("agent_start", async () => {
|
|
139
|
+
todoOverlay?.hideCompletedTasksFromPreviousTurn();
|
|
140
|
+
todoOverlay?.onAgentTurnStart();
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
// Run auto-clear BEFORE onAgentTurnEnd so the overlay's completed-tracking
|
|
144
|
+
// sets (pendingHide, hiddenCompleted) are still valid for any future logic
|
|
145
|
+
// in onAgentTurnEnd that references them. The overlay resets its display
|
|
146
|
+
// state separately at session lifecycle boundaries.
|
|
147
|
+
pi.on("agent_end", async (_event, ctx) => {
|
|
148
|
+
autoClearIfNoActiveTasks(ctx.sessionManager.getSessionId());
|
|
149
|
+
todoOverlay?.onAgentTurnEnd();
|
|
150
|
+
});
|
|
151
|
+
}
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
# Per-extension installer — Windows / PowerShell
|
|
3
3
|
# Installs npm dependencies for this extension. No-op if no package.json.
|
|
4
4
|
$ErrorActionPreference = "Stop"
|
|
5
|
+
# Drop npm_config_allow_scripts inherited from a parent npm/npx process:
|
|
6
|
+
# npm >=11 rejects it for project installs (EALLOWSCRIPTS). File config still applies.
|
|
7
|
+
Remove-Item Env:\npm_config_allow_scripts -ErrorAction SilentlyContinue
|
|
8
|
+
Remove-Item Env:\NPM_CONFIG_ALLOW_SCRIPTS -ErrorAction SilentlyContinue
|
|
5
9
|
$extDir = $PSScriptRoot
|
|
6
10
|
if (-not $extDir) { $extDir = Split-Path -Parent $MyInvocation.MyCommand.Path }
|
|
7
11
|
if (-not (Test-Path "$extDir/package.json")) {
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
# Per-extension installer — macOS / Linux
|
|
3
3
|
# Installs npm dependencies for this extension. No-op if no package.json.
|
|
4
4
|
set -eu
|
|
5
|
+
# Drop npm_config_allow_scripts inherited from a parent npm/npx process:
|
|
6
|
+
# npm >=11 rejects it for project installs (EALLOWSCRIPTS). File config still applies.
|
|
7
|
+
unset npm_config_allow_scripts NPM_CONFIG_ALLOW_SCRIPTS 2>/dev/null || true
|
|
5
8
|
EXT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
6
9
|
if [ ! -f "$EXT_DIR/package.json" ]; then
|
|
7
10
|
echo " · no package.json — skipping"
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
{
|
|
2
|
-
"_meta.notes": "Auto-translated draft. Native-speaker review welcome via PR. Unicode box-drawing characters (──) stay untranslated. Note: 'overlay.more' renders as '+5 weitere' which is grammatically loose for plural agreement — accepted for badge brevity.",
|
|
3
|
-
|
|
4
|
-
"status.pending": "ausstehend",
|
|
5
|
-
"status.in_progress": "in Bearbeitung",
|
|
6
|
-
"status.completed": "erledigt",
|
|
7
|
-
"status.deleted": "gelöscht",
|
|
8
|
-
|
|
9
|
-
"overlay.heading": "Todos",
|
|
10
|
-
"overlay.more": "weitere",
|
|
11
|
-
|
|
12
|
-
"command.no_todos": "Noch keine Todos. Bitte den Agenten, welche hinzuzufügen!",
|
|
13
|
-
"command.requires_interactive": "/todos erfordert den interaktiven Modus",
|
|
14
|
-
"command.section.pending": "── Ausstehend ──",
|
|
15
|
-
"command.section.in_progress": "── In Bearbeitung ──",
|
|
16
|
-
"command.section.completed": "── Erledigt ──"
|
|
17
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"_meta.notes": "Auto-translated draft. Native-speaker review welcome via PR. Unicode box-drawing characters (──) stay untranslated. Note: 'overlay.more' renders as '+5 weitere' which is grammatically loose for plural agreement — accepted for badge brevity.",
|
|
3
|
+
|
|
4
|
+
"status.pending": "ausstehend",
|
|
5
|
+
"status.in_progress": "in Bearbeitung",
|
|
6
|
+
"status.completed": "erledigt",
|
|
7
|
+
"status.deleted": "gelöscht",
|
|
8
|
+
|
|
9
|
+
"overlay.heading": "Todos",
|
|
10
|
+
"overlay.more": "weitere",
|
|
11
|
+
|
|
12
|
+
"command.no_todos": "Noch keine Todos. Bitte den Agenten, welche hinzuzufügen!",
|
|
13
|
+
"command.requires_interactive": "/todos erfordert den interaktiven Modus",
|
|
14
|
+
"command.section.pending": "── Ausstehend ──",
|
|
15
|
+
"command.section.in_progress": "── In Bearbeitung ──",
|
|
16
|
+
"command.section.completed": "── Erledigt ──"
|
|
17
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
{
|
|
2
|
-
"status.pending": "pending",
|
|
3
|
-
"status.in_progress": "in progress",
|
|
4
|
-
"status.completed": "completed",
|
|
5
|
-
"status.deleted": "deleted",
|
|
6
|
-
|
|
7
|
-
"overlay.heading": "Todos",
|
|
8
|
-
"overlay.more": "more",
|
|
9
|
-
|
|
10
|
-
"command.no_todos": "No todos yet. Ask the agent to add some!",
|
|
11
|
-
"command.requires_interactive": "/todos requires interactive mode",
|
|
12
|
-
"command.section.pending": "── Pending ──",
|
|
13
|
-
"command.section.in_progress": "── In Progress ──",
|
|
14
|
-
"command.section.completed": "── Completed ──"
|
|
15
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"status.pending": "pending",
|
|
3
|
+
"status.in_progress": "in progress",
|
|
4
|
+
"status.completed": "completed",
|
|
5
|
+
"status.deleted": "deleted",
|
|
6
|
+
|
|
7
|
+
"overlay.heading": "Todos",
|
|
8
|
+
"overlay.more": "more",
|
|
9
|
+
|
|
10
|
+
"command.no_todos": "No todos yet. Ask the agent to add some!",
|
|
11
|
+
"command.requires_interactive": "/todos requires interactive mode",
|
|
12
|
+
"command.section.pending": "── Pending ──",
|
|
13
|
+
"command.section.in_progress": "── In Progress ──",
|
|
14
|
+
"command.section.completed": "── Completed ──"
|
|
15
|
+
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
{
|
|
2
|
-
"_meta.notes": "Auto-translated draft. Native-speaker review welcome via PR. Unicode box-drawing characters (──) stay untranslated.",
|
|
3
|
-
|
|
4
|
-
"status.pending": "pendientes",
|
|
5
|
-
"status.in_progress": "en curso",
|
|
6
|
-
"status.completed": "completadas",
|
|
7
|
-
"status.deleted": "eliminada",
|
|
8
|
-
|
|
9
|
-
"overlay.heading": "Tareas",
|
|
10
|
-
"overlay.more": "más",
|
|
11
|
-
|
|
12
|
-
"command.no_todos": "Sin tareas aún. ¡Pídele al agente que añada algunas!",
|
|
13
|
-
"command.requires_interactive": "/todos requiere modo interactivo",
|
|
14
|
-
"command.section.pending": "── Pendientes ──",
|
|
15
|
-
"command.section.in_progress": "── En curso ──",
|
|
16
|
-
"command.section.completed": "── Completadas ──"
|
|
17
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"_meta.notes": "Auto-translated draft. Native-speaker review welcome via PR. Unicode box-drawing characters (──) stay untranslated.",
|
|
3
|
+
|
|
4
|
+
"status.pending": "pendientes",
|
|
5
|
+
"status.in_progress": "en curso",
|
|
6
|
+
"status.completed": "completadas",
|
|
7
|
+
"status.deleted": "eliminada",
|
|
8
|
+
|
|
9
|
+
"overlay.heading": "Tareas",
|
|
10
|
+
"overlay.more": "más",
|
|
11
|
+
|
|
12
|
+
"command.no_todos": "Sin tareas aún. ¡Pídele al agente que añada algunas!",
|
|
13
|
+
"command.requires_interactive": "/todos requiere modo interactivo",
|
|
14
|
+
"command.section.pending": "── Pendientes ──",
|
|
15
|
+
"command.section.in_progress": "── En curso ──",
|
|
16
|
+
"command.section.completed": "── Completadas ──"
|
|
17
|
+
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
{
|
|
2
|
-
"_meta.notes": "Auto-translated draft. Native-speaker review welcome via PR. Unicode box-drawing characters (──) stay untranslated.",
|
|
3
|
-
|
|
4
|
-
"status.pending": "en attente",
|
|
5
|
-
"status.in_progress": "en cours",
|
|
6
|
-
"status.completed": "terminées",
|
|
7
|
-
"status.deleted": "supprimée",
|
|
8
|
-
|
|
9
|
-
"overlay.heading": "Tâches",
|
|
10
|
-
"overlay.more": "autres",
|
|
11
|
-
|
|
12
|
-
"command.no_todos": "Pas encore de tâches. Demandez à l'agent d'en ajouter !",
|
|
13
|
-
"command.requires_interactive": "/todos nécessite le mode interactif",
|
|
14
|
-
"command.section.pending": "── En attente ──",
|
|
15
|
-
"command.section.in_progress": "── En cours ──",
|
|
16
|
-
"command.section.completed": "── Terminées ──"
|
|
17
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"_meta.notes": "Auto-translated draft. Native-speaker review welcome via PR. Unicode box-drawing characters (──) stay untranslated.",
|
|
3
|
+
|
|
4
|
+
"status.pending": "en attente",
|
|
5
|
+
"status.in_progress": "en cours",
|
|
6
|
+
"status.completed": "terminées",
|
|
7
|
+
"status.deleted": "supprimée",
|
|
8
|
+
|
|
9
|
+
"overlay.heading": "Tâches",
|
|
10
|
+
"overlay.more": "autres",
|
|
11
|
+
|
|
12
|
+
"command.no_todos": "Pas encore de tâches. Demandez à l'agent d'en ajouter !",
|
|
13
|
+
"command.requires_interactive": "/todos nécessite le mode interactif",
|
|
14
|
+
"command.section.pending": "── En attente ──",
|
|
15
|
+
"command.section.in_progress": "── En cours ──",
|
|
16
|
+
"command.section.completed": "── Terminées ──"
|
|
17
|
+
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
{
|
|
2
|
-
"_meta.notes": "Auto-translated draft. Native-speaker review welcome via PR. Unicode box-drawing characters (──) stay untranslated.",
|
|
3
|
-
|
|
4
|
-
"status.pending": "pendentes",
|
|
5
|
-
"status.in_progress": "em andamento",
|
|
6
|
-
"status.completed": "concluídas",
|
|
7
|
-
"status.deleted": "excluída",
|
|
8
|
-
|
|
9
|
-
"overlay.heading": "Tarefas",
|
|
10
|
-
"overlay.more": "mais",
|
|
11
|
-
|
|
12
|
-
"command.no_todos": "Nenhuma tarefa ainda. Peça ao agente para adicionar algumas!",
|
|
13
|
-
"command.requires_interactive": "/todos requer modo interativo",
|
|
14
|
-
"command.section.pending": "── Pendentes ──",
|
|
15
|
-
"command.section.in_progress": "── Em andamento ──",
|
|
16
|
-
"command.section.completed": "── Concluídas ──"
|
|
17
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"_meta.notes": "Auto-translated draft. Native-speaker review welcome via PR. Unicode box-drawing characters (──) stay untranslated.",
|
|
3
|
+
|
|
4
|
+
"status.pending": "pendentes",
|
|
5
|
+
"status.in_progress": "em andamento",
|
|
6
|
+
"status.completed": "concluídas",
|
|
7
|
+
"status.deleted": "excluída",
|
|
8
|
+
|
|
9
|
+
"overlay.heading": "Tarefas",
|
|
10
|
+
"overlay.more": "mais",
|
|
11
|
+
|
|
12
|
+
"command.no_todos": "Nenhuma tarefa ainda. Peça ao agente para adicionar algumas!",
|
|
13
|
+
"command.requires_interactive": "/todos requer modo interativo",
|
|
14
|
+
"command.section.pending": "── Pendentes ──",
|
|
15
|
+
"command.section.in_progress": "── Em andamento ──",
|
|
16
|
+
"command.section.completed": "── Concluídas ──"
|
|
17
|
+
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
{
|
|
2
|
-
"_meta.notes": "Auto-translated draft. Native-speaker review welcome via PR. Unicode box-drawing characters (──) stay untranslated.",
|
|
3
|
-
|
|
4
|
-
"status.pending": "pendentes",
|
|
5
|
-
"status.in_progress": "em curso",
|
|
6
|
-
"status.completed": "concluídas",
|
|
7
|
-
"status.deleted": "eliminada",
|
|
8
|
-
|
|
9
|
-
"overlay.heading": "Tarefas",
|
|
10
|
-
"overlay.more": "mais",
|
|
11
|
-
|
|
12
|
-
"command.no_todos": "Sem tarefas ainda. Peça ao agente para adicionar algumas!",
|
|
13
|
-
"command.requires_interactive": "/todos requer modo interativo",
|
|
14
|
-
"command.section.pending": "── Pendentes ──",
|
|
15
|
-
"command.section.in_progress": "── Em curso ──",
|
|
16
|
-
"command.section.completed": "── Concluídas ──"
|
|
17
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"_meta.notes": "Auto-translated draft. Native-speaker review welcome via PR. Unicode box-drawing characters (──) stay untranslated.",
|
|
3
|
+
|
|
4
|
+
"status.pending": "pendentes",
|
|
5
|
+
"status.in_progress": "em curso",
|
|
6
|
+
"status.completed": "concluídas",
|
|
7
|
+
"status.deleted": "eliminada",
|
|
8
|
+
|
|
9
|
+
"overlay.heading": "Tarefas",
|
|
10
|
+
"overlay.more": "mais",
|
|
11
|
+
|
|
12
|
+
"command.no_todos": "Sem tarefas ainda. Peça ao agente para adicionar algumas!",
|
|
13
|
+
"command.requires_interactive": "/todos requer modo interativo",
|
|
14
|
+
"command.section.pending": "── Pendentes ──",
|
|
15
|
+
"command.section.in_progress": "── Em curso ──",
|
|
16
|
+
"command.section.completed": "── Concluídas ──"
|
|
17
|
+
}
|