@duetso/agent 0.3.2 → 0.3.3

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 CHANGED
@@ -42,6 +42,7 @@ Both Claude Code and Codex are excellent at the _one-turn_ job: edit this file,
42
42
  | **Memory of images** | Images stay in the active transcript only | Images stay in the active transcript only | **Vision-capable models observe screenshots and UI captures into text observations the agent can recall on later turns** |
43
43
  | **Resume across a fresh process** | `claude --resume <id>` / `--bg` background sessions — replays a saved transcript | `codex resume <id>` — replays a saved transcript from `~/.codex/sessions/` | **`TurnState` snapshot on disk; any fresh process — new sandbox, serverless invocation, different machine — resumes with `runner.start({ state })`** |
44
44
  | **Long-running, multi-step workflows** | Background sessions; no native poll/wait/state-machine primitives | Transcript-driven; no native poll/wait/state-machine primitives | **Relays: agent-routed state machines with five state kinds — `agent`, `script`, `poll`, `timer`, `terminal`. Wait days for a reply between turns.** |
45
+ | **Model routing** | Manual — `/model` picks the model | Manual — `-m`/config picks the model | **Routed — a classifier picks model + effort per turn and reroutes mid-turn; an `ask_advisor` tool escalates the hardest decisions to a stronger model** |
45
46
  | **Models you can use** | Anthropic | OpenAI (Sign in with ChatGPT or API key) | **Anthropic, OpenAI, OpenRouter, Vercel AI Gateway, Duet Gateway** |
46
47
  | **License** | Proprietary (closed-source CLI) | Apache-2.0 | **Apache-2.0** |
47
48
 
@@ -54,6 +55,14 @@ Two things that don't get a section of their own below, but that follow from the
54
55
 
55
56
  ## What we do differently
56
57
 
58
+ ### The model router + advisor
59
+
60
+ You don't pick a model; you pick a tier. Bare `duet` runs the `frontier` **virtual model**: a cheap classifier reads each prompt and picks the concrete model + effort for that kind of work — visual, planning, implementation, writing — and keeps re-checking as the turn progresses, so a session that starts by reading screenshots on a vision model can finish the backend work on a coding one. Cache economics are part of the decision, not a hysteresis hack: the classifier is told that switching discards the provider prompt cache and to prefer the current model while the kind of work stays the same, and compaction and rerouting are mutual milestones — reroute checks run when the cache is already broken, and a model switch hands the new model a compact prefix. Step outputs feed back in too: reading an image on a text-only route can reroute mid-turn to a vision-capable model.
61
+
62
+ The advisor is the escalation valve. Tiers that enable it inject a no-parameter `ask_advisor` tool that ships a curated slice of the transcript — the executor's system prompt, the first user message, live memory observations as the elided middle — to a stronger model. Consulting is mandatory for consequential architecture calls, conflicting constraints, and important unknowns, and forbidden for routine local work; routing changes nudge the advisor, and advisor consults trigger reclassification.
63
+
64
+ All of the judgment lives in prose, not code: route descriptions, the cache-switching preference, and advisor timing are editable text in the routing table, so tuning the router is an edit to `.duet/models.json`, not a rebuild. `duet route "<prompt>"` shows exactly what the classifier would decide; a concrete `--model` name pins that model and bypasses routing entirely. Design rationale and invariants: `specs/done/model-router/`.
65
+
57
66
  ### Memory, woven in
58
67
 
59
68
  Memory and compaction are the same primitive: observational memory _is_ how context survives between turns. The runner observes its own transcript, reflects when observations grow, and writes durable rows to PGlite — text observations for messages and images alike, so screenshots and UI captures stay recallable on later turns without re-attaching bytes. Each turn's prompt prefix is frozen between deliberate refresh points: curated memory files load from the project ancestry at session start or explicit skills reload, while long-term and current-session observations rebuild at compaction events. That separation keeps trained knowledge deterministic, prevents it from displacing observational memory, and preserves the provider's prompt cache turn-over-turn. Database observations outside the frozen prefix stay reachable through `recall_memory` — hybrid retrieval over pgvector cosine similarity and tsvector keyword search, fused via Reciprocal Rank Fusion, with optional paraphrased query expansion. Embeddings run in a background worker so foreground turns never block.
@@ -276,14 +285,12 @@ Design rationale and invariants: the duet repo's
276
285
 
