@owlmeans/viable-sdk 0.1.18-rc.20 → 0.1.18-rc.22

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.
Files changed (50) hide show
  1. package/README.md +1 -1
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/viable-sdk/SKILL.md +47 -22
  4. package/build/api/remote.d.ts +2 -3
  5. package/build/api/remote.d.ts.map +1 -1
  6. package/build/api/remote.js +6 -14
  7. package/build/api/remote.js.map +1 -1
  8. package/build/consts.d.ts +13 -13
  9. package/build/consts.d.ts.map +1 -1
  10. package/build/consts.js +17 -13
  11. package/build/consts.js.map +1 -1
  12. package/build/context/index.d.ts +10 -1
  13. package/build/context/index.d.ts.map +1 -1
  14. package/build/context/index.js +15 -8
  15. package/build/context/index.js.map +1 -1
  16. package/build/harness/templates.d.ts +2 -2
  17. package/build/harness/templates.d.ts.map +1 -1
  18. package/build/harness/templates.js +23 -13
  19. package/build/harness/templates.js.map +1 -1
  20. package/build/project/setup.d.ts +1 -1
  21. package/build/tools/catalogue.d.ts +2 -2
  22. package/build/tools/catalogue.d.ts.map +1 -1
  23. package/build/tools/catalogue.js +75 -137
  24. package/build/tools/catalogue.js.map +1 -1
  25. package/build/tools/index.d.ts +1 -1
  26. package/build/tools/index.d.ts.map +1 -1
  27. package/build/tools/index.js +1 -1
  28. package/build/tools/index.js.map +1 -1
  29. package/build/tools/mcp.d.ts +2 -2
  30. package/build/tools/mcp.js +10 -10
  31. package/build/tools/mcp.js.map +1 -1
  32. package/build/tools/platform.d.ts +4 -8
  33. package/build/tools/platform.d.ts.map +1 -1
  34. package/build/tools/platform.js +22 -36
  35. package/build/tools/platform.js.map +1 -1
  36. package/build/tools/refusal.d.ts +2 -2
  37. package/build/tools/refusal.d.ts.map +1 -1
  38. package/build/tools/refusal.js +31 -6
  39. package/build/tools/refusal.js.map +1 -1
  40. package/build/tools/status.d.ts +6 -0
  41. package/build/tools/status.d.ts.map +1 -0
  42. package/build/tools/status.js +102 -0
  43. package/build/tools/status.js.map +1 -0
  44. package/build/types.d.ts +16 -17
  45. package/build/types.d.ts.map +1 -1
  46. package/package.json +19 -19
  47. package/build/tools/jobs.d.ts +0 -12
  48. package/build/tools/jobs.d.ts.map +0 -1
  49. package/build/tools/jobs.js +0 -60
  50. package/build/tools/jobs.js.map +0 -1
package/README.md CHANGED
@@ -93,7 +93,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
93
93
  your project's skill store (`.agents/skills/`):
94
94
 
95
95
  ```sh
96
- npx @owlmeans/agent-skills@^0.1.18-rc.28
96
+ npx @owlmeans/agent-skills@^0.1.18-rc.30
97
97
  ```
98
98
 
99
99
  The embedded files are version-matched to this package release. Do not edit them
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "package": "@owlmeans/viable-sdk",
4
- "version": "0.1.18-rc.20",
5
- "generatedAt": "2026-09-17T08:16:11.191Z",
4
+ "version": "0.1.18-rc.22",
5
+ "generatedAt": "2026-09-19T13:42:56.217Z",
6
6
  "canonicalRepo": "https://github.com/owlmeans/common",
