@glbgpt/cli 0.2.0 → 0.2.2
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 +14 -3
- package/dist/src/commands/execCommand.d.ts +5 -0
- package/dist/src/commands/execCommand.js +28 -1
- package/dist/src/commands/execCommand.js.map +1 -1
- package/dist/src/commands/updateCommand.d.ts +7 -0
- package/dist/src/commands/updateCommand.js +11 -0
- package/dist/src/commands/updateCommand.js.map +1 -0
- package/dist/src/core/catalog.d.ts +5 -0
- package/dist/src/core/catalog.js +26 -1
- package/dist/src/core/catalog.js.map +1 -1
- package/dist/src/core/tools/askUserTool.d.ts +3 -0
- package/dist/src/core/tools/askUserTool.js +61 -0
- package/dist/src/core/tools/askUserTool.js.map +1 -0
- package/dist/src/core/tools/planTool.d.ts +15 -0
- package/dist/src/core/tools/planTool.js +58 -0
- package/dist/src/core/tools/planTool.js.map +1 -0
- package/dist/src/core/turnLoop.js +23 -4
- package/dist/src/core/turnLoop.js.map +1 -1
- package/dist/src/core/updateCheck.d.ts +35 -0
- package/dist/src/core/updateCheck.js +71 -2
- package/dist/src/core/updateCheck.js.map +1 -1
- package/dist/src/core/updateRunner.d.ts +7 -0
- package/dist/src/core/updateRunner.js +26 -0
- package/dist/src/core/updateRunner.js.map +1 -0
- package/dist/src/index.js +7 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/mediaTools.d.ts +2 -2
- package/dist/src/mcp/mediaTools.js +24 -5
- package/dist/src/mcp/mediaTools.js.map +1 -1
- package/dist/src/mcp/server.js +47 -2
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/media/taskLedger.d.ts +21 -1
- package/dist/src/media/taskLedger.js +27 -0
- package/dist/src/media/taskLedger.js.map +1 -1
- package/dist/src/tui/App.d.ts +3 -1
- package/dist/src/tui/App.js +77 -12
- package/dist/src/tui/App.js.map +1 -1
- package/dist/src/tui/UpdatePrompt.d.ts +17 -0
- package/dist/src/tui/UpdatePrompt.js +42 -0
- package/dist/src/tui/UpdatePrompt.js.map +1 -0
- package/dist/src/tui/chatController.d.ts +12 -0
- package/dist/src/tui/chatController.js +86 -1
- package/dist/src/tui/chatController.js.map +1 -1
- package/dist/src/tui/commands.js +2 -0
- package/dist/src/tui/commands.js.map +1 -1
- package/dist/src/tui/questionBridge.d.ts +24 -0
- package/dist/src/tui/questionBridge.js +33 -0
- package/dist/src/tui/questionBridge.js.map +1 -0
- package/dist/src/tui/run.js +47 -14
- package/dist/src/tui/run.js.map +1 -1
- package/dist/src/tui/staticSplit.d.ts +17 -0
- package/dist/src/tui/staticSplit.js +34 -0
- package/dist/src/tui/staticSplit.js.map +1 -0
- package/dist/src/web/index.d.ts +3 -1
- package/dist/src/web/index.js +1 -1
- package/dist/src/web/index.js.map +1 -1
- package/dist/src/web/webFetchTool.d.ts +5 -0
- package/dist/src/web/webFetchTool.js +1 -1
- package/dist/src/web/webFetchTool.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -32,8 +32,11 @@ Run `glbgpt <command> --help` for the full flags of any command.
|
|
|
32
32
|
| `glbgpt resume last` · `glbgpt resume <id>` | Resume a previous conversation. |
|
|
33
33
|
|
|
34
34
|
Inside the TUI, type `/` for commands: `/model` `/models` `/image` `/video` `/tasks` `/status`
|
|
35
|
-
`/permissions` `/compact` `/
|
|
36
|
-
`/help` `/exit`.
|
|
35
|
+
`/permissions` `/compact` `/diff` `/export` `/account` `/transactions` `/cost` `/login` `/logout`
|
|
36
|
+
`/new` `/resume` `/help` `/exit`. `/diff` shows working-tree changes (plus untracked files);
|
|
37
|
+
`/export` writes the conversation to a markdown file. On multi-step tasks the model keeps a
|
|
38
|
+
visible plan checklist, and when it hits a decision only you can make it asks with an
|
|
39
|
+
interactive picker (↑/↓ or a number key; Esc lets it proceed on its own judgment).
|
|
37
40
|
Attach images with `@image` (last generation), `Ctrl+V` or `@clipboard`, or `@./photo.png`.
|
|
38
41
|
Multi-line: end a line with `\` then Enter (or Ctrl+J); plain Enter sends; Esc interrupts.
|
|
39
42
|
On tool-capable models the assistant can also read files under the directory you started
|
|
@@ -76,6 +79,7 @@ be remembered for the session; writes inside `.git/` always ask.
|
|
|
76
79
|
| `glbgpt whoami` | Show the signed-in account. |
|
|
77
80
|
| `glbgpt account` | Membership and credit balance. |
|
|
78
81
|
| `glbgpt account transactions` | Recent spend (authoritative billing). |
|
|
82
|
+
| `glbgpt update` | Update the CLI to the latest version (runs `npm i -g` for you). |
|
|
79
83
|
|
|
80
84
|
### Images and video
|
|
81
85
|
|
|
@@ -142,6 +146,7 @@ account. Sign in once with `glbgpt login` first.
|
|
|
142
146
|
| `glbgpt_generate_video` | Generate a video; returns a `task_id` to check. |
|
|
143
147
|
| `glbgpt_check_task` | Check a generation task. Waits server-side — the agent can just call it again immediately until done. |
|
|
144
148
|
| `glbgpt_list_models` | List available chat/image/video models and what parameters each supports. |
|
|
149
|
+
| `glbgpt_account` | Signed-in account: email, plan, and remaining credit balance. |
|
|
145
150
|
|
|
146
151
|
Register it:
|
|
147
152
|
|
|
@@ -232,12 +237,18 @@ re-points the link and leaves nothing to lose.
|
|
|
232
237
|
|
|
233
238
|
Keys: `lang`, `max-credits` (unattended media budget), `context-pruning` (set `false` to
|
|
234
239
|
keep old tool results in long chats), `update-check` (set `false` to disable the startup
|
|
235
|
-
|
|
240
|
+
update prompt and notices about newer versions). One-shot overrides via env vars (`GLBGPT_LANG`,
|
|
236
241
|
`GLBGPT_TOKEN`, `GLBGPT_MAX_CREDITS`, `GLBGPT_CONTEXT_PRUNING`, `GLBGPT_UPDATE_CHECK`)
|
|
237
242
|
always win.
|
|
238
243
|
|
|
239
244
|
## Notes
|
|
240
245
|
|
|
246
|
+
**Updates.** When a newer version exists, an interactive start shows a chooser (Enter
|
|
247
|
+
updates on the spot; "Skip until next version" mutes the chooser for that release), and
|
|
248
|
+
`exec`/MCP print a one-line notice on stderr so agent hosts can relay it. The check reads
|
|
249
|
+
a local cache refreshed in the background — it never blocks startup or touches the network
|
|
250
|
+
on the hot path. `glbgpt update` upgrades any time; `update-check false` disables it all.
|
|
251
|
+
|
|
241
252
|
**Usage telemetry.** The CLI reports anonymous usage events (session starts, turn latency,
|
|
242
253
|
tool-call counts, error categories) to the GlobalGPT backend to help us improve the product.
|
|
243
254
|
It never collects prompt text, file contents, or file paths. Set `GLBGPT_DISABLE_TELEMETRY=1`
|
|
@@ -33,6 +33,11 @@ export interface ExecDeps {
|
|
|
33
33
|
readImage?: (p: string) => Promise<Buffer>;
|
|
34
34
|
writeFile?: (p: string, data: string) => Promise<void>;
|
|
35
35
|
resolveToken?: () => Promise<string | null>;
|
|
36
|
+
/** Update-notice source (tests). Defaults to the real cache-only check on the real CLI entry. */
|
|
37
|
+
checkUpdate?: () => Promise<{
|
|
38
|
+
latest: string;
|
|
39
|
+
command: string;
|
|
40
|
+
} | null>;
|
|
36
41
|
/** Override the workspace root the fs tools are jailed to (tests; default `process.cwd()`). */
|
|
37
42
|
workspaceRootDir?: string;
|
|
38
43
|
/** Injectable media surface (tests). */
|
|
@@ -5,7 +5,7 @@ import { runChatTurn } from '../core/runChat.js';
|
|
|
5
5
|
import { ToolRegistry } from '../core/toolRegistry.js';
|
|
6
6
|
import { resolveToken as defaultResolveToken } from '../auth/token.js';
|
|
7
7
|
import { apiBaseUrl, baseUrlOverrideWarnings } from '../config/env.js';
|
|
8
|
-
import { ensureCatalog } from '../core/catalog.js';
|
|
8
|
+
import { ensureCatalog, getCatalogCliVersions } from '../core/catalog.js';
|
|
9
9
|
import { getDefaultChatModel, resolveChatModel, modelSupportsTools } from '../tui/models.js';
|
|
10
10
|
import { UsageError, resolvePromptText, injectFiles, loadOutputSchema } from '../exec/input.js';
|
|
11
11
|
import { ExecOutput } from '../exec/output.js';
|
|
@@ -17,6 +17,8 @@ import { AiApiClient } from '../media/aiApiClient.js';
|
|
|
17
17
|
import { SessionBudget, resolveMaxCredits } from '../media/budget.js';
|
|
18
18
|
import { createExecMedia } from '../exec/media.js';
|
|
19
19
|
import { flushTelemetry, initTelemetryForCli, track } from '../telemetry/telemetry.js';
|
|
20
|
+
import { compareVersions, effectiveUpdateNotice } from '../core/updateCheck.js';
|
|
21
|
+
import { VERSION } from '../version.js';
|
|
20
22
|
/**
|
|
21
23
|
* Run one non-interactive model call and render it per the chosen output mode.
|
|
22
24
|
* Returns the process exit code (0 success; 1 usage/auth/turn failure) rather than exiting,
|
|
@@ -47,6 +49,31 @@ export async function runExec(positional, opts, deps = {}) {
|
|
|
47
49
|
// be rejected client-side just because this machine hasn't fetched the list yet).
|
|
48
50
|
const token = await (deps.resolveToken ?? defaultResolveToken)();
|
|
49
51
|
const { refreshed } = await ensureCatalog({ baseUrl: apiBaseUrl(), token });
|
|
52
|
+
// Advise-only update lines, stderr only: the payload on stdout stays machine-clean, and
|
|
53
|
+
// agent hosts (Claude Code & co. running `glbgpt exec`) read stderr and relay it to
|
|
54
|
+
// their user — the TUI-only notice never reached this surface at all. Local-only reads
|
|
55
|
+
// (registry cache + the catalog's cli block — hence after ensureCatalog); deliberately
|
|
56
|
+
// ignores "Skip until next version", which is an interactive-TUI choice. Defaulted only
|
|
57
|
+
// for the real CLI entry: tests inject sinks, and opt in via deps.checkUpdate.
|
|
58
|
+
const checkUpdate = deps.checkUpdate ??
|
|
59
|
+
(deps.sinks === undefined
|
|
60
|
+
? async () => (await effectiveUpdateNotice(getCatalogCliVersions())).notice
|
|
61
|
+
: undefined);
|
|
62
|
+
try {
|
|
63
|
+
const notice = await checkUpdate?.();
|
|
64
|
+
if (notice) {
|
|
65
|
+
sinks.err(`Update available: glbgpt ${VERSION} → ${notice.latest} — run: ${notice.command}\n`);
|
|
66
|
+
}
|
|
67
|
+
if (deps.sinks === undefined) {
|
|
68
|
+
const min = getCatalogCliVersions().minVersion;
|
|
69
|
+
if (min && compareVersions(min, VERSION) > 0) {
|
|
70
|
+
sinks.err(`WARNING: glbgpt ${VERSION} is below the minimum supported version (${min}) — run: glbgpt update\n`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Advisory only — never let the update check break an exec run.
|
|
76
|
+
}
|
|
50
77
|
let model;
|
|
51
78
|
try {
|
|
52
79
|
model = opts.model?.trim() ? resolveChatModel(opts.model.trim()) : getDefaultChatModel();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execCommand.js","sourceRoot":"","sources":["../../../src/commands/execCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAuB,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"execCommand.js","sourceRoot":"","sources":["../../../src/commands/execCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `glbgpt update`: run the channel-appropriate npm upgrade on the user's behalf.
|
|
3
|
+
* No pre-check against the registry — npm itself is the authority on whether a newer
|
|
4
|
+
* version exists (installing the same version again is a cheap no-op), which also makes
|
|
5
|
+
* this the escape hatch when the 20h notice cache is stale.
|
|
6
|
+
*/
|
|
7
|
+
export declare function runUpdate(): Promise<number>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { runUpgrade } from '../core/updateRunner.js';
|
|
2
|
+
/**
|
|
3
|
+
* `glbgpt update`: run the channel-appropriate npm upgrade on the user's behalf.
|
|
4
|
+
* No pre-check against the registry — npm itself is the authority on whether a newer
|
|
5
|
+
* version exists (installing the same version again is a cheap no-op), which also makes
|
|
6
|
+
* this the escape hatch when the 20h notice cache is stale.
|
|
7
|
+
*/
|
|
8
|
+
export async function runUpdate() {
|
|
9
|
+
return (await runUpgrade()) ? 0 : 1;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=updateCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateCommand.js","sourceRoot":"","sources":["../../../src/commands/updateCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,OAAO,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ModelInfo } from '../tui/models.js';
|
|
2
|
+
import { type CatalogCliVersions } from './updateCheck.js';
|
|
2
3
|
/**
|
|
3
4
|
* Server-driven model catalog (GET /ai-api/cli/v1/models).
|
|
4
5
|
*
|
|
@@ -19,6 +20,8 @@ export interface RemoteCatalog {
|
|
|
19
20
|
media: {
|
|
20
21
|
disabled: string[];
|
|
21
22
|
};
|
|
23
|
+
/** Server-driven CLI version steering (optional — older backends omit it). */
|
|
24
|
+
cli?: CatalogCliVersions;
|
|
22
25
|
}
|
|
23
26
|
/**
|
|
24
27
|
* Parse + validate a catalog payload; null when the shape is unusable.
|
|
@@ -29,6 +32,8 @@ export interface RemoteCatalog {
|
|
|
29
32
|
* silently resets them to their default.
|
|
30
33
|
*/
|
|
31
34
|
export declare function parseCatalog(raw: unknown): RemoteCatalog | null;
|
|
35
|
+
/** The catalog's CLI version steering ({} until a catalog with a `cli` block applies). */
|
|
36
|
+
export declare function getCatalogCliVersions(): CatalogCliVersions;
|
|
32
37
|
export declare function catalogCacheFile(): string;
|
|
33
38
|
/**
|
|
34
39
|
* Fetch the catalog from the backend; null on any failure. The timeout is generous —
|
package/dist/src/core/catalog.js
CHANGED
|
@@ -4,6 +4,7 @@ import { configDir } from '../config/paths.js';
|
|
|
4
4
|
import { clientHeaders } from './clientHeaders.js';
|
|
5
5
|
import { applyChatCatalog } from '../tui/models.js';
|
|
6
6
|
import { applyMediaDisabled } from '../media/manifest.js';
|
|
7
|
+
import { isValidVersion } from './updateCheck.js';
|
|
7
8
|
/**
|
|
8
9
|
* Parse + validate a catalog payload; null when the shape is unusable.
|
|
9
10
|
*
|
|
@@ -33,7 +34,29 @@ export function parseCatalog(raw) {
|
|
|
33
34
|
const disabled = Array.isArray(o.media?.disabled)
|
|
34
35
|
? o.media.disabled.filter((d) => typeof d === 'string' && d.trim()).map((d) => d.trim())
|
|
35
36
|
: [];
|
|
36
|
-
|
|
37
|
+
const cli = cliVersionsOf(o.cli);
|
|
38
|
+
return { chat: { default: def, models }, media: { disabled }, ...(cli ? { cli } : {}) };
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Optional `cli` block: server-steered latest/min CLI versions. Values must pass the
|
|
42
|
+
* strict semver grammar — anything else is dropped, never echoed to the terminal
|
|
43
|
+
* (same ANSI-injection posture as the registry check).
|
|
44
|
+
*/
|
|
45
|
+
function cliVersionsOf(c) {
|
|
46
|
+
if (typeof c !== 'object' || c === null)
|
|
47
|
+
return undefined;
|
|
48
|
+
const pick = (v) => typeof v === 'string' && isValidVersion(v.trim()) ? v.trim() : undefined;
|
|
49
|
+
const latestVersion = pick(c.latest_version ?? c.latestVersion);
|
|
50
|
+
const minVersion = pick(c.min_version ?? c.minVersion);
|
|
51
|
+
if (!latestVersion && !minVersion)
|
|
52
|
+
return undefined;
|
|
53
|
+
return { ...(latestVersion ? { latestVersion } : {}), ...(minVersion ? { minVersion } : {}) };
|
|
54
|
+
}
|
|
55
|
+
// Applied alongside the model lists; read at startup by the update-notice path.
|
|
56
|
+
let appliedCliVersions = {};
|
|
57
|
+
/** The catalog's CLI version steering ({} until a catalog with a `cli` block applies). */
|
|
58
|
+
export function getCatalogCliVersions() {
|
|
59
|
+
return appliedCliVersions;
|
|
37
60
|
}
|
|
38
61
|
/** Optional catalog capability (snake_case from the server, camelCase from our own cache). */
|
|
39
62
|
function contextWindowOf(m) {
|
|
@@ -47,6 +70,7 @@ function structuredOutputOf(m) {
|
|
|
47
70
|
function applyCatalog(catalog) {
|
|
48
71
|
applyChatCatalog(catalog.chat.models, catalog.chat.default);
|
|
49
72
|
applyMediaDisabled(catalog.media.disabled);
|
|
73
|
+
appliedCliVersions = catalog.cli ?? {};
|
|
50
74
|
}
|
|
51
75
|
export function catalogCacheFile() {
|
|
52
76
|
return path.join(configDir(), 'catalog.json');
|
|
@@ -115,5 +139,6 @@ export function ensureCatalog(opts) {
|
|
|
115
139
|
/** Test hook. */
|
|
116
140
|
export function resetCatalogForTests() {
|
|
117
141
|
ensured = null;
|
|
142
|
+
appliedCliVersions = {};
|
|
118
143
|
}
|
|
119
144
|
//# sourceMappingURL=catalog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/core/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAkB,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/core/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `request_user_input` tool (Codex-style): when the model hits a decision only the user
|
|
3
|
+
* can make, it asks a structured multiple-choice question and the TUI renders a picker —
|
|
4
|
+
* far better than ambiguity buried in prose. Interactive surfaces only (the TUI registers
|
|
5
|
+
* it; exec/MCP never see it).
|
|
6
|
+
*/
|
|
7
|
+
const MAX_OPTIONS = 4;
|
|
8
|
+
export function createAskUserTool(bridge) {
|
|
9
|
+
return {
|
|
10
|
+
name: 'request_user_input',
|
|
11
|
+
description: 'Ask the user ONE multiple-choice question when you are blocked on a decision that is ' +
|
|
12
|
+
'genuinely theirs to make (ambiguous requirements, an irreversible choice between real ' +
|
|
13
|
+
'alternatives). Give 2-4 distinct options, your recommended one first with ' +
|
|
14
|
+
'"(Recommended)" in its label. Do not use it for choices with an obvious default. The ' +
|
|
15
|
+
'user may also cancel — then proceed on your best judgment.',
|
|
16
|
+
parameters: {
|
|
17
|
+
type: 'object',
|
|
18
|
+
properties: {
|
|
19
|
+
question: { type: 'string', description: 'The complete question, ending with "?".' },
|
|
20
|
+
options: {
|
|
21
|
+
type: 'array',
|
|
22
|
+
description: '2-4 mutually exclusive choices.',
|
|
23
|
+
items: {
|
|
24
|
+
type: 'object',
|
|
25
|
+
properties: {
|
|
26
|
+
label: { type: 'string', description: 'Concise choice text (1-6 words).' },
|
|
27
|
+
description: { type: 'string', description: 'One-line explanation or trade-off.' },
|
|
28
|
+
},
|
|
29
|
+
required: ['label'],
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
required: ['question', 'options'],
|
|
34
|
+
},
|
|
35
|
+
readOnly: true,
|
|
36
|
+
async execute(args) {
|
|
37
|
+
const question = typeof args.question === 'string' ? args.question.trim() : '';
|
|
38
|
+
const raw = Array.isArray(args.options) ? args.options : [];
|
|
39
|
+
const options = raw
|
|
40
|
+
.map((o) => ({
|
|
41
|
+
label: typeof o?.label === 'string'
|
|
42
|
+
? o.label.trim()
|
|
43
|
+
: '',
|
|
44
|
+
description: typeof o?.description === 'string'
|
|
45
|
+
? o.description
|
|
46
|
+
: undefined,
|
|
47
|
+
}))
|
|
48
|
+
.filter((o) => o.label.length > 0)
|
|
49
|
+
.slice(0, MAX_OPTIONS);
|
|
50
|
+
if (!question || options.length < 2) {
|
|
51
|
+
return { error: 'Provide a question and 2-4 options with non-empty labels.' };
|
|
52
|
+
}
|
|
53
|
+
const answer = await bridge.request({ question, options });
|
|
54
|
+
if (answer === null) {
|
|
55
|
+
return { cancelled: true, note: 'The user dismissed the question — proceed on your best judgment.' };
|
|
56
|
+
}
|
|
57
|
+
return { selected: answer.selected };
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=askUserTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"askUserTool.js","sourceRoot":"","sources":["../../../../src/core/tools/askUserTool.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,MAAM,UAAU,iBAAiB,CAAC,MAAsB;IACtD,OAAO;QACL,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,uFAAuF;YACvF,wFAAwF;YACxF,4EAA4E;YAC5E,uFAAuF;YACvF,4DAA4D;QAC9D,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;gBACpF,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,iCAAiC;oBAC9C,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;4BAC1E,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE;yBACnF;wBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;qBACpB;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;SAClC;QACD,QAAQ,EAAE,IAAI;QACd,KAAK,CAAC,OAAO,CAAC,IAA6B;YACzC,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/E,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,MAAM,OAAO,GAAG,GAAG;iBAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACX,KAAK,EACH,OAAQ,CAAyB,EAAE,KAAK,KAAK,QAAQ;oBACnD,CAAC,CAAE,CAAuB,CAAC,KAAK,CAAC,IAAI,EAAE;oBACvC,CAAC,CAAC,EAAE;gBACR,WAAW,EACT,OAAQ,CAA+B,EAAE,WAAW,KAAK,QAAQ;oBAC/D,CAAC,CAAE,CAA6B,CAAC,WAAW;oBAC5C,CAAC,CAAC,SAAS;aAChB,CAAC,CAAC;iBACF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;iBACjC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YACzB,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,OAAO,EAAE,KAAK,EAAE,2DAA2D,EAAE,CAAC;YAChF,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAC3D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,kEAAkE,EAAE,CAAC;YACvG,CAAC;YACD,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ClientTool } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The `update_plan` tool (Codex/Claude Code-style task checklist). The model maintains a
|
|
4
|
+
* short step list with statuses; the host renders it (TUI panel) so the user can follow a
|
|
5
|
+
* long task at a glance. Pure presentation state — no side effects, replacing wholesale on
|
|
6
|
+
* every call, at most one step in_progress.
|
|
7
|
+
*/
|
|
8
|
+
export type PlanStepStatus = 'pending' | 'in_progress' | 'completed';
|
|
9
|
+
export interface PlanStep {
|
|
10
|
+
step: string;
|
|
11
|
+
status: PlanStepStatus;
|
|
12
|
+
}
|
|
13
|
+
export declare function createPlanTool(deps: {
|
|
14
|
+
onUpdate: (steps: PlanStep[]) => void;
|
|
15
|
+
}): ClientTool;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
const STATUSES = new Set(['pending', 'in_progress', 'completed']);
|
|
2
|
+
const MAX_STEPS = 20;
|
|
3
|
+
export function createPlanTool(deps) {
|
|
4
|
+
return {
|
|
5
|
+
name: 'update_plan',
|
|
6
|
+
description: 'Maintain a short visible task plan for the user while working on a multi-step task. ' +
|
|
7
|
+
'Call it when you start (all steps pending, first in_progress), and again whenever a ' +
|
|
8
|
+
'step completes or the plan changes — always send the FULL updated list. Keep steps ' +
|
|
9
|
+
'short (5-7 words); at most one step may be in_progress.',
|
|
10
|
+
parameters: {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
steps: {
|
|
14
|
+
type: 'array',
|
|
15
|
+
description: 'The complete plan, replacing any previous one.',
|
|
16
|
+
items: {
|
|
17
|
+
type: 'object',
|
|
18
|
+
properties: {
|
|
19
|
+
step: { type: 'string', description: 'Short imperative description.' },
|
|
20
|
+
status: { type: 'string', enum: ['pending', 'in_progress', 'completed'] },
|
|
21
|
+
},
|
|
22
|
+
required: ['step', 'status'],
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
required: ['steps'],
|
|
27
|
+
},
|
|
28
|
+
readOnly: true,
|
|
29
|
+
async execute(args) {
|
|
30
|
+
const raw = args.steps;
|
|
31
|
+
if (!Array.isArray(raw) || raw.length === 0) {
|
|
32
|
+
return { error: 'steps must be a non-empty array of {step, status}.' };
|
|
33
|
+
}
|
|
34
|
+
if (raw.length > MAX_STEPS) {
|
|
35
|
+
return { error: `Too many steps (${raw.length}); keep the plan under ${MAX_STEPS}.` };
|
|
36
|
+
}
|
|
37
|
+
const steps = [];
|
|
38
|
+
for (const item of raw) {
|
|
39
|
+
const step = typeof item?.step === 'string'
|
|
40
|
+
? item.step.trim()
|
|
41
|
+
: '';
|
|
42
|
+
const status = item?.status;
|
|
43
|
+
if (!step || typeof status !== 'string' || !STATUSES.has(status)) {
|
|
44
|
+
return {
|
|
45
|
+
error: 'Each item needs a non-empty step string and status pending|in_progress|completed.',
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
steps.push({ step, status: status });
|
|
49
|
+
}
|
|
50
|
+
if (steps.filter((s) => s.status === 'in_progress').length > 1) {
|
|
51
|
+
return { error: 'At most one step may be in_progress.' };
|
|
52
|
+
}
|
|
53
|
+
deps.onUpdate(steps);
|
|
54
|
+
return { ok: true, steps: steps.length };
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=planTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planTool.js","sourceRoot":"","sources":["../../../../src/core/tools/planTool.ts"],"names":[],"mappings":"AAgBA,MAAM,QAAQ,GAAwB,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AACvF,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,UAAU,cAAc,CAAC,IAA+C;IAC5E,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,sFAAsF;YACtF,sFAAsF;YACtF,qFAAqF;YACrF,yDAAyD;QAC3D,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,gDAAgD;oBAC7D,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;4BACtE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE;yBAC1E;wBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;qBAC7B;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;QACD,QAAQ,EAAE,IAAI;QACd,KAAK,CAAC,OAAO,CAAC,IAA6B;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5C,OAAO,EAAE,KAAK,EAAE,oDAAoD,EAAE,CAAC;YACzE,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;gBAC3B,OAAO,EAAE,KAAK,EAAE,mBAAmB,GAAG,CAAC,MAAM,0BAA0B,SAAS,GAAG,EAAE,CAAC;YACxF,CAAC;YACD,MAAM,KAAK,GAAe,EAAE,CAAC;YAC7B,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;gBACvB,MAAM,IAAI,GACR,OAAQ,IAA2B,EAAE,IAAI,KAAK,QAAQ;oBACpD,CAAC,CAAE,IAAyB,CAAC,IAAI,CAAC,IAAI,EAAE;oBACxC,CAAC,CAAC,EAAE,CAAC;gBACT,MAAM,MAAM,GAAI,IAA6B,EAAE,MAAM,CAAC;gBACtD,IAAI,CAAC,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjE,OAAO;wBACL,KAAK,EAAE,mFAAmF;qBAC3F,CAAC;gBACJ,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAwB,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/D,OAAO,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC;YAC3D,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QAC3C,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -41,6 +41,25 @@ export class TurnLoop {
|
|
|
41
41
|
const startedAt = Date.now();
|
|
42
42
|
const budget = opts.maxToolCalls ?? MAX_TOOL_CALLS_PER_TURN;
|
|
43
43
|
let toolCallsUsed = 0;
|
|
44
|
+
// Identical repeated tool calls (same name + byte-identical arguments) get an advisory
|
|
45
|
+
// note appended to the 3rd/5th/8th result (dsh's repeat-tool-reminder posture): never
|
|
46
|
+
// blocks, never costs a round — just breaks "retry the same thing forever" loops.
|
|
47
|
+
const repeatCounts = new Map();
|
|
48
|
+
const withRepeatNotice = (call, result) => {
|
|
49
|
+
const key = `${call.function.name}\u0000${call.function.arguments}`;
|
|
50
|
+
const n = (repeatCounts.get(key) ?? 0) + 1;
|
|
51
|
+
repeatCounts.set(key, n);
|
|
52
|
+
if ((n === 3 || n === 5 || n === 8) &&
|
|
53
|
+
result !== null &&
|
|
54
|
+
typeof result === 'object' &&
|
|
55
|
+
!Array.isArray(result)) {
|
|
56
|
+
return {
|
|
57
|
+
...result,
|
|
58
|
+
repeated_call_notice: `This is call #${n} of ${call.function.name} with exactly the same arguments this turn. If the result keeps not helping, change the arguments or approach, or continue with what you already have.`,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return result;
|
|
62
|
+
};
|
|
44
63
|
// Per-tool usage this turn, for tools that declare their own cap (e.g. web_search
|
|
45
64
|
// bounds per-turn spend). Enforced alongside the global budget below.
|
|
46
65
|
const perToolUsed = new Map();
|
|
@@ -147,9 +166,9 @@ export class TurnLoop {
|
|
|
147
166
|
}
|
|
148
167
|
const results = await Promise.all(toolCalls.map(async (call, i) => {
|
|
149
168
|
const denied = denial[i];
|
|
150
|
-
const result = denied
|
|
169
|
+
const result = withRepeatNotice(call, denied
|
|
151
170
|
? { error: denied }
|
|
152
|
-
: await this.registry.dispatch(call.function.name, call.function.arguments);
|
|
171
|
+
: await this.registry.dispatch(call.function.name, call.function.arguments));
|
|
153
172
|
// Ends may arrive out of completion order; the TUI matches rows by call id.
|
|
154
173
|
emit({
|
|
155
174
|
type: 'tool_call_end',
|
|
@@ -175,9 +194,9 @@ export class TurnLoop {
|
|
|
175
194
|
// Past a budget/cap, don't dispatch: feed the model an error instead, so it
|
|
176
195
|
// wraps up with what it has (a normal answer, not a hard stop).
|
|
177
196
|
const denied = denial[i];
|
|
178
|
-
const result = denied
|
|
197
|
+
const result = withRepeatNotice(call, denied
|
|
179
198
|
? { error: denied }
|
|
180
|
-
: await this.registry.dispatch(call.function.name, call.function.arguments);
|
|
199
|
+
: await this.registry.dispatch(call.function.name, call.function.arguments));
|
|
181
200
|
emit({
|
|
182
201
|
type: 'tool_call_end',
|
|
183
202
|
id: call.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turnLoop.js","sourceRoot":"","sources":["../../../src/core/turnLoop.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"turnLoop.js","sourceRoot":"","sources":["../../../src/core/turnLoop.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,10 +14,18 @@ export interface UpdateCache {
|
|
|
14
14
|
latestVersion: string;
|
|
15
15
|
channel: string;
|
|
16
16
|
lastCheckedAt: number;
|
|
17
|
+
/** Version the user chose "Skip until next version" for (mutes the startup prompt only). */
|
|
18
|
+
dismissedVersion?: string;
|
|
17
19
|
}
|
|
18
20
|
export interface UpdateNotice {
|
|
19
21
|
latest: string;
|
|
20
22
|
command: string;
|
|
23
|
+
/**
|
|
24
|
+
* True when the user dismissed exactly this version ("Skip until next version").
|
|
25
|
+
* Mutes the interactive startup prompt; advisory lines (scrollback note, /status,
|
|
26
|
+
* exec stderr) deliberately ignore it — Codex behaves the same way.
|
|
27
|
+
*/
|
|
28
|
+
dismissed: boolean;
|
|
21
29
|
}
|
|
22
30
|
/** Injectable deps so tests never touch the network, the real cache, or the clock. */
|
|
23
31
|
export interface UpdateCheckDeps {
|
|
@@ -28,6 +36,8 @@ export interface UpdateCheckDeps {
|
|
|
28
36
|
/** Resolved from env/config when omitted. */
|
|
29
37
|
enabled?: boolean;
|
|
30
38
|
}
|
|
39
|
+
/** Strict semver check (same charset-constrained grammar as compareVersions). */
|
|
40
|
+
export declare function isValidVersion(version: string): boolean;
|
|
31
41
|
/** The npm dist-tag this build tracks: prerelease test builds follow `test`. */
|
|
32
42
|
export declare function channelForVersion(version: string): 'test' | 'latest';
|
|
33
43
|
export declare function upgradeCommand(channel: string): string;
|
|
@@ -38,9 +48,34 @@ export declare function upgradeCommand(channel: string): string;
|
|
|
38
48
|
* (test.10 > test.9); a release outranks its own prereleases.
|
|
39
49
|
*/
|
|
40
50
|
export declare function compareVersions(a: string, b: string): number;
|
|
51
|
+
/**
|
|
52
|
+
* Persist "Skip until next version": mute the startup prompt for exactly `version`.
|
|
53
|
+
* With no cache yet (catalog-sourced notice before the first registry fetch), a minimal
|
|
54
|
+
* stale-marked cache is written so the dismissal still sticks — lastCheckedAt 0 keeps the
|
|
55
|
+
* background refresh firing next start, and refresh() preserves the dismissal. Failures
|
|
56
|
+
* are silent — worst case the user is prompted again next start.
|
|
57
|
+
*/
|
|
58
|
+
export declare function dismissUpdateVersion(version: string, cacheFile?: string): Promise<void>;
|
|
41
59
|
/**
|
|
42
60
|
* Cache-only answer for THIS start; spawns the background refresh when the cache
|
|
43
61
|
* is stale, missing, or from another channel. Returns a notice only when the
|
|
44
62
|
* cached latest genuinely outranks the running version.
|
|
45
63
|
*/
|
|
46
64
|
export declare function maybeCheckForUpdate(deps?: UpdateCheckDeps): Promise<UpdateNotice | null>;
|
|
65
|
+
/** Server-driven version steering, published through the model-catalog endpoint. */
|
|
66
|
+
export interface CatalogCliVersions {
|
|
67
|
+
latestVersion?: string;
|
|
68
|
+
minVersion?: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Merge the two notice sources: the npm-registry cache (20h TTL) and the catalog's
|
|
72
|
+
* server-driven `cli.latest_version` (fresh every start — the catalog is fetched each
|
|
73
|
+
* run, so a release notice no longer waits out the registry cache). The newer latest
|
|
74
|
+
* wins. `belowMinimum` is set when the running version is under the catalog's
|
|
75
|
+
* `cli.min_version` — computed even when the user disabled update checks, because it
|
|
76
|
+
* is a support boundary, not advertising.
|
|
77
|
+
*/
|
|
78
|
+
export declare function effectiveUpdateNotice(catalog?: CatalogCliVersions, deps?: UpdateCheckDeps): Promise<{
|
|
79
|
+
notice: UpdateNotice | null;
|
|
80
|
+
belowMinimum: string | null;
|
|
81
|
+
}>;
|