prompsit-cli 26.225.1206 → 26.227.2006
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 +10 -4
- package/dist/api/auth-session.d.ts +11 -11
- package/dist/api/auth-session.d.ts.map +1 -1
- package/dist/api/auth-session.js +21 -17
- package/dist/api/auth-session.js.map +1 -1
- package/dist/api/client.d.ts +4 -4
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +8 -8
- package/dist/api/client.js.map +1 -1
- package/dist/api/curl.d.ts +30 -0
- package/dist/api/curl.d.ts.map +1 -0
- package/dist/api/curl.js +115 -0
- package/dist/api/curl.js.map +1 -0
- package/dist/api/errors.d.ts +2 -3
- package/dist/api/errors.d.ts.map +1 -1
- package/dist/api/errors.js +4 -2
- package/dist/api/errors.js.map +1 -1
- package/dist/api/http-utils.d.ts +5 -0
- package/dist/api/http-utils.d.ts.map +1 -0
- package/dist/api/http-utils.js +19 -0
- package/dist/api/http-utils.js.map +1 -0
- package/dist/api/models.d.ts +135 -89
- package/dist/api/models.d.ts.map +1 -1
- package/dist/api/models.js +62 -72
- package/dist/api/models.js.map +1 -1
- package/dist/api/resources/data.d.ts +3 -5
- package/dist/api/resources/data.d.ts.map +1 -1
- package/dist/api/resources/data.js +11 -12
- package/dist/api/resources/data.js.map +1 -1
- package/dist/api/resources/discovery.d.ts +26 -0
- package/dist/api/resources/discovery.d.ts.map +1 -0
- package/dist/api/resources/discovery.js +46 -0
- package/dist/api/resources/discovery.js.map +1 -0
- package/dist/api/resources/evaluation.d.ts +9 -12
- package/dist/api/resources/evaluation.d.ts.map +1 -1
- package/dist/api/resources/evaluation.js +45 -20
- package/dist/api/resources/evaluation.js.map +1 -1
- package/dist/api/resources/formats.d.ts +1 -1
- package/dist/api/resources/formats.js +2 -2
- package/dist/api/resources/formats.js.map +1 -1
- package/dist/api/resources/jobs.d.ts +7 -8
- package/dist/api/resources/jobs.d.ts.map +1 -1
- package/dist/api/resources/jobs.js +10 -49
- package/dist/api/resources/jobs.js.map +1 -1
- package/dist/api/resources/languages.d.ts +25 -0
- package/dist/api/resources/languages.d.ts.map +1 -0
- package/dist/api/resources/languages.js +44 -0
- package/dist/api/resources/languages.js.map +1 -0
- package/dist/api/resources/translation.d.ts +8 -16
- package/dist/api/resources/translation.d.ts.map +1 -1
- package/dist/api/resources/translation.js +11 -15
- package/dist/api/resources/translation.js.map +1 -1
- package/dist/api/sse-client.d.ts +10 -16
- package/dist/api/sse-client.d.ts.map +1 -1
- package/dist/api/sse-client.js +158 -197
- package/dist/api/sse-client.js.map +1 -1
- package/dist/api/sse-models.js +1 -1
- package/dist/api/sse-models.js.map +1 -1
- package/dist/api/trace.js +1 -1
- package/dist/api/trace.js.map +1 -1
- package/dist/api/transport.d.ts +28 -1
- package/dist/api/transport.d.ts.map +1 -1
- package/dist/api/transport.js +89 -17
- package/dist/api/transport.js.map +1 -1
- package/dist/cli/arg-order.d.ts +2 -0
- package/dist/cli/arg-order.d.ts.map +1 -1
- package/dist/cli/arg-order.js +2 -0
- package/dist/cli/arg-order.js.map +1 -1
- package/dist/cli/exit-codes.d.ts +0 -2
- package/dist/cli/exit-codes.d.ts.map +1 -1
- package/dist/cli/exit-codes.js +0 -2
- package/dist/cli/exit-codes.js.map +1 -1
- package/dist/cli/exit.d.ts +4 -4
- package/dist/cli/exit.d.ts.map +1 -1
- package/dist/cli/exit.js +4 -4
- package/dist/cli/exit.js.map +1 -1
- package/dist/cli/prompts.d.ts +0 -2
- package/dist/cli/prompts.d.ts.map +1 -1
- package/dist/cli/prompts.js +1 -1
- package/dist/cli/prompts.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +0 -1
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/batch-processor.d.ts +38 -0
- package/dist/commands/batch-processor.d.ts.map +1 -0
- package/dist/commands/batch-processor.js +73 -0
- package/dist/commands/batch-processor.js.map +1 -0
- package/dist/commands/config/api-url.d.ts.map +1 -1
- package/dist/commands/config/api-url.js +4 -1
- package/dist/commands/config/api-url.js.map +1 -1
- package/dist/commands/config/command.d.ts.map +1 -1
- package/dist/commands/config/command.js +3 -2
- package/dist/commands/config/command.js.map +1 -1
- package/dist/commands/config/language.d.ts.map +1 -1
- package/dist/commands/config/language.js.map +1 -1
- package/dist/commands/config/reset.d.ts.map +1 -1
- package/dist/commands/config/reset.js.map +1 -1
- package/dist/commands/config/shared.js +3 -3
- package/dist/commands/config/shared.js.map +1 -1
- package/dist/commands/config/show.d.ts.map +1 -1
- package/dist/commands/config/show.js +0 -13
- package/dist/commands/config/show.js.map +1 -1
- package/dist/commands/data.d.ts.map +1 -1
- package/dist/commands/data.js +241 -68
- package/dist/commands/data.js.map +1 -1
- package/dist/commands/evaluate.d.ts.map +1 -1
- package/dist/commands/evaluate.js +111 -29
- package/dist/commands/evaluate.js.map +1 -1
- package/dist/commands/formats.d.ts +1 -1
- package/dist/commands/formats.d.ts.map +1 -1
- package/dist/commands/formats.js +5 -12
- package/dist/commands/formats.js.map +1 -1
- package/dist/commands/health.d.ts +1 -1
- package/dist/commands/health.d.ts.map +1 -1
- package/dist/commands/health.js +3 -10
- package/dist/commands/health.js.map +1 -1
- package/dist/commands/job-tracking.d.ts +13 -5
- package/dist/commands/job-tracking.d.ts.map +1 -1
- package/dist/commands/job-tracking.js +25 -18
- package/dist/commands/job-tracking.js.map +1 -1
- package/dist/commands/languages.d.ts +12 -0
- package/dist/commands/languages.d.ts.map +1 -0
- package/dist/commands/languages.js +48 -0
- package/dist/commands/languages.js.map +1 -0
- package/dist/commands/mappers.d.ts +15 -3
- package/dist/commands/mappers.d.ts.map +1 -1
- package/dist/commands/mappers.js +38 -18
- package/dist/commands/mappers.js.map +1 -1
- package/dist/commands/progress-animator.d.ts +2 -1
- package/dist/commands/progress-animator.d.ts.map +1 -1
- package/dist/commands/progress-animator.js +4 -2
- package/dist/commands/progress-animator.js.map +1 -1
- package/dist/commands/translate.d.ts.map +1 -1
- package/dist/commands/translate.js +149 -87
- package/dist/commands/translate.js.map +1 -1
- package/dist/config/credentials.d.ts +11 -87
- package/dist/config/credentials.d.ts.map +1 -1
- package/dist/config/credentials.js +28 -87
- package/dist/config/credentials.js.map +1 -1
- package/dist/config/env-parser.d.ts.map +1 -1
- package/dist/config/env-parser.js +3 -2
- package/dist/config/env-parser.js.map +1 -1
- package/dist/config/file-utils.js +1 -1
- package/dist/config/file-utils.js.map +1 -1
- package/dist/config/index.d.ts +4 -7
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +6 -12
- package/dist/config/index.js.map +1 -1
- package/dist/config/schemas.d.ts +4 -33
- package/dist/config/schemas.d.ts.map +1 -1
- package/dist/config/schemas.js +14 -19
- package/dist/config/schemas.js.map +1 -1
- package/dist/config/settings.d.ts +4 -4
- package/dist/config/settings.d.ts.map +1 -1
- package/dist/config/settings.js +16 -21
- package/dist/config/settings.js.map +1 -1
- package/dist/config/toml-io.js +1 -1
- package/dist/config/toml-io.js.map +1 -1
- package/dist/constants.d.ts +10 -9
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +10 -9
- package/dist/constants.js.map +1 -1
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/catalog.js +6 -8
- package/dist/errors/catalog.js.map +1 -1
- package/dist/errors/contracts.d.ts.map +1 -1
- package/dist/errors/contracts.js +2 -3
- package/dist/errors/contracts.js.map +1 -1
- package/dist/i18n/cache.d.ts +0 -2
- package/dist/i18n/cache.d.ts.map +1 -1
- package/dist/i18n/cache.js +4 -4
- package/dist/i18n/cache.js.map +1 -1
- package/dist/i18n/catalog.d.ts +34 -37
- package/dist/i18n/catalog.d.ts.map +1 -1
- package/dist/i18n/catalog.js +38 -40
- package/dist/i18n/catalog.js.map +1 -1
- package/dist/i18n/index.d.ts +0 -1
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +0 -3
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/translator-adapter.js +1 -1
- package/dist/i18n/translator-adapter.js.map +1 -1
- package/dist/i18n/translator.d.ts.map +1 -1
- package/dist/i18n/translator.js +1 -0
- package/dist/i18n/translator.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/logging/console-handler.js +1 -1
- package/dist/logging/console-handler.js.map +1 -1
- package/dist/logging/file-handler.d.ts.map +1 -1
- package/dist/logging/file-handler.js +4 -5
- package/dist/logging/file-handler.js.map +1 -1
- package/dist/logging/index.d.ts +2 -2
- package/dist/logging/index.d.ts.map +1 -1
- package/dist/logging/index.js +1 -1
- package/dist/logging/index.js.map +1 -1
- package/dist/logging/logger.d.ts +18 -22
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +38 -64
- package/dist/logging/logger.js.map +1 -1
- package/dist/logging/loki-handler.js +1 -1
- package/dist/logging/loki-handler.js.map +1 -1
- package/dist/logging/setup.d.ts +4 -3
- package/dist/logging/setup.d.ts.map +1 -1
- package/dist/logging/setup.js +136 -33
- package/dist/logging/setup.js.map +1 -1
- package/dist/output/ansi-utils.d.ts +13 -0
- package/dist/output/ansi-utils.d.ts.map +1 -0
- package/dist/output/ansi-utils.js +37 -0
- package/dist/output/ansi-utils.js.map +1 -0
- package/dist/output/index.d.ts +2 -5
- package/dist/output/index.d.ts.map +1 -1
- package/dist/output/index.js +3 -2
- package/dist/output/index.js.map +1 -1
- package/dist/output/output-events.d.ts +0 -1
- package/dist/output/output-events.d.ts.map +1 -1
- package/dist/output/tables/catalog.d.ts +5 -2
- package/dist/output/tables/catalog.d.ts.map +1 -1
- package/dist/output/tables/catalog.js +65 -9
- package/dist/output/tables/catalog.js.map +1 -1
- package/dist/output/tables/evaluation.d.ts.map +1 -1
- package/dist/output/tables/evaluation.js +3 -0
- package/dist/output/tables/evaluation.js.map +1 -1
- package/dist/output/tables/health-status.d.ts.map +1 -1
- package/dist/output/tables/health-status.js +11 -7
- package/dist/output/tables/health-status.js.map +1 -1
- package/dist/output/tables/index.d.ts +3 -3
- package/dist/output/tables/index.d.ts.map +1 -1
- package/dist/output/tables/index.js +2 -2
- package/dist/output/tables/index.js.map +1 -1
- package/dist/output/tables/render.d.ts.map +1 -1
- package/dist/output/tables/render.js +2 -10
- package/dist/output/tables/render.js.map +1 -1
- package/dist/output/terminal.d.ts +1 -5
- package/dist/output/terminal.d.ts.map +1 -1
- package/dist/output/terminal.js +25 -24
- package/dist/output/terminal.js.map +1 -1
- package/dist/output/view-models.d.ts +28 -2
- package/dist/output/view-models.d.ts.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +21 -29
- package/dist/program.js.map +1 -1
- package/dist/repl/controller.d.ts.map +1 -1
- package/dist/repl/controller.js +82 -47
- package/dist/repl/controller.js.map +1 -1
- package/dist/repl/core/output-bridge.d.ts.map +1 -1
- package/dist/repl/core/output-bridge.js +6 -4
- package/dist/repl/core/output-bridge.js.map +1 -1
- package/dist/repl/core/progress-types.d.ts +1 -1
- package/dist/repl/core/progress-types.d.ts.map +1 -1
- package/dist/repl/core/progress-types.js +1 -1
- package/dist/repl/core/progress-types.js.map +1 -1
- package/dist/repl/examples.d.ts +5 -7
- package/dist/repl/examples.d.ts.map +1 -1
- package/dist/repl/examples.js +27 -14
- package/dist/repl/examples.js.map +1 -1
- package/dist/repl/executor.d.ts +2 -4
- package/dist/repl/executor.d.ts.map +1 -1
- package/dist/repl/executor.js +69 -58
- package/dist/repl/executor.js.map +1 -1
- package/dist/repl/help.d.ts +10 -3
- package/dist/repl/help.d.ts.map +1 -1
- package/dist/repl/help.js +31 -4
- package/dist/repl/help.js.map +1 -1
- package/dist/repl/history/command-history.js +5 -5
- package/dist/repl/history/command-history.js.map +1 -1
- package/dist/repl/history/output-render.d.ts +1 -3
- package/dist/repl/history/output-render.d.ts.map +1 -1
- package/dist/repl/history/output-render.js +4 -6
- package/dist/repl/history/output-render.js.map +1 -1
- package/dist/repl/history/output-store.d.ts.map +1 -1
- package/dist/repl/history/output-store.js +6 -3
- package/dist/repl/history/output-store.js.map +1 -1
- package/dist/repl/input/autocomplete-provider.d.ts.map +1 -1
- package/dist/repl/input/autocomplete-provider.js +1 -2
- package/dist/repl/input/autocomplete-provider.js.map +1 -1
- package/dist/repl/input/completer.d.ts +0 -2
- package/dist/repl/input/completer.d.ts.map +1 -1
- package/dist/repl/input/completer.js +9 -7
- package/dist/repl/input/completer.js.map +1 -1
- package/dist/repl/input/ghost-text.d.ts +1 -1
- package/dist/repl/input/ghost-text.d.ts.map +1 -1
- package/dist/repl/input/ghost-text.js +1 -1
- package/dist/repl/input/ghost-text.js.map +1 -1
- package/dist/repl/input/input-handler.d.ts.map +1 -1
- package/dist/repl/input/input-handler.js +21 -15
- package/dist/repl/input/input-handler.js.map +1 -1
- package/dist/repl/input/keybindings.d.ts +0 -5
- package/dist/repl/input/keybindings.d.ts.map +1 -1
- package/dist/repl/input/keybindings.js +0 -65
- package/dist/repl/input/keybindings.js.map +1 -1
- package/dist/repl/loop.d.ts +1 -2
- package/dist/repl/loop.d.ts.map +1 -1
- package/dist/repl/loop.js +14 -14
- package/dist/repl/loop.js.map +1 -1
- package/dist/repl/registry.d.ts +28 -20
- package/dist/repl/registry.d.ts.map +1 -1
- package/dist/repl/registry.js +229 -171
- package/dist/repl/registry.js.map +1 -1
- package/dist/repl/service.d.ts +1 -10
- package/dist/repl/service.d.ts.map +1 -1
- package/dist/repl/service.js +15 -26
- package/dist/repl/service.js.map +1 -1
- package/dist/repl/ui/components/curl-panel.js +4 -4
- package/dist/repl/ui/components/curl-panel.js.map +1 -1
- package/dist/repl/ui/components/ghost-text-editor.d.ts +4 -0
- package/dist/repl/ui/components/ghost-text-editor.d.ts.map +1 -1
- package/dist/repl/ui/components/ghost-text-editor.js +17 -6
- package/dist/repl/ui/components/ghost-text-editor.js.map +1 -1
- package/dist/repl/ui/components/history-component.d.ts.map +1 -1
- package/dist/repl/ui/components/history-component.js +7 -69
- package/dist/repl/ui/components/history-component.js.map +1 -1
- package/dist/repl/ui/components/progress-bar.js.map +1 -1
- package/dist/repl/ui/components/status-bar-line.js +1 -1
- package/dist/repl/ui/components/status-bar-line.js.map +1 -1
- package/dist/repl/ui/data.js +3 -3
- package/dist/repl/ui/data.js.map +1 -1
- package/dist/repl/ui/hint-state.d.ts +0 -1
- package/dist/repl/ui/hint-state.d.ts.map +1 -1
- package/dist/repl/ui/hint-state.js +1 -1
- package/dist/repl/ui/hint-state.js.map +1 -1
- package/dist/repl/ui/selection-utils.d.ts +28 -0
- package/dist/repl/ui/selection-utils.d.ts.map +1 -0
- package/dist/repl/ui/selection-utils.js +70 -0
- package/dist/repl/ui/selection-utils.js.map +1 -0
- package/dist/repl/ui/status-bar.d.ts +1 -4
- package/dist/repl/ui/status-bar.d.ts.map +1 -1
- package/dist/repl/ui/status-bar.js +6 -33
- package/dist/repl/ui/status-bar.js.map +1 -1
- package/dist/runtime/async-utils.d.ts +16 -0
- package/dist/runtime/async-utils.d.ts.map +1 -0
- package/dist/runtime/async-utils.js +40 -0
- package/dist/runtime/async-utils.js.map +1 -0
- package/dist/runtime/clipboard-win32.d.ts.map +1 -1
- package/dist/runtime/clipboard-win32.js +2 -1
- package/dist/runtime/clipboard-win32.js.map +1 -1
- package/dist/runtime/clipboard.d.ts.map +1 -1
- package/dist/runtime/clipboard.js +6 -2
- package/dist/runtime/clipboard.js.map +1 -1
- package/dist/runtime/external-transport.d.ts.map +1 -1
- package/dist/runtime/external-transport.js +1 -1
- package/dist/runtime/external-transport.js.map +1 -1
- package/dist/runtime/file-args.d.ts +38 -0
- package/dist/runtime/file-args.d.ts.map +1 -0
- package/dist/runtime/file-args.js +133 -0
- package/dist/runtime/file-args.js.map +1 -0
- package/dist/runtime/platform.d.ts +0 -2
- package/dist/runtime/platform.d.ts.map +1 -1
- package/dist/runtime/platform.js +0 -6
- package/dist/runtime/platform.js.map +1 -1
- package/dist/tui/settings-screen.d.ts +1 -13
- package/dist/tui/settings-screen.d.ts.map +1 -1
- package/dist/tui/settings-screen.js +46 -34
- package/dist/tui/settings-screen.js.map +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +3 -2
- package/dist/version.js.map +1 -1
- package/examples/sample.tmx +6 -0
- package/package.json +18 -7
|
@@ -17,8 +17,11 @@ export function loadHistory(maxEntries) {
|
|
|
17
17
|
if (!existsSync(path))
|
|
18
18
|
return [];
|
|
19
19
|
try {
|
|
20
|
-
const raw = readFileSync(path, "
|
|
21
|
-
const lines = raw
|
|
20
|
+
const raw = readFileSync(path, "utf8");
|
|
21
|
+
const lines = raw
|
|
22
|
+
.split("\n")
|
|
23
|
+
.map((line) => line.trim())
|
|
24
|
+
.filter(Boolean);
|
|
22
25
|
const parsed = [];
|
|
23
26
|
for (const line of lines) {
|
|
24
27
|
try {
|
|
@@ -44,7 +47,7 @@ export function appendHistory(item) {
|
|
|
44
47
|
if (!existsSync(dir)) {
|
|
45
48
|
mkdirSync(dir, { recursive: true });
|
|
46
49
|
}
|
|
47
|
-
appendFileSync(path, JSON.stringify(item) + "\n", "
|
|
50
|
+
appendFileSync(path, JSON.stringify(item) + "\n", { encoding: "utf8", flush: true });
|
|
48
51
|
}
|
|
49
52
|
catch {
|
|
50
53
|
// Non-critical: history persistence must never break REPL.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-store.js","sourceRoot":"","sources":["../../../src/repl/history/output-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAE1C,SAAS,kBAAkB;IACzB,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,YAAY,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,SAAS,GAAG,KAAgD,CAAC;IACnE,OAAO,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,UAAkB;IAC5C,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC;IAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"output-store.js","sourceRoot":"","sources":["../../../src/repl/history/output-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete-provider.d.ts","sourceRoot":"","sources":["../../../src/repl/input/autocomplete-provider.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"autocomplete-provider.d.ts","sourceRoot":"","sources":["../../../src/repl/input/autocomplete-provider.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAInF,qBAAa,wBAAyB,YAAW,oBAAoB;IACnE,cAAc,CACZ,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB;QAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IA0BvD,eAAe,CACb,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,MAAM,GACb;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;CAc9D"}
|
|
@@ -30,8 +30,7 @@ export class ReplAutocompleteProvider {
|
|
|
30
30
|
const beforePrefix = currentLine.slice(0, cursorCol - prefix.length);
|
|
31
31
|
const afterCursor = currentLine.slice(cursorCol);
|
|
32
32
|
const newLine = beforePrefix + item.value + afterCursor;
|
|
33
|
-
const newLines =
|
|
34
|
-
newLines[cursorLine] = newLine;
|
|
33
|
+
const newLines = lines.with(cursorLine, newLine);
|
|
35
34
|
return {
|
|
36
35
|
lines: newLines,
|
|
37
36
|
cursorLine,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete-provider.js","sourceRoot":"","sources":["../../../src/repl/input/autocomplete-provider.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,qEAAqE;AACrE,+EAA+E;
|
|
1
|
+
{"version":3,"file":"autocomplete-provider.js","sourceRoot":"","sources":["../../../src/repl/input/autocomplete-provider.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,qEAAqE;AACrE,+EAA+E;AAG/E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,OAAO,wBAAwB;IACnC,cAAc,CACZ,KAAe,EACf,UAAkB,EAClB,SAAiB;QAEjB,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAEzD,4CAA4C;QAC5C,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAE1D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,kFAAkF;YAClF,sFAAsF;YACtF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;gBAC1D,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAuB,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC3D,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,IAAI;gBACX,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;aACpC,CAAC,CAAC,CAAC;YACJ,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAC3B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CACb,KAAe,EACf,UAAkB,EAClB,SAAiB,EACjB,IAAsB,EACtB,MAAc;QAEd,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;QACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEjD,OAAO;YACL,KAAK,EAAE,QAAQ;YACf,UAAU;YACV,SAAS,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;SACnD,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import type { CompleterResult } from "node:readline";
|
|
2
|
-
/** Invalidate caches (e.g. after language change). */
|
|
3
|
-
export declare function invalidateCompleterCache(): void;
|
|
4
2
|
/**
|
|
5
3
|
* readline-compatible completer function.
|
|
6
4
|
* Returns [completions, line] where completions are matching command names.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completer.d.ts","sourceRoot":"","sources":["../../../src/repl/input/completer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"completer.d.ts","sourceRoot":"","sources":["../../../src/repl/input/completer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AA0CrD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CA2BvD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkEjE"}
|
|
@@ -11,11 +11,6 @@ function getTemplateCache() {
|
|
|
11
11
|
_templateCache ??= getTemplates();
|
|
12
12
|
return _templateCache;
|
|
13
13
|
}
|
|
14
|
-
/** Invalidate caches (e.g. after language change). */
|
|
15
|
-
export function invalidateCompleterCache() {
|
|
16
|
-
_dropdownCache = null;
|
|
17
|
-
_templateCache = null;
|
|
18
|
-
}
|
|
19
14
|
/**
|
|
20
15
|
* Fuzzy match score: lower is better. Returns -1 if no match.
|
|
21
16
|
* Ranking: exact match (0) > prefix (1) > contains (2) > fuzzy subsequence (3).
|
|
@@ -83,6 +78,12 @@ export function getTemplateSuggestion(text) {
|
|
|
83
78
|
const template = templates.get(cmd);
|
|
84
79
|
if (!template)
|
|
85
80
|
return null;
|
|
81
|
+
// Suppress template when user types non-template flags (before any quoted value).
|
|
82
|
+
// Template prefixes include flags like -s, -h, -t — only suppress for flag-only input.
|
|
83
|
+
const hasQuote = trimmed.includes('"');
|
|
84
|
+
if (!hasQuote && parts.length > 1 && parts.some((p, i) => i > 0 && p.startsWith("-"))) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
86
87
|
const fieldIdx = countQuotes(trimmed);
|
|
87
88
|
// Suppress when user types unquoted values (can't track position without quotes)
|
|
88
89
|
if (fieldIdx === 0 && parts.length > 2)
|
|
@@ -91,7 +92,8 @@ export function getTemplateSuggestion(text) {
|
|
|
91
92
|
const inField = fieldIdx % 2 === 1;
|
|
92
93
|
if (templateIdx >= template.length)
|
|
93
94
|
return null;
|
|
94
|
-
|
|
95
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- template guaranteed non-empty by earlier check
|
|
96
|
+
const [, lastField] = template.at(-1);
|
|
95
97
|
if (lastField === null && templateIdx >= template.length - 1 && !inField) {
|
|
96
98
|
return null;
|
|
97
99
|
}
|
|
@@ -99,7 +101,7 @@ export function getTemplateSuggestion(text) {
|
|
|
99
101
|
let hasFieldContent = false;
|
|
100
102
|
if (inField) {
|
|
101
103
|
const lastQuotePos = trimmed.lastIndexOf('"');
|
|
102
|
-
if (lastQuotePos
|
|
104
|
+
if (lastQuotePos !== -1 && lastQuotePos < trimmed.length - 1) {
|
|
103
105
|
hasFieldContent = true;
|
|
104
106
|
}
|
|
105
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completer.js","sourceRoot":"","sources":["../../../src/repl/input/completer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,8CAA8C;AAC9C,IAAI,cAAc,GAA+B,IAAI,CAAC;AACtD,IAAI,cAAc,GAAmD,IAAI,CAAC;AAE1E,SAAS,WAAW;IAClB,cAAc,KAAK,mBAAmB,EAAE,CAAC;IACzC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,gBAAgB;IACvB,cAAc,KAAK,YAAY,EAAE,CAAC;IAClC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"completer.js","sourceRoot":"","sources":["../../../src/repl/input/completer.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @returns Hint string (displayed in dim), or null if no suggestion.
|
|
5
5
|
*/
|
|
6
|
-
export declare function computeGhostText(lines: string[],
|
|
6
|
+
export declare function computeGhostText(lines: string[], _cursorLine: number, cursorCol: number): string | null;
|
|
7
7
|
//# sourceMappingURL=ghost-text.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ghost-text.d.ts","sourceRoot":"","sources":["../../../src/repl/input/ghost-text.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EAAE,EACf,
|
|
1
|
+
{"version":3,"file":"ghost-text.d.ts","sourceRoot":"","sources":["../../../src/repl/input/ghost-text.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EAAE,EACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CA4Bf"}
|
|
@@ -7,7 +7,7 @@ import { completer, getTemplateSuggestion } from "./completer.js";
|
|
|
7
7
|
*
|
|
8
8
|
* @returns Hint string (displayed in dim), or null if no suggestion.
|
|
9
9
|
*/
|
|
10
|
-
export function computeGhostText(lines,
|
|
10
|
+
export function computeGhostText(lines, _cursorLine, cursorCol) {
|
|
11
11
|
// Only single-line input, cursor at end of first line
|
|
12
12
|
if (lines.length > 1)
|
|
13
13
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ghost-text.js","sourceRoot":"","sources":["../../../src/repl/input/ghost-text.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,0DAA0D;AAC1D,iEAAiE;AAEjE,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAElE;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAe,EACf,
|
|
1
|
+
{"version":3,"file":"ghost-text.js","sourceRoot":"","sources":["../../../src/repl/input/ghost-text.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,0DAA0D;AAC1D,iEAAiE;AAEjE,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAElE;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAe,EACf,WAAmB,EACnB,SAAiB;IAEjB,sDAAsD;IACtD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE3C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IACjC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,iEAAiE;IACjE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/C,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;YACD,sDAAsD;YACtD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,GAAG,qBAAqB,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;gBAClD,IAAI,IAAI;oBAAE,OAAO,GAAG,GAAG,IAAI,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sDAAsD;IACtD,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-handler.d.ts","sourceRoot":"","sources":["../../../src/repl/input/input-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"input-handler.d.ts","sourceRoot":"","sources":["../../../src/repl/input/input-handler.ts"],"names":[],"mappings":"AASA,oEAAoE;AACpE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE;QACf,qBAAqB,IAAI,OAAO,CAAC;QACjC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;KACxC,GAAG,IAAI,CAAC;IACT,gBAAgB,EAAE;QAChB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,cAAc,IAAI,IAAI,CAAC;QACvB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/C,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAChD,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7C,eAAe,IAAI,MAAM,CAAC;KAC3B,GAAG,IAAI,CAAC;IACT,mBAAmB,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;IACjF,sBAAsB,IAAI,MAAM,CAAC;IACjC,aAAa,IAAI,IAAI,CAAC;IACtB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,kBAAkB,IAAI,IAAI,CAAC;IAC3B,aAAa,IAAI,IAAI,CAAC;IACtB,OAAO,IAAI,IAAI,CAAC;IAChB,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,YAAY,GAChB,CAAC,IAAI,EAAE,MAAM,KAAK;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAyDpD"}
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
// Extracted from controller.ts to keep the controller focused on lifecycle/wiring.
|
|
3
3
|
import { Key, matchesKey } from "@mariozechner/pi-tui";
|
|
4
4
|
import { showStatusHint } from "../ui/hint-state.js";
|
|
5
|
-
import {
|
|
5
|
+
import { isCurlEnabled } from "../../api/curl.js";
|
|
6
6
|
import { getRawCurl } from "../ui/curl-store.js";
|
|
7
|
-
import { handleCtrlC } from "./keybindings.js";
|
|
8
7
|
import { t } from "../../i18n/index.js";
|
|
9
8
|
/**
|
|
10
9
|
* Build the input listener callback for pi-tui's `addInputListener`.
|
|
@@ -23,18 +22,18 @@ export function createInputListener(ctx) {
|
|
|
23
22
|
ctx.requestRender(); // cycleValue mutates piItems but pi-tui won't re-render consumed input
|
|
24
23
|
return intercepted;
|
|
25
24
|
}
|
|
26
|
-
return
|
|
25
|
+
return; // Let SettingsList handle Up/Down/Space/Esc
|
|
27
26
|
}
|
|
28
27
|
// --- SGR mouse (ESC[<Btn;X;Y M|m) ---
|
|
29
|
-
if (data.startsWith("\
|
|
28
|
+
if (data.startsWith("\u001B[<")) {
|
|
30
29
|
handleSgrMouse(data, ctx);
|
|
31
30
|
return { consume: true };
|
|
32
31
|
}
|
|
33
32
|
// --- F8: copy raw curl to clipboard ---
|
|
34
33
|
if (matchesKey(data, Key.f8)) {
|
|
35
|
-
const raw =
|
|
34
|
+
const raw = isCurlEnabled() ? getRawCurl() : null;
|
|
36
35
|
if (raw) {
|
|
37
|
-
ctx.writeToClipboard(raw.
|
|
36
|
+
ctx.writeToClipboard(raw.replaceAll("\n", " \\\n"));
|
|
38
37
|
showStatusHint(t("repl.curl_panel.copied"));
|
|
39
38
|
}
|
|
40
39
|
ctx.requestRender();
|
|
@@ -56,12 +55,12 @@ export function createInputListener(ctx) {
|
|
|
56
55
|
// --- Esc ---
|
|
57
56
|
if (matchesKey(data, Key.escape)) {
|
|
58
57
|
if (ctx.editor?.isShowingAutocomplete()) {
|
|
59
|
-
return
|
|
58
|
+
return; // Let pi-tui close the dropdown
|
|
60
59
|
}
|
|
61
60
|
ctx.onEsc();
|
|
62
61
|
return { consume: true };
|
|
63
62
|
}
|
|
64
|
-
return
|
|
63
|
+
return;
|
|
65
64
|
};
|
|
66
65
|
}
|
|
67
66
|
// ── SGR mouse handling ──────────────────────────────────────────────
|
|
@@ -75,23 +74,29 @@ function handleSgrMouse(data, ctx) {
|
|
|
75
74
|
const y = Number.parseInt(yRaw, 10) - 1;
|
|
76
75
|
const isPress = action === "M";
|
|
77
76
|
const inHistory = y < ctx.computeHistoryMaxLines();
|
|
78
|
-
if (btn === 64) {
|
|
77
|
+
if (btn === 64) {
|
|
78
|
+
// scroll up
|
|
79
79
|
ctx.historyComponent?.scroll(3);
|
|
80
80
|
}
|
|
81
|
-
else if (btn === 65) {
|
|
81
|
+
else if (btn === 65) {
|
|
82
|
+
// scroll down
|
|
82
83
|
ctx.historyComponent?.scroll(-3);
|
|
83
84
|
}
|
|
84
|
-
else if (btn === 0 && isPress && inHistory) {
|
|
85
|
+
else if (btn === 0 && isPress && inHistory) {
|
|
86
|
+
// left press in history
|
|
85
87
|
ctx.historyComponent?.clearSelection();
|
|
86
88
|
ctx.historyComponent?.startSelection(y, x);
|
|
87
89
|
}
|
|
88
|
-
else if (btn === 32 && inHistory) {
|
|
90
|
+
else if (btn === 32 && inHistory) {
|
|
91
|
+
// drag in history
|
|
89
92
|
ctx.historyComponent?.extendSelection(y, x);
|
|
90
93
|
}
|
|
91
|
-
else if (btn === 0 && !isPress) {
|
|
94
|
+
else if (btn === 0 && !isPress) {
|
|
95
|
+
// left release
|
|
92
96
|
ctx.historyComponent?.endSelection(y, x);
|
|
93
97
|
}
|
|
94
|
-
else if (btn === 2 && isPress) {
|
|
98
|
+
else if (btn === 2 && isPress) {
|
|
99
|
+
// right click → copy / paste
|
|
95
100
|
const text = ctx.historyComponent?.getSelectedText() ?? "";
|
|
96
101
|
if (text) {
|
|
97
102
|
ctx.writeToClipboard(text);
|
|
@@ -101,7 +106,8 @@ function handleSgrMouse(data, ctx) {
|
|
|
101
106
|
ctx.pasteFromClipboard();
|
|
102
107
|
}
|
|
103
108
|
}
|
|
104
|
-
else if (!inHistory) {
|
|
109
|
+
else if (!inHistory) {
|
|
110
|
+
// click outside history → clear
|
|
105
111
|
ctx.historyComponent?.clearSelection();
|
|
106
112
|
}
|
|
107
113
|
ctx.requestRender();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-handler.js","sourceRoot":"","sources":["../../../src/repl/input/input-handler.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,mFAAmF;AAEnF,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"input-handler.js","sourceRoot":"","sources":["../../../src/repl/input/input-handler.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,mFAAmF;AAEnF,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AA2BxC;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAAiB;IAEjB,OAAO,CAAC,IAAY,EAAE,EAAE;QACtB,2BAA2B;QAC3B,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACzB,IAAI,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpD,GAAG,CAAC,aAAa,EAAE,CAAC;gBACpB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3B,CAAC;YACD,MAAM,WAAW,GAAG,GAAG,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;gBACzB,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,uEAAuE;gBAC5F,OAAO,WAAW,CAAC;YACrB,CAAC;YACD,OAAO,CAAC,4CAA4C;QACtD,CAAC;QAED,uCAAuC;QACvC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC1B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAED,yCAAyC;QACzC,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAClD,IAAI,GAAG,EAAE,CAAC;gBACR,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;gBACpD,cAAc,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAC9C,CAAC;YACD,GAAG,CAAC,aAAa,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAED,8CAA8C;QAC9C,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,gBAAgB,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;YAC/D,IAAI,QAAQ,EAAE,CAAC;gBACb,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBAC/B,GAAG,CAAC,gBAAgB,EAAE,cAAc,EAAE,CAAC;gBACvC,GAAG,CAAC,aAAa,EAAE,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAED,cAAc;QACd,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,IAAI,GAAG,CAAC,MAAM,EAAE,qBAAqB,EAAE,EAAE,CAAC;gBACxC,OAAO,CAAC,gCAAgC;YAC1C,CAAC;YACD,GAAG,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAED,OAAO;IACT,CAAC,CAAC;AACJ,CAAC;AAED,uEAAuE;AAEvE,SAAS,cAAc,CAAC,IAAY,EAAE,GAAiB;IACrD,MAAM,QAAQ,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC;IAChD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,KAAK,GAAG,CAAC;IAC/B,MAAM,SAAS,GAAG,CAAC,GAAG,GAAG,CAAC,sBAAsB,EAAE,CAAC;IAEnD,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACf,YAAY;QACZ,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;SAAM,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACtB,cAAc;QACd,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;SAAM,IAAI,GAAG,KAAK,CAAC,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;QAC7C,wBAAwB;QACxB,GAAG,CAAC,gBAAgB,EAAE,cAAc,EAAE,CAAC;QACvC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;SAAM,IAAI,GAAG,KAAK,EAAE,IAAI,SAAS,EAAE,CAAC;QACnC,kBAAkB;QAClB,GAAG,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,eAAe;QACf,GAAG,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;SAAM,IAAI,GAAG,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QAChC,6BAA6B;QAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,gBAAgB,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QAC3D,IAAI,IAAI,EAAE,CAAC;YACT,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC3B,GAAG,CAAC,gBAAgB,EAAE,cAAc,EAAE,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtB,gCAAgC;QAChC,GAAG,CAAC,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACzC,CAAC;IAED,GAAG,CAAC,aAAa,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -3,9 +3,4 @@
|
|
|
3
3
|
* Returns "clear" to clear input, "exit" to exit REPL.
|
|
4
4
|
*/
|
|
5
5
|
export declare function handleCtrlC(): "clear" | "exit";
|
|
6
|
-
/**
|
|
7
|
-
* Handle Tab keypress for snippet-style field advancement.
|
|
8
|
-
* Returns text to insert at cursor, or null if no action.
|
|
9
|
-
*/
|
|
10
|
-
export declare function handleTab(currentText: string): string | null;
|
|
11
6
|
//# sourceMappingURL=keybindings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keybindings.d.ts","sourceRoot":"","sources":["../../../src/repl/input/keybindings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"keybindings.d.ts","sourceRoot":"","sources":["../../../src/repl/input/keybindings.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,wBAAgB,WAAW,IAAI,OAAO,GAAG,MAAM,CAW9C"}
|
|
@@ -1,23 +1,10 @@
|
|
|
1
1
|
// See API-501: REPL keybinding handlers.
|
|
2
2
|
//
|
|
3
3
|
// Shared snippet-style keybinding helpers used by the REPL input layer.
|
|
4
|
-
import { getCommandArgs, getTemplates } from "../registry.js";
|
|
5
4
|
import { recordInterrupt, getLastInterruptTime } from "../ui/ctrl-c-state.js";
|
|
6
5
|
import { showStatusHint } from "../ui/hint-state.js";
|
|
7
6
|
import { t } from "../../i18n/index.js";
|
|
8
|
-
import { countQuotes } from "./analyzer.js";
|
|
9
7
|
const DOUBLE_CTRL_C_THRESHOLD_MS = 3000;
|
|
10
|
-
// Lazy caches
|
|
11
|
-
let _commandArgs = null;
|
|
12
|
-
let _templates = null;
|
|
13
|
-
function getCmdArgs() {
|
|
14
|
-
_commandArgs ??= getCommandArgs();
|
|
15
|
-
return _commandArgs;
|
|
16
|
-
}
|
|
17
|
-
function getTpl() {
|
|
18
|
-
_templates ??= getTemplates();
|
|
19
|
-
return _templates;
|
|
20
|
-
}
|
|
21
8
|
/**
|
|
22
9
|
* Handle Ctrl+C keypress.
|
|
23
10
|
* Returns "clear" to clear input, "exit" to exit REPL.
|
|
@@ -32,56 +19,4 @@ export function handleCtrlC() {
|
|
|
32
19
|
showStatusHint(t("repl.ctrl_c_hint"), 3000);
|
|
33
20
|
return "clear";
|
|
34
21
|
}
|
|
35
|
-
/**
|
|
36
|
-
* Handle Tab keypress for snippet-style field advancement.
|
|
37
|
-
* Returns text to insert at cursor, or null if no action.
|
|
38
|
-
*/
|
|
39
|
-
export function handleTab(currentText) {
|
|
40
|
-
const text = currentText.trimStart();
|
|
41
|
-
if (!text)
|
|
42
|
-
return null;
|
|
43
|
-
const parts = text.split(/\s+/);
|
|
44
|
-
const cmd = parts[0].toLowerCase();
|
|
45
|
-
const commandArgs = getCmdArgs();
|
|
46
|
-
const templates = getTpl();
|
|
47
|
-
// Single word, not ending with space or quote: try command completion
|
|
48
|
-
if (parts.length === 1 && !text.endsWith(" ") && !text.endsWith('"')) {
|
|
49
|
-
for (const c of commandArgs.keys()) {
|
|
50
|
-
if (c.startsWith(cmd) && c !== cmd) {
|
|
51
|
-
const rest = c.slice(cmd.length);
|
|
52
|
-
const tpl = templates.get(c);
|
|
53
|
-
if (tpl) {
|
|
54
|
-
const [prefix] = tpl[0];
|
|
55
|
-
return rest + " " + prefix;
|
|
56
|
-
}
|
|
57
|
-
return rest;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
// Exact match with template: insert first template prefix
|
|
61
|
-
const tpl = templates.get(cmd);
|
|
62
|
-
if (tpl) {
|
|
63
|
-
const [prefix] = tpl[0];
|
|
64
|
-
return " " + prefix;
|
|
65
|
-
}
|
|
66
|
-
return null;
|
|
67
|
-
}
|
|
68
|
-
// In template: advance to next field
|
|
69
|
-
const template = templates.get(cmd);
|
|
70
|
-
if (!template)
|
|
71
|
-
return null;
|
|
72
|
-
const fieldIdx = countQuotes(text);
|
|
73
|
-
const templateIdx = Math.floor(fieldIdx / 2);
|
|
74
|
-
const inField = fieldIdx % 2 === 1;
|
|
75
|
-
if (templateIdx >= template.length)
|
|
76
|
-
return null;
|
|
77
|
-
if (inField) {
|
|
78
|
-
if (templateIdx + 1 < template.length) {
|
|
79
|
-
const [nextPrefix] = template[templateIdx + 1];
|
|
80
|
-
return nextPrefix;
|
|
81
|
-
}
|
|
82
|
-
return '"';
|
|
83
|
-
}
|
|
84
|
-
const [prefix] = template[templateIdx];
|
|
85
|
-
return prefix;
|
|
86
|
-
}
|
|
87
22
|
//# sourceMappingURL=keybindings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keybindings.js","sourceRoot":"","sources":["../../../src/repl/input/keybindings.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,EAAE;AACF,wEAAwE;AAExE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"keybindings.js","sourceRoot":"","sources":["../../../src/repl/input/keybindings.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,EAAE;AACF,wEAAwE;AAExE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AAExC,MAAM,0BAA0B,GAAG,IAAI,CAAC;AAExC;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;IAEpC,IAAI,GAAG,GAAG,IAAI,GAAG,0BAA0B,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,eAAe,EAAE,CAAC;IAClB,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/repl/loop.d.ts
CHANGED
package/dist/repl/loop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/repl/loop.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/repl/loop.ts"],"names":[],"mappings":"AA+BA,qCAAqC;AACrC,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA+C7C"}
|
package/dist/repl/loop.js
CHANGED
|
@@ -11,12 +11,14 @@ import { setTerminal, clearTerminal, ReplTerminal } from "../output/terminal.js"
|
|
|
11
11
|
import { silenceConsole } from "../logging/setup.js";
|
|
12
12
|
import { getSettings } from "../config/settings.js";
|
|
13
13
|
import { isAuthenticated } from "../config/credentials.js";
|
|
14
|
-
import { appendHistory, compactHistory
|
|
15
|
-
import {
|
|
14
|
+
import { appendHistory, compactHistory } from "./history/output-store.js";
|
|
15
|
+
import { setCurlEnabled } from "../api/curl.js";
|
|
16
|
+
import { getLogger } from "../logging/index.js";
|
|
16
17
|
import { currentLang, needsRefresh, clearRefreshFlag, setTranslations } from "../i18n/index.js";
|
|
17
18
|
import { translateCatalog } from "../i18n/translator.js";
|
|
18
19
|
import { createTranslator } from "../i18n/translator-adapter.js";
|
|
19
20
|
/** No-op sink to suppress ora spinner during silent background refresh. */
|
|
21
|
+
const log = getLogger(import.meta.url);
|
|
20
22
|
const SILENT_SINK = {
|
|
21
23
|
start() { },
|
|
22
24
|
update() { },
|
|
@@ -24,26 +26,20 @@ const SILENT_SINK = {
|
|
|
24
26
|
failed() { },
|
|
25
27
|
};
|
|
26
28
|
/** Run the interactive REPL mode. */
|
|
27
|
-
export async function runRepl(
|
|
29
|
+
export async function runRepl() {
|
|
28
30
|
const service = new ReplService();
|
|
29
31
|
let controller = null;
|
|
30
32
|
const settings = getSettings();
|
|
31
33
|
const maxHistoryEntries = settings.cli.repl_history_max_entries;
|
|
32
|
-
const initialHistory = loadHistory(maxHistoryEntries);
|
|
33
34
|
outputBridge.enable({
|
|
34
|
-
initialHistory,
|
|
35
|
+
initialHistory: [],
|
|
35
36
|
persistence: { append: appendHistory },
|
|
36
37
|
});
|
|
37
38
|
silenceConsole();
|
|
38
39
|
try {
|
|
39
|
-
if (plugins?.length) {
|
|
40
|
-
await service.loadPlugins(plugins, {
|
|
41
|
-
conflictPolicy: settings.cli.repl_plugin_conflict_policy,
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
40
|
// Wire terminal → outputBridge → batched → TUI viewport (Ports & Adapters)
|
|
45
41
|
setTerminal(new ReplTerminal(outputBridge));
|
|
46
|
-
|
|
42
|
+
setCurlEnabled(settings.cli.show_curl);
|
|
47
43
|
// Background refresh of stale translation cache (best-effort, silent)
|
|
48
44
|
if (needsRefresh() && isAuthenticated()) {
|
|
49
45
|
const lang = currentLang();
|
|
@@ -54,13 +50,17 @@ export async function runRepl(plugins) {
|
|
|
54
50
|
clearRefreshFlag();
|
|
55
51
|
}
|
|
56
52
|
})
|
|
57
|
-
.catch(() => {
|
|
53
|
+
.catch((error) => {
|
|
54
|
+
log.warn("i18n background refresh failed", { error: String(error) });
|
|
55
|
+
});
|
|
58
56
|
}
|
|
59
57
|
// Deploy bundled example files to ~/.prompsit/examples/ on first run
|
|
60
58
|
try {
|
|
61
59
|
ensureExamples();
|
|
62
60
|
}
|
|
63
|
-
catch {
|
|
61
|
+
catch {
|
|
62
|
+
/* Non-critical */
|
|
63
|
+
}
|
|
64
64
|
controller = new ReplController(service);
|
|
65
65
|
await controller.start();
|
|
66
66
|
}
|
|
@@ -69,7 +69,7 @@ export async function runRepl(plugins) {
|
|
|
69
69
|
clearTerminal();
|
|
70
70
|
compactHistory(maxHistoryEntries);
|
|
71
71
|
outputBridge.disable();
|
|
72
|
-
|
|
72
|
+
service.dispose();
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
//# sourceMappingURL=loop.js.map
|
package/dist/repl/loop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/repl/loop.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,EAAE;AACF,sCAAsC;AACtC,oFAAoF;AACpF,0DAA0D;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/repl/loop.ts"],"names":[],"mappings":"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"}
|
package/dist/repl/registry.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import type { StringKey } from "../i18n/catalog.ts";
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
/** Discriminated filter for help display mode. */
|
|
3
|
+
export type HelpFilter = {
|
|
4
|
+
readonly mode: "groups";
|
|
5
|
+
readonly groups: readonly StringKey[];
|
|
6
|
+
} | {
|
|
7
|
+
readonly mode: "single";
|
|
8
|
+
readonly name: string;
|
|
9
|
+
};
|
|
10
|
+
/** Commands where -h is NOT help (e.g. evaluate uses -h for --hypothesis). */
|
|
11
|
+
export declare const HELP_H_BLACKLIST: ReadonlySet<string>;
|
|
10
12
|
/** Welcome-screen row metadata. */
|
|
11
13
|
export interface WelcomeEntry {
|
|
12
14
|
/** i18n key for description column */
|
|
@@ -27,7 +29,7 @@ export interface RelatedCommand {
|
|
|
27
29
|
}
|
|
28
30
|
/** Option description for help display. */
|
|
29
31
|
export interface OptionEntry {
|
|
30
|
-
/** Flag syntax: '-s, --source "lang"', "--qe", '
|
|
32
|
+
/** Flag syntax: '-s, --source "lang"', "--qe", '--out "dir"' */
|
|
31
33
|
readonly flag: string;
|
|
32
34
|
/** i18n key for option description */
|
|
33
35
|
readonly descKey: StringKey;
|
|
@@ -48,9 +50,9 @@ export interface ReplCommand {
|
|
|
48
50
|
readonly template?: readonly TemplateSegment[];
|
|
49
51
|
/** Welcome screen entry */
|
|
50
52
|
readonly welcome?: WelcomeEntry;
|
|
51
|
-
/** CLI usage examples */
|
|
53
|
+
/** CLI usage examples (shown in `prompsit <cmd> --help` epilogs) */
|
|
52
54
|
readonly cliExamples?: readonly string[];
|
|
53
|
-
/** REPL usage examples */
|
|
55
|
+
/** REPL usage examples (shown on help page without "prompsit" prefix) */
|
|
54
56
|
readonly replExamples?: readonly string[];
|
|
55
57
|
/** Option descriptions shown in unified help */
|
|
56
58
|
readonly options?: readonly OptionEntry[];
|
|
@@ -60,21 +62,16 @@ export interface ReplCommand {
|
|
|
60
62
|
readonly aliasOf?: string;
|
|
61
63
|
/** Subcommands shown in detailed help */
|
|
62
64
|
readonly relatedCommands?: readonly RelatedCommand[];
|
|
65
|
+
/** Boolean flags that don't consume the next token as a value (e.g. --qe, --force) */
|
|
66
|
+
readonly boolFlags?: readonly string[];
|
|
63
67
|
}
|
|
64
68
|
export declare const COMMANDS: readonly ReplCommand[];
|
|
65
|
-
/** Called by PluginManager to sync plugin commands for help/autocomplete. */
|
|
66
|
-
export declare function setPluginCommands(cmds: Map<string, {
|
|
67
|
-
description: string;
|
|
68
|
-
argsSyntax: string;
|
|
69
|
-
}>): void;
|
|
70
69
|
/** name -> commanderPath for routable commands (replaces CMD_MAP). */
|
|
71
70
|
export declare function getCmdMap(): Map<string, string>;
|
|
72
71
|
/** name -> argsSyntax for all commands. */
|
|
73
72
|
export declare function getCommandArgs(): Map<string, string>;
|
|
74
73
|
/** name -> tab-completion template. */
|
|
75
74
|
export declare function getTemplates(): Map<string, readonly TemplateSegment[]>;
|
|
76
|
-
/** name -> [argsSyntax, translatedDescription]. */
|
|
77
|
-
export declare function getCommands(): Map<string, [string, string]>;
|
|
78
75
|
/** name -> translatedDescription for fuzzy dropdown (excludes hidden aliases). */
|
|
79
76
|
export declare function getDropdownCommands(): Map<string, string>;
|
|
80
77
|
/** [cmdStr, translatedHint, example] for welcome screen. */
|
|
@@ -87,8 +84,19 @@ export declare function getWelcomeRows(): [string, string, string][];
|
|
|
87
84
|
export declare function getHelpGroups(): Map<string, string[]>;
|
|
88
85
|
/** Get alias names for a command (commands where aliasOf === name). */
|
|
89
86
|
export declare function getAliasesFor(name: string): string[];
|
|
90
|
-
/**
|
|
91
|
-
|
|
87
|
+
/**
|
|
88
|
+
* Resolve user-typed command to a help filter.
|
|
89
|
+
* Parent keywords → multi-group display. Aliases resolve through canonical.
|
|
90
|
+
* Known command → single-command display. Unknown → undefined (show all).
|
|
91
|
+
*/
|
|
92
|
+
export declare function resolveHelpFilter(input: string): HelpFilter | undefined;
|
|
93
|
+
/**
|
|
94
|
+
* Resolve explicit two-word subcommand to its REPL command name.
|
|
95
|
+
* "translate file" → "tf", "data score" → "data score", "evaluate metrics" → "eval".
|
|
96
|
+
*/
|
|
97
|
+
export declare function resolveSubcommandName(fullCmd: string): string | undefined;
|
|
98
|
+
/** Collect all boolean flags declared across REPL commands. */
|
|
99
|
+
export declare function getAllBoolFlags(): ReadonlySet<string>;
|
|
92
100
|
/** Build epilog with CLI examples by Commander.js command path (e.g. "translate text"). */
|
|
93
101
|
export declare function buildEpilogByCommanderPath(cmdPath: string): string | null;
|
|
94
102
|
//# sourceMappingURL=registry.d.ts.map
|