277
286
  Duet routes every model through one of three gateways — the Duet gateway (`DUET_API_KEY`), the Vercel AI Gateway (`AI_GATEWAY_API_KEY`), or OpenRouter (`OPENROUTER_API_KEY`). If you would rather manage keys yourself, use `duet env` (see [CLI Env Setup](#cli-env-setup) below) or set one of those keys in the environment, `<workdir>/.env`, or `~/.duet/.env`. Gateway inference (preferring those credentials in that order) decides which gateway serves each concrete model.
278
287
 
279
- When `--model` is omitted, duet runs the routed `frontier` **virtual model**: a cheap classifier reads each prompt and picks the concrete model + effort per kind of work (visual work, planning, implementation, writing, general questions), re-checking as a turn progresses. `--model frontier|balanced|economy` selects a routing tier explicitly; any concrete model name pins that model and bypasses routing.
280
-
281
- - **Tune it:** `duet route "<prompt>"` shows what the classifier would decide; `duet config export` writes the routing table to `.duet/models.json` (routes, efforts, advisor policy, `stepTriggers` keywords); `/route` inspects a live session.
282
- - **Override discovery mirrors skills:** the nearest `.duet/models.json` walking up from the working directory wins, with `~/.duet/models.json` as the global fallback. Each file is a complete replacement, never a merge.
283
- - **It stays out of the way:** tiers whose routes all resolve to one identical model+effort never call the classifier, and concrete pins bypass routing entirely.
284
- - **Mid-turn awareness:** step outputs can reroute — reading an image on a text-only route applies that route's optional `visionFallbackModelName` (absent a fallback, the route runs normally and the model reports it cannot see the image). Compaction and rerouting are mutual milestones: compaction triggers a routing check, and a model switch starts the new model from a compact wire prefix — both because the provider cache is already broken at that moment.
288
+ When `--model` is omitted, duet runs the routed `frontier` **virtual model** see [The model router + advisor](#the-model-router--advisor) for how routing and the advisor work. The flags and config:
285
289
 
286
- Design rationale and invariants: `specs/done/model-router/`.
290
+ - `--model frontier|balanced|economy` selects a routing tier explicitly; any concrete model name pins that model and bypasses routing.
291
+ - `duet config export` writes the routing table to `.duet/models.json` (routes, efforts, advisor policy, `stepTriggers` keywords, per-route `visionFallbackModelName`); `/route` inspects a live session.
292
+ - Override discovery mirrors skills: the nearest `.duet/models.json` walking up from the working directory wins, with `~/.duet/models.json` as the global fallback. Each file is a complete replacement, never a merge.
293
+ - It stays out of the way: tiers whose routes all resolve to one identical model+effort never call the classifier.
287
294
 
288
295
  Use `--provider <name>` to pin a gateway without picking a model:
289
296
 
@@ -441,7 +448,9 @@ The CLI also prints the observation content to stdout, so it's pipeable: `duet t
441
448
  <details>
442
449
  <summary><b>CLI Login</b></summary>
443
450
 
444
- `duet login` is the recommended setup path. It opens a browser to sign in and writes `DUET_API_KEY` for the selected org to `~/.duet/.env`.
451
+ `duet login` is the recommended setup path. It opens a browser, where you choose
452
+ the workspace during approval, then writes that workspace's `DUET_API_KEY` to
453
+ `~/.duet/.env`.
445
454
 
446
455
  That single `DUET_API_KEY` is your access token to the Duet AI Gateway: frontier language models (Claude, GPT, Gemini), image generation (GPT Image 2), video generation (Seedance), and the Firecrawl-powered web scraping and search skills, all behind one key.
447
456
 
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duetso/agent",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "An opinionated full-stack agent turn runner with native memories, interrupts, and multi-agent orchestration",
5
5
  "keywords": [
6
6
  "agent",
@@ -1 +1 @@
1
- {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../src/cli/help.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CA+FtD;AAED,wBAAgB,cAAc,IAAI,IAAI,CAqBrC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAiBvC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAsBnC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAqBtC;AAED,wBAAgB,eAAe,IAAI,IAAI,CA4DtC;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAgCzC;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CA0C5C;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAuC7C;AAED,wBAAgB,cAAc,IAAI,IAAI,CAsCrC;AAED,wBAAgB,cAAc,IAAI,IAAI,CA0ErC;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAiB5C;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAe1D"}
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../src/cli/help.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CA+FtD;AAED,wBAAgB,cAAc,IAAI,IAAI,CAoBrC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAiBvC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAsBnC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAqBtC;AAED,wBAAgB,eAAe,IAAI,IAAI,CA4DtC;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAgCzC;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CA0C5C;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAuC7C;AAED,wBAAgB,cAAc,IAAI,IAAI,CAsCrC;AAED,wBAAgB,cAAc,IAAI,IAAI,CA0ErC;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAiB5C;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAe1D"}
@@ -12,7 +12,7 @@ duet — An opinionated full-stack agent runner
12
12
 
13
13
  USAGE
14
14
  duet [options] [prompt]
15
- duet login --workspace <slug> [--no-browser]
15
+ duet login [--no-browser]
16
16
  duet connect [--status [--json] | --disconnect <provider>]
17
17
  duet env [--env-file <path>] [--import [path]|--keys]
18
18
  duet skills [--workdir <path>]
@@ -23,7 +23,7 @@ USAGE
23
23
  echo "prompt" | duet
24
24
 
25
25
  COMMANDS
26
- login Sign in via device flow; saves a workspace-scoped DUET_API_KEY (recommended)
26
+ login Sign in via device flow; saves a DUET_API_KEY (recommended)
27
27
  connect Show or remove connected ChatGPT and GitHub Copilot subscriptions
28
28
  env Manually create or update the shared duet env file with provider API keys
29
29
  skills List installed skills + collisions as JSON
@@ -92,7 +92,7 @@ EXAMPLES
92
92
  duet --env-file ~/.config/duet/env "review this repo"
93
93
  duet --workdir ./my-project "refactor the auth module"
94
94
  duet --resume session_abc123 --workdir ./my-project
95
- duet login --workspace acme
95
+ duet login
96
96
  duet env
97
97
  duet memory
98
98
  duet model -m openai/gpt-5.6-sol "write a haiku about gateways"
@@ -107,14 +107,13 @@ export function printLoginHelp() {
107
107
  duet login — Sign in via device flow
108
108
 
109
109
  USAGE
110
- duet login --workspace <slug> [--env-file <path>] [--no-browser]
110
+ duet login [--env-file <path>] [--no-browser]
111
111
 
112
- Requests a workspace-scoped device code, prints the user code and verification
113
- URL, waits for approval, then writes the workspace's DUET_API_KEY to the shared
114
- env file.
112
+ Requests a device code, prints the user code and verification URL, waits for
113
+ approval, then writes the selected workspace's DUET_API_KEY to the shared env
114
+ file. You choose the workspace in the browser during approval.
115
115
 
116
116
  OPTIONS
117
- --workspace <slug> Workspace slug for the one-workspace API key (or DUET_WORKSPACE)
118
117
  --env-file <path> Env file to write the API key to (default: ${DEFAULT_DUET_ENV_FILE})
119
118
  --no-browser Print the verification URL instead of opening a browser
120
119
  -h, --help Show this help
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAEjD,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;gDAyBkC,WAAW;;;;;;;;;;;;;gHAaqD,+BAA+B;;;;;oFAK3D,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDxG,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;wEAY0D,qBAAqB;;;;;;;CAO5F,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;CAeb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;yDAa2C,qBAAqB;;;;;;IAM1E,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;CAChC,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;CAmBb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0Db,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8Bb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwEb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;CAeb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,OAAO,CAAC,GAAG,CAAC;oCACsB,WAAW;;;;;;;;;;;;CAY9C,CAAC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAEjD,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;gDAyBkC,WAAW;;;;;;;;;;;;;gHAaqD,+BAA+B;;;;;oFAK3D,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDxG,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;wEAW0D,qBAAqB;;;;;;;CAO5F,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;CAeb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;yDAa2C,qBAAqB;;;;;;IAM1E,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;CAChC,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;CAmBb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0Db,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8Bb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwEb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;CAeb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,OAAO,CAAC,GAAG,CAAC;oCACsB,WAAW;;;;;;;;;;;;CAY9C,CAAC,CAAC;AACH,CAAC"}
@@ -5,8 +5,8 @@ export interface LoginCommandIO {
5
5
  /**
6
6
  * Run `duet login`.
7
7
  *
8
- * Starts the Duet device flow for a workspace-scoped API key and persists the
9
- * returned `DUET_API_KEY` to the shared env file.
8
+ * Starts the Duet device flow and persists the returned `DUET_API_KEY` to the
9
+ * shared env file.
10
10
  */
11
11
  export declare function runLoginCommand(args: string[], io?: LoginCommandIO): Promise<void>;
12
12
  //# sourceMappingURL=login.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/login.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgD5F"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/login.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoC5F"}
@@ -1,17 +1,16 @@
1
1
  import { loginWithDeviceFlow } from "../lib/login.js";
2
2
  import { printLoginHelp } from "./help.js";
3
- import { defaultDuetEnvFilePath, fail, mergeEnvEntries, resolveUserPath, usageError, } from "./shared.js";
3
+ import { defaultDuetEnvFilePath, fail, mergeEnvEntries, resolveUserPath } from "./shared.js";
4
4
  /**
5
5
  * Run `duet login`.
6
6
  *
7
- * Starts the Duet device flow for a workspace-scoped API key and persists the
8
- * returned `DUET_API_KEY` to the shared env file.
7
+ * Starts the Duet device flow and persists the returned `DUET_API_KEY` to the
8
+ * shared env file.
9
9
  */
10
10
  export async function runLoginCommand(args, io = {}) {
11
11
  const cwd = io.cwd ?? process.cwd();
12
12
  let envFilePathOverride = io.envFilePath;
13
13
  let noBrowser = false;
14
- let workspaceSlug;
15
14
  for (let i = 0; i < args.length; i++) {
16
15
  switch (args[i]) {
17
16
  case "--env-file":
@@ -25,11 +24,6 @@ export async function runLoginCommand(args, io = {}) {
25
24
  case "--skip-skill-sync":
26
25
  // Deprecated no-op; tolerated so scripts that pass it do not break.
27
26
  break;
28
- case "--workspace":
29
- if (!args[i + 1] || args[i + 1]?.startsWith("-"))
30
- fail(`Missing value for ${args[i]}`);
31
- workspaceSlug = args[++i];
32
- break;
33
27
  case "--help":
34
28
  case "-h":
35
29
  printLoginHelp();
@@ -38,14 +32,10 @@ export async function runLoginCommand(args, io = {}) {
38
32
  fail(`Unknown login option: ${args[i]}`);
39
33
  }
40
34
  }
41
- workspaceSlug = workspaceSlug?.trim() || process.env.DUET_WORKSPACE?.trim();
42
- if (!workspaceSlug) {
43
- usageError("Missing required workspace. Pass `duet login --workspace <slug>` or set DUET_WORKSPACE; login creates one DUET_API_KEY scoped to one workspace.");
44
- }
45
35
  const targetEnvFile = envFilePathOverride
46
36
  ? resolveUserPath(envFilePathOverride, cwd)
47
37
  : defaultDuetEnvFilePath();
48
- const result = await loginWithDeviceFlow({ noBrowser, workspaceSlug });
38
+ const result = await loginWithDeviceFlow({ noBrowser });
49
39
  await mergeEnvEntries(targetEnvFile, new Map([["DUET_API_KEY", result.apiKey]]));
50
40
  console.error(`Saved DUET_API_KEY for ${result.workspaceName} (${result.workspaceSlug}) to ${targetEnvFile}`);
51
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,sBAAsB,EACtB,IAAI,EACJ,eAAe,EACf,eAAe,EACf,UAAU,GACX,MAAM,aAAa,CAAC;AAOrB;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAc,EAAE,KAAqB,EAAE;IAC3E,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACpC,IAAI,mBAAmB,GAAuB,EAAE,CAAC,WAAW,CAAC;IAC7D,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,aAAiC,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,KAAK,YAAY;gBACf,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC;oBAAE,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvF,mBAAmB,GAAG,IAAI,CAAC,EAAE,CAAC,CAAE,CAAC;gBACjC,MAAM;YACR,KAAK,cAAc;gBACjB,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM;YACR,KAAK,mBAAmB;gBACtB,oEAAoE;gBACpE,MAAM;YACR,KAAK,aAAa;gBAChB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC;oBAAE,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvF,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,CAAE,CAAC;gBAC3B,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,cAAc,EAAE,CAAC;gBACjB,OAAO;YACT;gBACE,IAAI,CAAC,yBAAyB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,aAAa,GAAG,aAAa,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;IAC5E,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,UAAU,CACR,iJAAiJ,CAClJ,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,mBAAmB;QACvC,CAAC,CAAC,eAAe,CAAC,mBAAmB,EAAE,GAAG,CAAC;QAC3C,CAAC,CAAC,sBAAsB,EAAE,CAAC;IAE7B,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;IAEvE,MAAM,eAAe,CAAC,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,KAAK,CACX,0BAA0B,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa,QAAQ,aAAa,EAAE,CAC/F,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO7F;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAc,EAAE,KAAqB,EAAE;IAC3E,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACpC,IAAI,mBAAmB,GAAuB,EAAE,CAAC,WAAW,CAAC;IAC7D,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,KAAK,YAAY;gBACf,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC;oBAAE,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvF,mBAAmB,GAAG,IAAI,CAAC,EAAE,CAAC,CAAE,CAAC;gBACjC,MAAM;YACR,KAAK,cAAc;gBACjB,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM;YACR,KAAK,mBAAmB;gBACtB,oEAAoE;gBACpE,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,cAAc,EAAE,CAAC;gBACjB,OAAO;YACT;gBACE,IAAI,CAAC,yBAAyB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,mBAAmB;QACvC,CAAC,CAAC,eAAe,CAAC,mBAAmB,EAAE,GAAG,CAAC;QAC3C,CAAC,CAAC,sBAAsB,EAAE,CAAC;IAE7B,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAExD,MAAM,eAAe,CAAC,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,KAAK,CACX,0BAA0B,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa,QAAQ,aAAa,EAAE,CAC/F,CAAC;AACJ,CAAC"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Device-code login bootstrap for the duet CLI.
3
3
  *
4
- * 1. Request a device code from `POST <api>/v1/device/code` with the selected
5
- * workspace-scoped AI capability.
4
+ * 1. Request a device code from `POST <api>/v1/device/code` with the CLI
5
+ * capability set.
6
6
  * 2. Print the server-supplied user code and verification URI, opening the URI
7
7
  * in a browser unless `--no-browser` was set.
8
8
  * 3. Poll `POST <api>/v1/device/token` at the server interval until the user
@@ -15,12 +15,6 @@ export interface LoginResult {
15
15
  workspaceName: string;
16
16
  }
17
17
  export interface LoginOptions {
18
- /**
19
- * Workspace slug used to request a one-workspace token. The CLI requires it
20
- * before starting login because every generated `DUET_API_KEY` is scoped to
21
- * exactly one workspace.
22
- */
23
- workspaceSlug: string;
24
18
  /** Override the Duet API base URL; defaults to `DUET_API_BASE_URL` or production. */
25
19
  apiBaseUrl?: string;
26
20
  /** Print the verification URL instead of opening a browser. */
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/lib/login.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,wCAAwC;IACxC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,qDAAqD;IACrD,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAmBD,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA4DrF"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/lib/login.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,wCAAwC;IACxC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,qDAAqD;IACrD,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAiBD,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAiErF"}
@@ -1,12 +1,21 @@
1
1
  import { spawn } from "node:child_process";
2
2
  import { resolveDuetApiBaseUrl } from "./duet-api-url.js";
3
+ // Deliberately duplicated from LOGIN_CAPABILITIES in duet's @repo/contract.
4
+ const LOGIN_CAPABILITIES = [
5
+ "files:read",
6
+ "files:write",
7
+ "memory",
8
+ "sessions",
9
+ "services",
10
+ "integrations",
11
+ ];
3
12
  export async function loginWithDeviceFlow(options) {
4
13
  const apiBaseUrl = options.apiBaseUrl ?? resolveDuetApiBaseUrl();
5
14
  const fetchFn = options.fetchFn ?? fetch;
6
15
  const log = options.log ?? ((message) => process.stderr.write(`${message}\n`));
7
16
  const sleep = options.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
8
17
  const code = await postJson(fetchFn, `${apiBaseUrl}/v1/device/code`, {
9
- scopes: [`ws:${options.workspaceSlug}:ai`],
18
+ capabilities: LOGIN_CAPABILITIES,
10
19
  });
11
20
  log(`User code: ${code.user_code}`);
12
21
  log(`Verification URL: ${code.verification_uri}`);
@@ -24,15 +33,18 @@ export async function loginWithDeviceFlow(options) {
24
33
  device_code: code.device_code,
25
34
  });
26
35
  if (token.status === "approved") {
27
- if (typeof token.access_token !== "string" || !token.access_token) {
36
+ if (typeof token.access_token !== "string" ||
37
+ !token.access_token ||
38
+ typeof token.workspace?.slug !== "string" ||
39
+ !token.workspace.slug ||
40
+ typeof token.workspace.name !== "string" ||
41
+ !token.workspace.name) {
28
42
  throw new Error("Device token response was malformed.");
29
43
  }
30
- const workspaceSlug = token.workspace?.slug ?? token.workspace_slug ?? options.workspaceSlug;
31
- const workspaceName = token.workspace?.name ?? token.workspace_name ?? workspaceSlug;
32
44
  return {
33
45
  apiKey: token.access_token,
34
- workspaceSlug,
35
- workspaceName,
46
+ workspaceSlug: token.workspace.slug,
47
+ workspaceName: token.workspace.name,
36
48
  };
37
49
  }
38
50
  if (token.status === "pending") {
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/lib/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/lib/login.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/model-resolution/catalog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,mFAAmF;AACnF,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG,mBAAmB,GAAG,YAAY,CAAC;AAErF,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAErE,oFAAoF;AACpF,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,MAAM,GACN,QAAQ,GACR,OAAO,GACP,KAAK,GACL,OAAO,GACP,MAAM,GACN,MAAM,GACN,MAAM,GACN,UAAU,GACV,KAAK,CAAC;AAEV,MAAM,WAAW,kBAAkB;IACjC,oFAAoF;IACpF,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,yFAAyF;IACzF,YAAY,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,kDAAkD;IAClD,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;CACnB;AAkBD,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAC5C,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,kBAAkB,EAOvD,CAAC;AA2OF,uFAAuF;AACvF,eAAO,MAAM,aAAa,sCAA4D,CAAC;AAEvF,2FAA2F;AAC3F,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvE;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAQ/F;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAE5E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAE3E;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,sBAAsB,EAAE,CAQvF;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhG;AAED,kFAAkF;AAClF,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,CAGpB;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAIjG;AAYD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAerF;AAED,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAqC,CAAC;AAEvF,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAEvE;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAEtE"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/model-resolution/catalog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,mFAAmF;AACnF,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG,mBAAmB,GAAG,YAAY,CAAC;AAErF,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAErE,oFAAoF;AACpF,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,MAAM,GACN,QAAQ,GACR,OAAO,GACP,KAAK,GACL,OAAO,GACP,MAAM,GACN,MAAM,GACN,MAAM,GACN,UAAU,GACV,KAAK,CAAC;AAEV,MAAM,WAAW,kBAAkB;IACjC,oFAAoF;IACpF,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,yFAAyF;IACzF,YAAY,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,kDAAkD;IAClD,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;CACnB;AAkBD,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAC5C,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,kBAAkB,EAOvD,CAAC;AA0OF,uFAAuF;AACvF,eAAO,MAAM,aAAa,sCAA4D,CAAC;AAEvF,2FAA2F;AAC3F,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvE;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAQ/F;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAE5E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAE3E;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,sBAAsB,EAAE,CAQvF;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhG;AAED,kFAAkF;AAClF,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,CAGpB;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAIjG;AAYD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAerF;AAED,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAqC,CAAC;AAEvF,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAEvE;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAEtE"}
@@ -22,12 +22,10 @@ const DEFAULT_MODEL_BY_PROVIDER = {
22
22
  const MEMORY_MODEL_BY_PROVIDER = {
23
23
  "duet-gateway": DEFAULT_CLI_MEMORY_MODEL,
24
24
  "vercel-ai-gateway": DEFAULT_CLI_MEMORY_MODEL,
25
- // gpt-5.6-luna has no OpenRouter route: pi-ai's catalog does not ship it, so
26
- // `openrouter:openai/gpt-5.6-luna` resolves to undefined (unlike the
27
- // duet/vercel gateway routes, which synthesize an openai-responses
28
- // passthrough). Keep OPENROUTER_API_KEY-only users on haiku-4.5, which pi-ai
29
- // ships directly, until pi-ai adds luna.
30
- openrouter: "haiku-4.5",
25
+ // Memory stays on luna for every router. OpenRouter serves luna even
26
+ // though pi-ai's catalog lags resolution clones a shipped OpenRouter
27
+ // sibling (MISSING_MODEL_CLONES in duet-gateway.ts).
28
+ openrouter: DEFAULT_CLI_MEMORY_MODEL,
31
29
  };
32
30
  const MODEL_DEFINITIONS = [
33
31
  {
@@ -117,17 +115,18 @@ const MODEL_DEFINITIONS = [
117
115
  // through the duet and vercel gateways under `openai/gpt-5.6-luna`, both of
118
116
  // which synthesize an openai-responses passthrough for it (the duet path via
119
117
  // `resolveDuetGatewayUpstream`, the vercel path via `resolveMissingModel` in
120
- // duet-gateway.ts) so its low reasoning effort survives to the wire. pi-ai's
121
- // catalog does not ship luna, so the `openrouter:openai/gpt-5.6-luna` route
122
- // would resolve to an undefined model; it is intentionally omitted until
123
- // pi-ai adds it, and OPENROUTER-only users stay on haiku-4.5 (see
124
- // MEMORY_MODEL_BY_PROVIDER).
118
+ // duet-gateway.ts) so its low reasoning effort survives to the wire. The
119
+ // OpenRouter route is served live but absent from pi-ai's catalog, so it
120
+ // resolves through the openrouter MISSING_MODEL_CLONES entry.
125
121
  family: "luna",
126
122
  shorthand: "gpt-5.6-luna",
127
123
  aliases: ["openai/gpt-5.6-luna", "openai/gpt-5-6-luna"],
128
124
  modelsByProvider: {
129
125
  "duet-gateway": "openai/gpt-5.6-luna",
130
126
  "vercel-ai-gateway": "openai/gpt-5.6-luna",
127
+ // OpenRouter serves luna; pi-ai's catalog lags, so resolution clones a
128
+ // shipped OpenRouter sibling (MISSING_MODEL_CLONES in duet-gateway.ts).
129
+ openrouter: "openai/gpt-5.6-luna",
131
130
  "openai-codex": "gpt-5.6-luna",
132
131
  },
133
132
  },
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/model-resolution/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/model-resolution/catalog.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"duet-gateway.d.ts","sourceRoot":"","sources":["../../../src/model-resolution/duet-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAuE3E;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AACvD,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AAEjE,wBAAgB,qBAAqB,IAAI,MAAM,CAI9C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CASnE;AAuBD,+EAA+E;AAC/E,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAY/F;AAmGD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAY7F;AA4CD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU1E"}
1
+ {"version":3,"file":"duet-gateway.d.ts","sourceRoot":"","sources":["../../../src/model-resolution/duet-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAuE3E;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AACvD,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AAEjE,wBAAgB,qBAAqB,IAAI,MAAM,CAI9C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CASnE;AAuBD,+EAA+E;AAC/E,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAY/F;AA0GD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAY7F;AA4CD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU1E"}
@@ -202,6 +202,13 @@ const MISSING_MODEL_CLONES = {
202
202
  },
203
203
  ],
204
204
  openrouter: [
205
+ {
206
+ // OpenRouter serves gpt-5.6-luna; pi-ai's catalog just hasn't shipped
207
+ // the route (David, 2026-07-24). Drop once it does.
208
+ from: "openai/gpt-5.5",
209
+ to: "openai/gpt-5.6-luna",
210
+ overrides: OPENAI_GATEWAY_MODEL_OVERRIDES["openai/gpt-5.6-luna"],
211
+ },
205
212
  {
206
213
  from: "moonshotai/kimi-k2.6",
207
214
  to: "moonshotai/kimi-k3",
@@ -1 +1 @@
1
- {"version":3,"file":"duet-gateway.js","sourceRoot":"","sources":["../../../src/model-resolution/duet-gateway.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"duet-gateway.js","sourceRoot":"","sources":["../../../src/model-resolution/duet-gateway.ts"],"names":[],"mappings":"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"}
@@ -14,14 +14,14 @@ export declare function createSystemPromptWithAppendedLayers(input: {
14
14
  * (agent-state) system prompt.
15
15
  *
16
16
  * A state agent is created in `agent` mode and inherits the host's full
17
- * `systemInstructions` personawhich, in production, is the Duet
18
- * chat-assistant identity ("respond to the user's latest message in this
19
- * thread; if there is no new message, don't invent work"). Nothing else in
20
- * the base prompt tells the sub-agent it is *not* a live chat assistant, so
21
- * when its task involves empty threads, missing messages, or repro fixtures
22
- * about absent user input, the sub-agent can stop treating that material as
23
- * its *subject* and start treating it as its *own* situation. It then flips
24
- * into chat-agent mode, hunts for a "missing" user message, and gives up with
17
+ * `systemInstructions` layer — in production, the Duet gateway's developer
18
+ * base prompt (passed via `--system-prompt`), which frames the agent as a
19
+ * conversational assistant inside the Duet product. Nothing else in the base
20
+ * prompt tells the sub-agent it is *not* a live chat assistant, so when its
21
+ * task involves empty threads, missing messages, or repro fixtures about
22
+ * absent user input, the sub-agent can stop treating that material as its
23
+ * *subject* and start treating it as its *own* situation. It then flips into
24
+ * chat-agent mode, hunts for a "missing" user message, and gives up with
25
25
  * "I don't see a new message to act on" instead of finishing its task — and a
26
26
  * parent that believes that report can cancel the whole relay.
27
27
  *
@@ -29,7 +29,7 @@ export declare function createSystemPromptWithAppendedLayers(input: {
29
29
  * the prompt it was handed, there is no live thread to service, and any
30
30
  * empty-/missing-message material it sees is data to operate on, never a
31
31
  * reason to stand down. It is placed *before* `systemInstructions` so the
32
- * worker identity is the sub-agent's primary role and the inherited chat
32
+ * worker identity is the sub-agent's primary role and the inherited product
33
33
  * persona reads as secondary context, not the top-level instruction.
34
34
  */
35
35
  export declare function createStateAgentSystemPromptLayer(context?: {
@@ -48,14 +48,14 @@ export function createSystemPromptWithAppendedLayers(input) {
48
48
  * (agent-state) system prompt.
49
49
  *
50
50
  * A state agent is created in `agent` mode and inherits the host's full
51
- * `systemInstructions` personawhich, in production, is the Duet
52
- * chat-assistant identity ("respond to the user's latest message in this
53
- * thread; if there is no new message, don't invent work"). Nothing else in
54
- * the base prompt tells the sub-agent it is *not* a live chat assistant, so
55
- * when its task involves empty threads, missing messages, or repro fixtures
56
- * about absent user input, the sub-agent can stop treating that material as
57
- * its *subject* and start treating it as its *own* situation. It then flips
58
- * into chat-agent mode, hunts for a "missing" user message, and gives up with
51
+ * `systemInstructions` layer — in production, the Duet gateway's developer
52
+ * base prompt (passed via `--system-prompt`), which frames the agent as a
53
+ * conversational assistant inside the Duet product. Nothing else in the base
54
+ * prompt tells the sub-agent it is *not* a live chat assistant, so when its
55
+ * task involves empty threads, missing messages, or repro fixtures about
56
+ * absent user input, the sub-agent can stop treating that material as its
57
+ * *subject* and start treating it as its *own* situation. It then flips into
58
+ * chat-agent mode, hunts for a "missing" user message, and gives up with
59
59
  * "I don't see a new message to act on" instead of finishing its task — and a
60
60
  * parent that believes that report can cancel the whole relay.
61
61
  *
@@ -63,7 +63,7 @@ export function createSystemPromptWithAppendedLayers(input) {
63
63
  * the prompt it was handed, there is no live thread to service, and any
64
64
  * empty-/missing-message material it sees is data to operate on, never a
65
65
  * reason to stand down. It is placed *before* `systemInstructions` so the
66
- * worker identity is the sub-agent's primary role and the inherited chat
66
+ * worker identity is the sub-agent's primary role and the inherited product
67
67
  * persona reads as secondary context, not the top-level instruction.
68
68
  */
69
69
  export function createStateAgentSystemPromptLayer(context) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duetso/agent",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "An opinionated full-stack agent turn runner with native memories, interrupts, and multi-agent orchestration",
5
5
  "keywords": [
6
6
  "agent",