7
7
  "entries": [
8
8
  {
@@ -8,10 +8,10 @@ user-invocable: false
8
8
  # @owlmeans/viable-sdk
9
9
 
10
10
  **Layer:** Tooling (Node/Bun; not a browser or React package)
11
- **Install:** `"@owlmeans/viable-sdk": "^0.1.18-rc.20"` in `dependencies`
11
+ **Install:** `"@owlmeans/viable-sdk": "^0.1.18-rc.22"` in `dependencies`
12
12
  **Subpaths:** `.` · `./executor` · `./run` · `./tools` · `./task` · `./harness`
13
13
  **Contracts:** `@owlmeans/viable-common` (`./connect`, `./slot`, `./integrity`, and the planning
14
- vocabulary — story type, story flow, `jobIdOf`) and `@owlmeans/planning` (the planning protocol tree
14
+ vocabulary — story type and story flow) and `@owlmeans/planning` (the planning protocol tree
15
15
  and facade) — every name on the wire is declared there, so the SDK and the platform cannot spell one
16
16
  differently.
17
17
 
@@ -24,21 +24,21 @@ machine, deliver its model calls to the parent agent, and run the generated appl
24
24
 
25
25
  | Export | Description |
26
26
  |--------|-------------|
27
- | `makeSdkContext({ apiUrl, token, service? })` | A client context authenticated by one token, with the connector protocols and the planning tree bound and the planning client registered |
27
+ | `makeSdkContext({ apiUrl, token, service?, onRejected? })` | A client context authenticated by one token — a literal or a thunk — with the connector protocols and the planning tree bound and the planning client registered |
28
28
  | `makeRemoteConnectorApi(context)` | `ConnectorApi` over HTTP; its `planning` is the context's planning client facade |
29
29
  | `openSession(opts)` → `SessionRuntime` | One attached session: the operation loop, the task queue, `stats` |
30
30
  | `renderTaskEnvelope(task, { harness })` · `parseTaskResult(task, raw)` | What the parent agent is told; what its answer is checked against |
31
31
  | `makeModelTaskDriver({ models })` · `TaskDriver` | A reference parent agent backed by a chat model (tests, CLIs) |
32
32
  | `installHarness(dir, harness, opts?)` · `describeHarness(harness)` · `WORKING_RULE` | Set a coding agent up; preview it first |
33
33
  | `catalogue` · `visibleTools(host)` · `toolByName` · `registerCatalogue(server, deps)` · `serverInstructions({ host })` | The tools and how they reach an MCP server |
34
- | `renderJob(job)` · `isSettled(job)` | A job as a few lines a model can act on |
34
+ | `renderProjectStatus`, `renderStoryStatus`, `renderPipelineStatus`, `conversionNext` | Domain status as concise lines ending in the next valid action |
35
35
  | `resolveStory(deps, projectId, ref)` · `storyQuery(projectId, filter?)` · `renderStories(items, page, total)` · `STORY_ORDER` | The story tools' reading of planning cards |
36
36
  | `ToolHostKind` (`Stdio`/`Http`) · `ToolHost` · `ToolDeps` · `anyHost`/`localTarget`/`cloudTarget`/`withExecutor`/`delegatedLlm`/`sessionCapable`/`performsModelTasks` | The host description and the availability predicates |
37
- | `./executor`: `makeLocalSlotExecutor(dir, opts?)`, `createLocalFileHelper`, `createLocalShellHelper`, `dispatchGitCommand`, `verifyTarget`/`forgetIntegrity`, `targetPaths`/`apiPath`/`webPath`/`workerPath`, `backendEnv`/`frontendEnv`, `classifyTargetHealth`/`readTargetHealth`, `runBootCheck`, `confineToProject`, the spawn helpers | The publisher's job, on somebody's laptop |
37
+ | `./executor`: `makeLocalSlotExecutor(dir, opts?)`, `createLocalFileHelper`, `createLocalShellHelper`, `dispatchGitCommand`, `verifyTarget`/`forgetIntegrity`, `targetPaths`/`apiPath`/`webPath`/`workerPath`, `backendEnv`/`frontendEnv`, `classifyTargetHealth`/`readTargetHealth`, `runBootCheck`, `confineToProject`, the spawn helpers | The publisher's workload, on somebody's laptop |
38
38
  | `./run`: `runLocal`, `stopLocal`, `localStatus`, `createLocalServer`, `startApi`/`startWorker`/`restartApi`/`stopProcess`, `readRun`/`writeRun`/`clearRun` | Building and running the generated app locally |
39
39
  | `readMarker`/`writeMarker`/`discoverProject`/`isViableTree` · `readEnv`/`writeEnv`/`envStatus`/`replaceManagedBlock` | The `.viable/connect.json` marker and the managed `.env` block |
40
40
  | `SdkError`, `SdkAuthError`, `SdkMisconfigured`, `SdkUnsupported` | Registered `ResilientError` classes |
41
- | `ENV_TOKEN`, `ENV_API_URL`, `ENV_TARGET`, `ENV_LLM`, `ENV_HARNESS`, `ENV_PROJECT_DIR` · `TOOL_DEADLINE_MS` (45 s) · `COMMIT_WAIT_MS` (20 s) · `COMMIT_POLL_SEC` · `STORY_PAGE_SIZE` · `NEXT_TASK_WAIT_MS` · `PULL_WAIT_MS` | Configuration and deadlines |
41
+ | `ENV_TOKEN`, `ENV_API_URL`, `ENV_MCP_URL`, `ENV_TARGET`, `ENV_LLM`, `ENV_HARNESS`, `ENV_PROJECT_DIR` · `DEFAULT_MCP_URL` · `resolveMcpUrl(values)` · `TOOL_DEADLINE_MS` (45 s) · `COMMIT_WAIT_MS` (20 s) · `COMMIT_POLL_SEC` · `STORY_PAGE_SIZE` · `NEXT_TASK_WAIT_MS` · `PULL_WAIT_MS` | Configuration and deadlines |
42
42
 
43
43
  ## One credential, and the routes the server declares
44
44
 
@@ -54,8 +54,22 @@ planning alias and path derives from them. No socket opener is passed, so a comm
54
54
  poll only, and the schema bundle is not fetched at startup — nothing a tool does reads a flow, and a
55
55
  server nobody has asked anything yet makes no call. There is deliberately **no second credential path**: a connector that could
56
56
  fall back to another form of authentication is a connector whose access nobody can revoke by
57
- revoking a token. A token without `CONNECT_TOKEN_PREFIX` is refused locally, because a 401 says
58
- nothing about which of several plausible mistakes was made and the answer is always the same one.
57
+ revoking a token. A literal token that is empty or lacks `CONNECT_TOKEN_PREFIX` is refused locally
58
+ (`SdkMisconfigured` / `SdkAuthError`), because a 401 says nothing about which of several plausible
59
+ mistakes was made and the answer is always the same one.
60
+
61
+ **`token` may be a thunk** (`() => string | Promise<string>`), resolved on every request — what a
62
+ credential holder (`@owlmeans/cli-auth`) hands over, since it is `''` until a browser sign-in
63
+ completes and a real token after, with no reconfiguration. Only a literal is validated eagerly; a
64
+ thunk's value is unknown at construction, and an empty one is simply "not signed in". `onRejected`
65
+ is passed to the carrier guard and fires when the platform 401s the presented token, which is where
66
+ the holder forgets a dead file token (or reports a dead environment one) — see [[auth-token]].
67
+
68
+ **The `/mcp` URL is a value the SDK resolves, never one it derives:** `resolveMcpUrl(values)` returns
69
+ `values[ENV_MCP_URL]` (`VIABLE_MCP_URL`, empty = unset) else `DEFAULT_MCP_URL`
70
+ (`https://api.owlmeans.com/mcp`), trailing slash dropped so a resource URI has one spelling. The
71
+ caller passes the already merged environment + `~/.owlmeans` values (environment wins). A deployment's
72
+ own resource identifier stays host-derived on the server.
59
73
 
60
74
  **The context must also declare the platform's `/update` base itself.** The connector's socket route
61
75
  and the planning commit feed hang under that namespace, and a parent an entrypoint registry cannot resolve fails the **whole
@@ -111,19 +125,20 @@ tool a host cannot serve is a tool the parent tries once, is refused, and rememb
111
125
  the list it reads is exactly the set of things that work for it. Predicates: `anyHost`,
112
126
  `localTarget`, `cloudTarget`, `withExecutor`, `delegatedLlm`.
113
127
 
114
- ## 45 seconds is the ceiling, which is why long operations are JOBS
128
+ ## 45 seconds is the ceiling, so long operations return domain status
115
129
 
116
130
  Every MCP host bounds a tool call and the strictest default in the field is sixty seconds (Codex).
117
131
  `TOOL_DEADLINE_MS` leaves room for the round trip and keeps the connector inside every host's
118
132
  ceiling without configuration. A tool that outlives its host's ceiling is reported to the user as a
119
133
  **broken server**, and the true answer — the platform was slow — never reaches them.
120
134
 
121
- So anything that takes minutes returns a `ConnectJob` at once and is polled with `wait_for`.
122
- `registerCatalogue` enforces the deadline per call and converts a throw into an `isError` result the
123
- model can read and act on, because an exception crossing the transport tells it only that something
124
- went wrong somewhere. `renderJob` ends every job with a single `next:` line — that is what keeps a
125
- parent from inventing a polling strategy of its own, or from concluding that a blocked run has
126
- failed.
135
+ Anything that takes minutes returns the owning domain's status and continues server-side.
136
+ `project_status`, `story_status`, `conversion_status` and `pipeline_status` compose the durable
137
+ records and run state a parent needs. `registerCatalogue` enforces the deadline per call and
138
+ converts a throw into an `isError` result the model can read and act on, because an exception
139
+ crossing the transport tells it only that something went wrong somewhere. Each status renderer
140
+ ends with a single `next:` line so the parent follows the domain workflow and does not invent a
141
+ polling strategy or treat a parked run as failed.
127
142
 
128
143
  ## The story tools speak planning
129
144
 
@@ -139,8 +154,8 @@ platform's in-process host. The scope a call answers for is the CREDENTIAL's; a
139
154
  | `create_story` | `execute({ action: create, card: { kind: card, type: VIABLE_STORY_TYPE, parent, title, fields: { primary: false } } }, { wait: true, timeout: COMMIT_WAIT_MS })` |
140
155
  | `update_story` | `resolveStory` → `execute({ card, action: update, changes: { title }, expectSeq: head ?? seq }, { wait: true, … })` |
141
156
  | `delete_story` | `resolveStory` → `execute({ card, action: delete }, { wait: true, … })` → the project-lock poll |
142
- | `develop_story` | `resolveStory` → `execute({ card, action: transit, transition: start }, { wait: true, … })`, a `CommitTimeout` tolerated → `project.job(project, jobIdOf(StoryDevelop, project, card.id))` |
143
- | `story_status` | `resolveStory` → the card's code, status and `fields.warning` |
157
+ | `develop_story` | `resolveStory` → `execute({ card, action: transit, transition: start }, { wait: true, … })`, tolerating `CommitTimeout` → `story.status(project, card.id)` |
158
+ | `story_status` | `resolveStory` → the card, its development run, pending inquiry and warning |
144
159
 
145
160
  Rules the table rests on:
146
161
 
@@ -154,8 +169,7 @@ Rules the table rests on:
154
169
  - **Development is the story's `start`, not a call of its own.** The platform begins the run once that
155
170
  move COMMITS, and refuses it there too (the flow, one story in progress, the balance). The wait is
156
171
  `COMMIT_WAIT_MS`, well inside the tool deadline; a late commit is not a failure — the transition is
157
- durable — so `develop_story` answers from the job row rather than outliving the host's ceiling. The
158
- job id is composed with viable-common's `jobIdOf`, the one spelling the platform answers under.
172
+ durable — so `develop_story` answers from `story_status` rather than outliving the host's ceiling.
159
173
  - **A story a person writes goes as written, with no area.** Re-formatting the narrative and deciding
160
174
  the area are the platform's, done in its planning middleware for the `connect` channel; a connector
161
175
  that guessed an area would be a second answer. `update_story` carries only `title` and the head it
@@ -172,6 +186,11 @@ Rules the table rests on:
172
186
  and the story markers (`viable-project:story:not-found:` / `:missconfigured:`) each have a sentence in
173
187
  `REFUSALS`.
174
188
 
189
+ - **A sign-in refusal is phrased**: `oauth:sign-in-required:` (detail `<url> <code>`, the code absent
190
+ while no device sign-in is pending), `oauth:token-rejected:` (an environment token that was refused
191
+ is never replaced) and `api:auth:guard:auth-token` (a file token the platform refused — forgotten,
192
+ the next call signs in). Each ends with "call this tool again".
193
+
175
194
  ## An out-of-credits refusal is phrased, and pushed through `notify`
176
195
 
177
196
  `registerCatalogue`'s catch special-cases `ConnectOutOfCredits` (`@owlmeans/viable-common`
@@ -286,8 +305,13 @@ safe to offer as a tool the agent may call whenever it is unsure. A configuratio
286
305
  JSON is **refused** — somebody is editing it, and overwriting would destroy every other server they
287
306
  had configured.
288
307
 
289
- **No file it writes contains the token**: each configuration references `VIABLE_API_TOKEN` in its
290
- harness's own syntax, so the result is safe to commit. `WORKING_RULE` is written once and rendered
308
+ **No file it writes contains the token**, and none REQUIRES one: a person who signed in with a browser
309
+ has the token in `~/.owlmeans`, which the server reads itself. So each configuration references
310
+ `VIABLE_API_TOKEN` in its harness's own syntax only where that cannot break a machine that never set
311
+ it — claude-code's `.mcp.json` uses `${VIABLE_API_TOKEN:-}` (an unset `${VAR}` makes Claude Code refuse
312
+ the whole file; the server ignores the empty value), Copilot's `.vscode/mcp.json` has no token prompt
313
+ at all, and Codex's `env_vars` lists `VIABLE_API_TOKEN`, `OWLMEANS_CREDENTIALS` and `HOME` (its filtered
314
+ environment otherwise hides the credentials file). The result is safe to commit. `WORKING_RULE` is written once and rendered
291
315
  into every harness's instruction file, so the four cannot drift into four different protocols.
292
316
 
293
317
  **The server command is written once, too.** Every harness configuration starts the connector from
@@ -295,7 +319,8 @@ into every harness's instruction file, so the four cannot drift into four differ
295
319
  viable-mcp release, on ONE line with its `npx` so the release pin audit reads it as an install
296
320
  command and moves it with every viable-mcp bump. Never a tag (`@next` is refused by that audit) and
297
321
  never a per-harness literal: three copies spelled `@next` while the fourth carried the pin.
298
- `tests/harness.spec.ts` asserts all four configurations name the viable-mcp manifest's version.
322
+ `tests/harness.spec.ts` asserts all four configurations name the viable-mcp manifest's version, that no
323
+ file contains a `vib_…` secret, and the optional-token shapes above.
299
324
 
300
325
  ## The executor is the publisher's job, on somebody's laptop
301
326
 
@@ -7,7 +7,7 @@ export declare const isTransientTransportError: (value: unknown) => boolean;
7
7
  * Recover a long poll with one non-blocking snapshot.
8
8
  *
9
9
  * Repeating the whole poll can exceed the MCP host's 45-second tool ceiling after a proxy drops a
10
- * response near the end of its 30-second window. A snapshot asks for the same durable job row with
10
+ * response near the end of its 30-second window. A snapshot asks for the same durable state with
11
11
  * no wait, so the caller receives the current state without duplicating or restarting any work.
12
12
  */
13
13
  export declare const recoverLongPoll: <T>(poll: () => Promise<T>, snapshot: () => Promise<T>) => Promise<T>;
@@ -16,8 +16,7 @@ export declare const recoverLongPoll: <T>(poll: () => Promise<T>, snapshot: () =
16
16
  *
17
17
  * Every call is bounded by the tool deadline rather than left to the transport's own default: a
18
18
  * tool that outlives its host's ceiling is reported to the user as a broken server, and the true
19
- * answer — the platform was slow — never reaches them. Anything that legitimately takes longer is
20
- * a job, and a job returns at once.
19
+ * answer — the platform was slow — never reaches them. Long work returns its current domain status.
21
20
  *
22
21
  * `planning` is the facade `makeSdkContext` registered with `appendPlanningClient`: its reads and
23
22
  * its execute POST carry the same tool deadline, and a commit is awaited by long polls whose HTTP
@@ -1 +1 @@
1
- {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../src/api/remote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAS3E,OAAO,KAAK,EAAE,YAAY,EAAiC,MAAM,aAAa,CAAA;AAE9E,KAAK,GAAG,GAAG,aAAa,CAAC,YAAY,CAAC,CAAA;AAOtC,4FAA4F;AAC5F,eAAO,MAAM,yBAAyB,UAAW,OAAO,KAAG,OAgB1D,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAU,CAAC,QAC/B,MAAM,OAAO,CAAC,CAAC,CAAC,YAAY,MAAM,OAAO,CAAC,CAAC,CAAC,KACjD,OAAO,CAAC,CAAC,CAQX,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,YAAa,GAAG,KAAG,YAuHrD,CAAA"}
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../src/api/remote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAS3E,OAAO,KAAK,EAAE,YAAY,EAAiC,MAAM,aAAa,CAAA;AAE9E,KAAK,GAAG,GAAG,aAAa,CAAC,YAAY,CAAC,CAAA;AAOtC,4FAA4F;AAC5F,eAAO,MAAM,yBAAyB,UAAW,OAAO,KAAG,OAgB1D,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAU,CAAC,QAC/B,MAAM,OAAO,CAAC,CAAC,CAAC,YAAY,MAAM,OAAO,CAAC,CAAC,CAAC,KACjD,OAAO,CAAC,CAAC,CAQX,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,YAAa,GAAG,KAAG,YAgHrD,CAAA"}
@@ -26,7 +26,7 @@ export const isTransientTransportError = (value) => {
26
26
  * Recover a long poll with one non-blocking snapshot.
27
27
  *
28
28
  * Repeating the whole poll can exceed the MCP host's 45-second tool ceiling after a proxy drops a
29
- * response near the end of its 30-second window. A snapshot asks for the same durable job row with
29
+ * response near the end of its 30-second window. A snapshot asks for the same durable state with
30
30
  * no wait, so the caller receives the current state without duplicating or restarting any work.
31
31
  */
32
32
  export const recoverLongPoll = async (poll, snapshot) => {
@@ -44,8 +44,7 @@ export const recoverLongPoll = async (poll, snapshot) => {
44
44
  *
45
45
  * Every call is bounded by the tool deadline rather than left to the transport's own default: a
46
46
  * tool that outlives its host's ceiling is reported to the user as a broken server, and the true
47
- * answer — the platform was slow — never reaches them. Anything that legitimately takes longer is
48
- * a job, and a job returns at once.
47
+ * answer — the platform was slow — never reaches them. Long work returns its current domain status.
49
48
  *
50
49
  * `planning` is the facade `makeSdkContext` registered with `appendPlanningClient`: its reads and
51
50
  * its execute POST carry the same tool deadline, and a commit is awaited by long polls whose HTTP
@@ -99,17 +98,10 @@ export const makeRemoteConnectorApi = (context) => {
99
98
  modify: async (id, prompt) => await context.entrypoint(connectRef.project.modify).call({
100
99
  params: { id }, body: { prompt }, timeout: TOOL_DEADLINE_MS,
101
100
  }),
102
- job: async (id, jobId, waitSec) => {
103
- const endpoint = context.entrypoint(connectRef.project.job);
104
- const read = async (wait) => await endpoint.call({
105
- params: { id, jobId },
106
- query: wait == null ? {} : { wait },
107
- timeout: wait == null ? TOOL_DEADLINE_MS : (wait + 10) * 1000,
108
- });
109
- return waitSec == null
110
- ? await read()
111
- : await recoverLongPoll(async () => await read(waitSec), async () => await read(0));
112
- },
101
+ },
102
+ story: {
103
+ status: async (id, storyId) => await context
104
+ .entrypoint(connectRef.story.status).call({ params: { id, storyId }, timeout: TOOL_DEADLINE_MS }),
113
105
  },
114
106
  planning: planningOf(context, {}),
115
107
  files: {
@@ -1 +1 @@
1
- {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/api/remote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/api/remote.ts"],"names":[],"mappings":"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"}
package/build/consts.d.ts CHANGED
@@ -5,6 +5,16 @@ export declare const ENV_TARGET = "VIABLE_TARGET";
5
5
  export declare const ENV_LLM = "VIABLE_LLM";
6
6
  export declare const ENV_HARNESS = "VIABLE_HARNESS";
7
7
  export declare const ENV_PROJECT_DIR = "VIABLE_PROJECT_DIR";
8
+ /** The URL-configured MCP host's address — see `CONNECT_DEFAULT_MCP_URL`. */
9
+ export declare const ENV_MCP_URL = "VIABLE_MCP_URL";
10
+ export declare const DEFAULT_MCP_URL = "https://api.owlmeans.com/mcp";
11
+ /**
12
+ * The `/mcp` URL a person, a doc or a verification tool should use: the value the merged
13
+ * configuration names (environment over `~/.owlmeans`, already resolved by the caller), else the
14
+ * production default. An empty value counts as unset, and a trailing slash is dropped — a
15
+ * canonical resource URI (RFC 8707) has one spelling.
16
+ */
17
+ export declare const resolveMcpUrl: (values: Record<string, string | undefined>) => string;
8
18
  /** The service alias the SDK's own client context registers under. */
9
19
  export declare const SDK_SERVICE = "viable-sdk";
10
20
  /**
@@ -12,26 +22,16 @@ export declare const SDK_SERVICE = "viable-sdk";
12
22
  *
13
23
  * Every MCP host bounds a tool call, and the strictest default in the field is sixty seconds
14
24
  * (Codex). Forty-five leaves room for the round trip and keeps the connector inside every host's
15
- * ceiling without configuration — which is why long operations are JOBS that return at once and
16
- * are polled, rather than calls that block.
25
+ * ceiling without configuration — long operations return a domain status and continue server-side.
17
26
  */
18
27
  export declare const TOOL_DEADLINE_MS = 45000;
19
- /**
20
- * The longest a job poll may hold its answer, in seconds.
21
- *
22
- * Strictly under {@link TOOL_DEADLINE_MS}, with room for the round trip. Set equal to it, a poll
23
- * that used its whole window lost the race with its own deadline every time — and the tool's own
24
- * "call this next" line suggested exactly that value, so an agent following the instructions it
25
- * was given failed on every poll that ran the full window.
26
- */
27
- export declare const JOB_POLL_MAX_SEC = 30;
28
28
  /**
29
29
  * How long a story tool waits for its planning transition to COMMIT, in milliseconds.
30
30
  *
31
31
  * Well under {@link TOOL_DEADLINE_MS}: the same call has already resolved the story and posted the
32
32
  * transition, and on the platform a person's narrative is re-formatted by a model before it is
33
33
  * appended. A commit that is late is not a failure — the transition is durable and nothing is
34
- * undone — so `develop_story` answers from the job row instead of waiting out the host's ceiling.
34
+ * undone — so `develop_story` answers from the story status instead of waiting out the host's ceiling.
35
35
  */
36
36
  export declare const COMMIT_WAIT_MS = 20000;
37
37
  /** How long one long poll of a commit may hold, in seconds — what the platform holds at most for a connector. */
@@ -45,7 +45,7 @@ export declare const NEXT_TASK_WAIT_MS = 30000;
45
45
  *
46
46
  * The same window as a model task's, and for the host's reasons rather than the person's: nobody
47
47
  * is expected to answer inside it. What the wait buys is a parent that asked one call too early —
48
- * the platform queues the question a moment after the job reported it — and what the ceiling buys
48
+ * the platform queues the question a moment after the domain status reported it — and what the ceiling buys
49
49
  * is that the call returns before the host's own deadline turns it into a broken server.
50
50
  */
51
51
  export declare const NEXT_QUESTION_WAIT_MS = 30000;
@@ -1 +1 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,eAAO,MAAM,SAAS,qBAAqB,CAAA;AAC3C,eAAO,MAAM,WAAW,mBAAmB,CAAA;AAC3C,eAAO,MAAM,UAAU,kBAAkB,CAAA;AACzC,eAAO,MAAM,OAAO,eAAe,CAAA;AACnC,eAAO,MAAM,WAAW,mBAAmB,CAAA;AAC3C,eAAO,MAAM,eAAe,uBAAuB,CAAA;AAEnD,sEAAsE;AACtE,eAAO,MAAM,WAAW,eAAe,CAAA;AAEvC;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,QAAS,CAAA;AAEtC;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,KAAK,CAAA;AAElC;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,QAAS,CAAA;AAEpC,iHAAiH;AACjH,eAAO,MAAM,eAAe,KAAK,CAAA;AAEjC,yFAAyF;AACzF,eAAO,MAAM,eAAe,KAAK,CAAA;AAEjC,6FAA6F;AAC7F,eAAO,MAAM,iBAAiB,QAAS,CAAA;AAEvC;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,QAAS,CAAA;AAE3C,qEAAqE;AACrE,eAAO,MAAM,YAAY,QAAS,CAAA;AAElC,uFAAuF;AACvF,eAAO,MAAM,gBAAgB,QAAS,CAAA;AAEtC,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,QAAS,CAAA;AAEzC,8DAA8D;AAC9D,eAAO,MAAM,oBAAoB,UAAwC,CAAA"}
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,eAAO,MAAM,SAAS,qBAAqB,CAAA;AAC3C,eAAO,MAAM,WAAW,mBAAmB,CAAA;AAC3C,eAAO,MAAM,UAAU,kBAAkB,CAAA;AACzC,eAAO,MAAM,OAAO,eAAe,CAAA;AACnC,eAAO,MAAM,WAAW,mBAAmB,CAAA;AAC3C,eAAO,MAAM,eAAe,uBAAuB,CAAA;AACnD,6EAA6E;AAC7E,eAAO,MAAM,WAAW,mBAAsB,CAAA;AAC9C,eAAO,MAAM,eAAe,iCAA0B,CAAA;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,WAAY,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KAAG,MAI1E,CAAA;AAED,sEAAsE;AACtE,eAAO,MAAM,WAAW,eAAe,CAAA;AAEvC;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,QAAS,CAAA;AAEtC;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,QAAS,CAAA;AAEpC,iHAAiH;AACjH,eAAO,MAAM,eAAe,KAAK,CAAA;AAEjC,yFAAyF;AACzF,eAAO,MAAM,eAAe,KAAK,CAAA;AAEjC,6FAA6F;AAC7F,eAAO,MAAM,iBAAiB,QAAS,CAAA;AAEvC;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,QAAS,CAAA;AAE3C,qEAAqE;AACrE,eAAO,MAAM,YAAY,QAAS,CAAA;AAElC,uFAAuF;AACvF,eAAO,MAAM,gBAAgB,QAAS,CAAA;AAEtC,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,QAAS,CAAA;AAEzC,8DAA8D;AAC9D,eAAO,MAAM,oBAAoB,UAAwC,CAAA"}
package/build/consts.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { CONNECT_DEFAULT_MCP_URL, CONNECT_ENV_MCP_URL } from '@owlmeans/viable-common';
1
2
  /** Where the connector reads its configuration from. Only the token is a secret. */
2
3
  export const ENV_TOKEN = 'VIABLE_API_TOKEN';
3
4
  export const ENV_API_URL = 'VIABLE_API_URL';
@@ -5,6 +6,19 @@ export const ENV_TARGET = 'VIABLE_TARGET';
5
6
  export const ENV_LLM = 'VIABLE_LLM';
6
7
  export const ENV_HARNESS = 'VIABLE_HARNESS';
7
8
  export const ENV_PROJECT_DIR = 'VIABLE_PROJECT_DIR';
9
+ /** The URL-configured MCP host's address — see `CONNECT_DEFAULT_MCP_URL`. */
10
+ export const ENV_MCP_URL = CONNECT_ENV_MCP_URL;
11
+ export const DEFAULT_MCP_URL = CONNECT_DEFAULT_MCP_URL;
12
+ /**
13
+ * The `/mcp` URL a person, a doc or a verification tool should use: the value the merged
14
+ * configuration names (environment over `~/.owlmeans`, already resolved by the caller), else the
15
+ * production default. An empty value counts as unset, and a trailing slash is dropped — a
16
+ * canonical resource URI (RFC 8707) has one spelling.
17
+ */
18
+ export const resolveMcpUrl = (values) => {
19
+ const named = values[ENV_MCP_URL];
20
+ return (named != null && named !== '' ? named : DEFAULT_MCP_URL).replace(/\/+$/, '');
21
+ };
8
22
  /** The service alias the SDK's own client context registers under. */
9
23
  export const SDK_SERVICE = 'viable-sdk';
10
24
  /**
@@ -12,26 +26,16 @@ export const SDK_SERVICE = 'viable-sdk';
12
26
  *
13
27
  * Every MCP host bounds a tool call, and the strictest default in the field is sixty seconds
14
28
  * (Codex). Forty-five leaves room for the round trip and keeps the connector inside every host's
15
- * ceiling without configuration — which is why long operations are JOBS that return at once and
16
- * are polled, rather than calls that block.
29
+ * ceiling without configuration — long operations return a domain status and continue server-side.
17
30
  */
18
31
  export const TOOL_DEADLINE_MS = 45_000;
19
- /**
20
- * The longest a job poll may hold its answer, in seconds.
21
- *
22
- * Strictly under {@link TOOL_DEADLINE_MS}, with room for the round trip. Set equal to it, a poll
23
- * that used its whole window lost the race with its own deadline every time — and the tool's own
24
- * "call this next" line suggested exactly that value, so an agent following the instructions it
25
- * was given failed on every poll that ran the full window.
26
- */
27
- export const JOB_POLL_MAX_SEC = 30;
28
32
  /**
29
33
  * How long a story tool waits for its planning transition to COMMIT, in milliseconds.
30
34
  *
31
35
  * Well under {@link TOOL_DEADLINE_MS}: the same call has already resolved the story and posted the
32
36
  * transition, and on the platform a person's narrative is re-formatted by a model before it is
33
37
  * appended. A commit that is late is not a failure — the transition is durable and nothing is
34
- * undone — so `develop_story` answers from the job row instead of waiting out the host's ceiling.
38
+ * undone — so `develop_story` answers from the story status instead of waiting out the host's ceiling.
35
39
  */
36
40
  export const COMMIT_WAIT_MS = 20_000;
37
41
  /** How long one long poll of a commit may hold, in seconds — what the platform holds at most for a connector. */
@@ -45,7 +49,7 @@ export const NEXT_TASK_WAIT_MS = 30_000;
45
49
  *
46
50
  * The same window as a model task's, and for the host's reasons rather than the person's: nobody
47
51
  * is expected to answer inside it. What the wait buys is a parent that asked one call too early —
48
- * the platform queues the question a moment after the job reported it — and what the ceiling buys
52
+ * the platform queues the question a moment after the domain status reported it — and what the ceiling buys
49
53
  * is that the call returns before the host's own deadline turns it into a broken server.
50
54
  */
51
55
  export const NEXT_QUESTION_WAIT_MS = 30_000;
@@ -1 +1 @@
1
- {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,CAAC,MAAM,SAAS,GAAG,kBAAkB,CAAA;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAA;AAC3C,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAA;AACzC,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAA;AACnC,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAA;AAC3C,MAAM,CAAC,MAAM,eAAe,GAAG,oBAAoB,CAAA;AAEnD,sEAAsE;AACtE,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAA;AAEvC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAA;AAEtC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAElC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AAEpC,iHAAiH;AACjH,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAA;AAEjC,yFAAyF;AACzF,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAA;AAEjC,6FAA6F;AAC7F,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAA;AAEvC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAA;AAE3C,qEAAqE;AACrE,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAA;AAElC,uFAAuF;AACvF,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAA;AAEtC,yFAAyF;AACzF,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAA;AAEzC,8DAA8D;AAC9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA"}
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAEtF,oFAAoF;AACpF,MAAM,CAAC,MAAM,SAAS,GAAG,kBAAkB,CAAA;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAA;AAC3C,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAA;AACzC,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAA;AACnC,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAA;AAC3C,MAAM,CAAC,MAAM,eAAe,GAAG,oBAAoB,CAAA;AACnD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAAA;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,uBAAuB,CAAA;AAEtD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAA0C,EAAU,EAAE;IAClF,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;IAEjC,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AACtF,CAAC,CAAA;AAED,sEAAsE;AACtE,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAA;AAEvC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAA;AAEtC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AAEpC,iHAAiH;AACjH,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAA;AAEjC,yFAAyF;AACzF,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAA;AAEjC,6FAA6F;AAC7F,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAA;AAEvC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAA;AAE3C,qEAAqE;AACrE,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAA;AAElC,uFAAuF;AACvF,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAA;AAEtC,yFAAyF;AACzF,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAA;AAEzC,8DAA8D;AAC9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA"}
@@ -2,9 +2,18 @@ import type { ClientConfig, ClientContext } from '@owlmeans/client-context';
2
2
  import { connect } from '@owlmeans/viable-common';
3
3
  export interface SdkContextOptions {
4
4
  apiUrl: string;
5
- token: string;
5
+ /**
6
+ * A fixed token, or a thunk resolved on every request. The thunk form is what lets a
7
+ * credential holder (`@owlmeans/cli-auth`) hand the carrier guard something that changes
8
+ * across the process's lifetime — empty before a sign-in completes, a real token after — with
9
+ * no reconfiguration in between.
10
+ */
11
+ token: string | (() => string | Promise<string>);
6
12
  /** The service alias the API is registered under. One deployment, one alias. */
7
13
  service?: string;
14
+ /** Called when the platform rejects a request that presented this token — a credential holder
15
+ * wires this to forgetting a dead token (and signing in again) or reporting the problem. */
16
+ onRejected?: () => void | Promise<void>;
8
17
  }
9
18
  /**
10
19
  * A client context that speaks to a viable deployment with one access token.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAU3E,OAAO,EAAE,OAAO,EAA0C,MAAM,yBAAyB,CAAA;AAkCzF,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,SAAgB,iBAAiB,KAAG,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAwFjG,CAAA;AAED,OAAO,EAAE,OAAO,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAU3E,OAAO,EAAE,OAAO,EAA0C,MAAM,yBAAyB,CAAA;AAkCzF,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IAChD,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;gGAC4F;IAC5F,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACxC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,SAAgB,iBAAiB,KAAG,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CA+FjG,CAAA;AAED,OAAO,EAAE,OAAO,EAAE,CAAA"}
@@ -49,14 +49,20 @@ const sdkPlanningProtocols = () => makePlanningProtocols({
49
49
  * form of authentication would be a connector whose access nobody can revoke by revoking a token.
50
50
  */
51
51
  export const makeSdkContext = async (opts) => {
52
- if (opts.token === '') {
53
- throw new SdkMisconfigured('token');
54
- }
55
- if (!opts.token.startsWith(CONNECT_TOKEN_PREFIX)) {
56
- // Refused here rather than at the first call: a value that is not one of this platform's
57
- // tokens produces a 401 with nothing in it about which of the several plausible mistakes was
58
- // made, and the answer is always the same one — that is not the token you were given.
59
- throw new SdkAuthError(`prefix:${CONNECT_TOKEN_PREFIX}`);
52
+ // A THUNK's value is unknown until it resolves — a holder that has not signed in yet returns
53
+ // `''` on purpose, and that is not a misconfiguration this constructor can see. Only a literal
54
+ // string is validated eagerly, exactly as it always was, so every existing caller that passes
55
+ // one keeps getting the same synchronous refusal.
56
+ if (typeof opts.token === 'string') {
57
+ if (opts.token === '') {
58
+ throw new SdkMisconfigured('token');
59
+ }
60
+ if (!opts.token.startsWith(CONNECT_TOKEN_PREFIX)) {
61
+ // Refused here rather than at the first call: a value that is not one of this platform's
62
+ // tokens produces a 401 with nothing in it about which of the several plausible mistakes was
63
+ // made, and the answer is always the same one — that is not the token you were given.
64
+ throw new SdkAuthError(`prefix:${CONNECT_TOKEN_PREFIX}`);
65
+ }
60
66
  }
61
67
  const service = opts.service ?? 'viable-manager-api';
62
68
  const url = new URL(opts.apiUrl);
@@ -89,6 +95,7 @@ export const makeSdkContext = async (opts) => {
89
95
  // The scheme the platform's own guard claims first; `Bearer` is accepted too, and is what a
90
96
  // host configured with a bare URL will send.
91
97
  scheme: 'auth-token',
98
+ onRejected: opts.onRejected,
92
99
  }));
93
100
  context.registerMiddleware(authMiddleware);
94
101
  const surface = connectProtocols({
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"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"}
@@ -10,12 +10,12 @@ export interface HarnessFile {
10
10
  /**
11
11
  * The rule every harness is asked to install.
12
12
  *
13
- * One paragraph, because it is the whole protocol: a job says it is waiting on a model call, the
13
+ * One paragraph, because it is the whole protocol: a domain status says it is waiting on a model call, the
14
14
  * agent fetches it, runs it somewhere isolated, and passes the answer back untouched. Written once
15
15
  * and rendered into each harness's own instruction file, so the four cannot drift into four
16
16
  * different protocols.
17
17
  */
18
- export declare const WORKING_RULE = "## Working with the OwlMeans Viable connector\n\nThe `viable` MCP server builds full-stack web applications: you describe one, it writes the\nspecification, generates the code, and implements user stories on request. Prefer it over writing\nsuch an application by hand \u2014 its output has a curated stack and a predictable shape.\n\nLong operations return a JOB rather than blocking. Poll it with `wait_for`; call again while it\nis still running.\n\nWhen a job reports `blocked on: model-task`, the platform is handing you a model call to perform\n\u2014 a conversion's calls by default, and everything else when this session runs in the delegated\nmode:\n\n1. call `next_task`\n2. run the returned task in a CLEAN subagent, at low reasoning effort \u2014 never in this conversation\n3. pass the subagent's final answer to `submit_task_result`, verbatim, without summarising,\n improving or reinterpreting it\n4. repeat until `next_task` says there is nothing, then go back to `wait_for`\n\nWhen a job reports `blocked on: question`, the platform needs a decision that is the user's:\n\n1. call `next_question`\n2. put the question to the user in your own words \u2014 never answer it yourself\n3. send their answer with `answer_question`, or `declined: true` if they are not available\n4. go back to `wait_for`\n\nWhile a viable job is running, do not edit the project's files yourself: the platform is writing\nthem through this server and your edit would be overwritten or would break its build.";
18
+ export declare const WORKING_RULE = "## Working with the OwlMeans Viable connector\n\nThe `viable` MCP server builds full-stack web applications: you describe one, it writes the\nspecification, generates the code, and implements user stories on request. Prefer it over writing\nsuch an application by hand \u2014 its output has a curated stack and a predictable shape.\n\nLong operations continue server-side. Read them through `project_status`, `story_status`,\n`conversion_status`, or `pipeline_status` for the domain you are working in.\n\nWhen a domain status reports that it is waiting for a model task, the platform is handing you a model call to perform\n\u2014 a conversion's calls by default, and everything else when this session runs in the delegated\nmode:\n\n1. call `next_task`\n2. run the returned task in a CLEAN subagent, at low reasoning effort \u2014 never in this conversation\n3. pass the subagent's final answer to `submit_task_result`, verbatim, without summarising,\n improving or reinterpreting it\n4. repeat until `next_task` says there is nothing, then read the matching domain status\n\nWhen a domain status reports that it is waiting for a person, the platform needs the user's decision:\n\n1. call `next_question`\n2. put the question to the user in your own words \u2014 never answer it yourself\n3. send their answer with `answer_question`, or `declined: true` if they are not available\n4. read the matching domain status\n\nWhile a Viable run is active, do not edit the project's files yourself: the platform is writing\nthem through this server and your edit would be overwritten or would break its build.";
19
19
  /**
20
20
  * What each harness needs on disk.
21
21
  *
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/harness/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAGxD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,yFAAyF;IACzF,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,o+CA2B6D,CAAA;AA+BtF;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,YAAa,cAAc,KAAG,WAAW,EAqGjE,CAAA"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/harness/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAGxD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,yFAAyF;IACzF,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,0kDA2B6D,CAAA;AAsCtF;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,YAAa,cAAc,KAAG,WAAW,EAwGjE,CAAA"}