@owlmeans/viable-common 0.0.48-rc.1 → 0.0.48-rc.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.
Files changed (40) hide show
  1. package/README.md +2 -2
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/agent-presentation/SKILL.md +1 -1
  4. package/agent-meta/skills/viable-common/SKILL.md +10 -2
  5. package/build/connect/ops.d.ts +189 -0
  6. package/build/connect/ops.d.ts.map +1 -0
  7. package/build/connect/ops.js +2 -0
  8. package/build/connect/ops.js.map +1 -0
  9. package/build/connect/types.d.ts +453 -0
  10. package/build/connect/types.d.ts.map +1 -0
  11. package/build/connect/types.js +2 -0
  12. package/build/connect/types.js.map +1 -0
  13. package/build/convert/consts.d.ts +1 -1
  14. package/build/convert/consts.js +1 -1
  15. package/build/design/schemas.d.ts.map +1 -1
  16. package/build/design/schemas.js +28 -0
  17. package/build/design/schemas.js.map +1 -1
  18. package/build/design/types.d.ts +23 -0
  19. package/build/design/types.d.ts.map +1 -1
  20. package/build/iam-console/types.d.ts +21 -2
  21. package/build/iam-console/types.d.ts.map +1 -1
  22. package/build/intent/flow.d.ts +17 -0
  23. package/build/intent/flow.d.ts.map +1 -0
  24. package/build/intent/flow.js +65 -0
  25. package/build/intent/flow.js.map +1 -0
  26. package/build/planning/flows.d.ts +34 -0
  27. package/build/planning/flows.d.ts.map +1 -0
  28. package/build/planning/flows.js +174 -0
  29. package/build/planning/flows.js.map +1 -0
  30. package/build/skills/roles.d.ts +43 -0
  31. package/build/skills/roles.d.ts.map +1 -0
  32. package/build/skills/roles.js +44 -0
  33. package/build/skills/roles.js.map +1 -0
  34. package/package.json +4 -4
  35. package/src/blueprint/catalogue/types.ts +0 -1
  36. package/src/convert/consts.ts +1 -1
  37. package/src/design/schemas.ts +28 -0
  38. package/src/design/types.ts +26 -0
  39. package/src/iam-console/types.ts +21 -2
  40. package/tests/iam-console.spec.ts +17 -2
package/README.md CHANGED
@@ -15,7 +15,7 @@ the Viable platform has no use for it. The package's skills are `viable-common`
15
15
  ## Installation
16
16
 
17
17
  ```bash
18
- bun add @owlmeans/viable-common@^0.0.48-rc.1
18
+ bun add @owlmeans/viable-common@^0.0.48-rc.2
19
19
  ```
20
20
 
21
21
  ## What is in it
@@ -209,7 +209,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
209
209
  your project's skill store (`.agents/skills/`):
210
210
 
211
211
  ```sh
212
- npx @owlmeans/agent-skills@^0.1.18-rc.53
212
+ npx @owlmeans/agent-skills@^0.1.18-rc.54
213
213
  ```
214
214
 
215
215
  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-common",
4
- "version": "0.0.48-rc.1",
5
- "generatedAt": "2026-10-09T11:31:12.875Z",
4
+ "version": "0.0.48-rc.2",
5
+ "generatedAt": "2026-10-15T10:20:01.307Z",
6
6
  "canonicalRepo": "https://github.com/owlmeans/common",
7
7
  "entries": [
8
8
  {
@@ -6,7 +6,7 @@ description: Shared, runtime-free taxonomy for presenting OwlMeans Viable agent
6
6
 
7
7
  # Agent output presentation
8
8
 
9
- **Install:** `"@owlmeans/viable-common": "^0.0.48-rc.1"` in `dependencies`
9
+ **Install:** `"@owlmeans/viable-common": "^0.0.48-rc.2"` in `dependencies`
10
10
 
11
11
  `@owlmeans/viable-common`'s `agent/presentation.ts` owns the browser-safe vocabulary for agent
12
12
  output. Keep the server and every client on `agentPresentationHelper.classifyAgentMessage()`; consumers may refine a
@@ -8,7 +8,7 @@ user-invocable: false
8
8
  # @owlmeans/viable-common
9
9
 
10
10
  **Layer:** Cross-cutting domain (contracts only)
11
- **Install:** `"@owlmeans/viable-common": "^0.0.48-rc.1"` in `dependencies`
11
+ **Install:** `"@owlmeans/viable-common": "^0.0.48-rc.2"` in `dependencies`
12
12
  **Subpaths:** `.` · `./slot` · `./connect` · `./convert` · `./integrity` · `./intent` · `./legal` · `./iam-console` — the barrel
13
13
  re-exports every subpath except `./intent`.
14
14
  **Runtime-free:** no `@langchain/*`, no filesystem, no Ajv at run time (a devDependency, for the
@@ -369,6 +369,14 @@ and `connectRef` (typed references) name the same set, the two bases aside:
369
369
  an organization travels by `entitySlug`, a group by key, never a record id; a grant names exactly one
370
370
  subject (`OneSubject`); its nullable enums carry `null`. `IamRefused` stays the platform's class; the
371
371
  marker it writes (`IAM_REFUSED`) is declared here.
372
+ - **Grant modes and origins follow `@owlmeans/iam`, never a hand-written list**: `ModeProp` is
373
+ `Object.values(IamGrantMode)`, so the revoke-only `all` and `inherit` are admitted on BOTH bodies —
374
+ the IAM refuses them on a grant, the schema does not duplicate that rule. The bodies' docs state the
375
+ semantics: a whole-permission revoke of a declared definition RESTRICTS the subject (it also loses
376
+ what it inherits — default class, group, bundle); `mode: inherit` takes back only the subject's own
377
+ value (grant or restriction), resources untouched. `IamGrantsResponse` lists what is held — origin
378
+ `direct`, `default`, `group` (`through`) or `bundle` (a group's own listing) — plus the inherited
379
+ grants a subject's own restriction withholds, `restricted: true`, never held.
372
380
  - **The browser's sockets are cursor feeds here** (`connect/feed/types.ts`): `ConnectFeedRecord`
373
381
  (`kind: ConnectFeedKind`, `at`, `run?`, `projectId?`, `storyId?`, `slotId?`, `action?`, `agent?`,
374
382
  bounded `text?`, small `data?`) — a projection, never the record behind it; `ConnectFeedEntry` adds its
@@ -589,7 +597,7 @@ the manager's `useErrorPhrase` read the same substrings. A marker change changes
589
597
  | `scaffold.spec.ts` | old- and new-shape plans passing the schema and slot, `null` optionals, no `minItems`, closed anchors/slots, the landing helpers |
590
598
  | `blueprint.spec.ts` · `branding.spec.ts` | `landingGatePreferenceOf` defaults · the build env and metadata vocabulary |
591
599
  | `connect-entrypoints.spec.ts` · `connect-convert.spec.ts` | every route's method and path, aliases = `connectRef`, the paid kinds on the delegated session, the two preference writes and the credit switch alone, the account inference/token/privacy/intent routes and their closed bodies, the configuration routes and their closed bodies, the git and GitHub routes under the base with no paid gate and no completion route and their closed bodies, the production routes under the base each with its own paid kind, no secret or run verb, and their closed bodies, the IAM routes' count and addresses, the scope query, the account branding routes, no socket or story route, the create body's `sessionId`, branding body, the kit routes and their closed shapes, the collect route under the base and its timing constants, the pending/params/query/result shapes, the three feed routes (owned base / account base, GET, no paid gate, no socket) and the feed query shapes · conversion routes, the create body's `sessionId`, the start's body and both verbs' `confirm`, an unknown executor kind accepted |
592
- | `iam-console.spec.ts` | the owner-console schemas (one subject, closed bodies, `null` in nullable enums), the 22 `connect.iam` routes under the base with no paid gate, the customer-wide listing under the account base, POST writes with `scope` in the body and reads with it in the query, the connector's IAM params |
600
+ | `iam-console.spec.ts` | the owner-console schemas (one subject, closed bodies, `null` in nullable enums, `mode: inherit` on a revoke and — deliberately — on a grant body, the `inherit`/`bundle` values), the 22 `connect.iam` routes under the base with no paid gate, the customer-wide listing under the account base, POST writes with `scope` in the body and reads with it in the query, the connector's IAM params |
593
601
  | `convert.spec.ts` | the three structural walks over the barrel, nullable enums under Ajv, census classifiers, stage transitions |
594
602
  | `design.spec.ts` | the design aggregate, staleness ranking, schema refusals, `storyDesignHelper.userStoryOfDesign` |
595
603
  | `error-status.spec.ts` · `connect-errors.spec.ts` | declared statuses through a marshal · packed refusal fields fresh and after a round trip, the confirmation's `decode` |
@@ -0,0 +1,189 @@
1
+ import type { SlotCommandPayload } from '../slot/index.js';
2
+ import type { ConnectInquiryKind, ConnectOpErrorKind, ConnectOpKind, ModelTaskMode, ModelTaskResultKind, ModelTaskRole, ModelTier } from './consts.js';
3
+ import type { ConnectServices } from './types.js';
4
+ /**
5
+ * One thing the platform asks a connector to do.
6
+ *
7
+ * Operations are addressed to a PROJECT, not to a session: a connector that restarts mid-run
8
+ * re-attaches and is handed whatever is still pending, so an MCP server dying does not kill a
9
+ * pipeline that is minutes into its work. `sessionId` records which session it was published to,
10
+ * for tracing and for the redelivery counter — never for routing a result back.
11
+ */
12
+ export interface ConnectOp {
13
+ id: string;
14
+ projectId: string;
15
+ sessionId: string;
16
+ kind: ConnectOpKind;
17
+ payload: SlotCommandPayload | ModelTask | ConfigurePayload | InquiryPayload;
18
+ createdAt: string;
19
+ /** When the asker stops waiting. A connector past this may skip the work and say so. */
20
+ deadlineAt: string;
21
+ /** How many times this op has been delivered. > 1 means a connector reconnected. */
22
+ attempt: number;
23
+ deliveredAt?: string;
24
+ }
25
+ /**
26
+ * The answer to exactly one operation.
27
+ *
28
+ * `ok: false` with `kind: 'malformed'` is a RETRYABLE outcome — the platform asks again, with the
29
+ * problem quoted back. `'unavailable'` says the connector cannot do this at all and the run should
30
+ * fail rather than spin.
31
+ */
32
+ export interface ConnectOpResult {
33
+ opId: string;
34
+ sessionId: string;
35
+ ok: boolean;
36
+ value?: unknown;
37
+ error?: ConnectOpError;
38
+ }
39
+ export interface ConnectOpError {
40
+ type: string;
41
+ message: string;
42
+ kind?: ConnectOpErrorKind;
43
+ }
44
+ /**
45
+ * The configuration a local target needs, as file CONTENT rather than as keys.
46
+ *
47
+ * The platform composes it — it is the only side that knows the OIDC client, its secret and the
48
+ * redirect URIs — and the connector writes it into the managed block of each named file, leaving
49
+ * every line the user added alone. `probe` names the services the platform wants to know about
50
+ * before it asks for a database migration or a boot check.
51
+ */
52
+ export interface ConfigurePayload {
53
+ files: ConfigureFile[];
54
+ probe: Array<keyof ConnectServices>;
55
+ }
56
+ export interface ConfigureFile {
57
+ /** Target-root-relative, e.g. `.env` or `sources/web/.env`. */
58
+ path: string;
59
+ /** The managed block's content. Written between the connector's own markers. */
60
+ content: string;
61
+ }
62
+ export interface ConfigureResult {
63
+ written: string[];
64
+ /**
65
+ * Keys the target still needs and the user must supply — a local database URL, say.
66
+ *
67
+ * Read exactly like the publisher's configure acknowledgement: a key with an EMPTY value counts
68
+ * as missing, because a push that ran before a secret existed leaves one behind.
69
+ */
70
+ missing: string[];
71
+ services: ConnectServices;
72
+ }
73
+ /**
74
+ * One model call, handed to the parent agent.
75
+ *
76
+ * It carries everything a fresh subagent needs and nothing it does not: the persona as a system
77
+ * prompt, the conversation so far, and the shape the answer must take. There is no platform
78
+ * vocabulary in it — no pipeline, no step, no internal role semantics beyond a name and a tier —
79
+ * because it is read by a model the platform does not own.
80
+ */
81
+ export interface ModelTask {
82
+ id: string;
83
+ projectId: string;
84
+ /** The platform role that asked. Informational; the tier is what decides the model. */
85
+ role: string;
86
+ tier: ModelTier;
87
+ /** Which attempt this is. > 0 means a previous answer was refused; `feedback` says why. */
88
+ attempt: number;
89
+ mode: ModelTaskMode;
90
+ system?: string;
91
+ messages: ModelTaskMessage[];
92
+ /** `Tools` mode: what the subagent may call. JSON Schema per tool. */
93
+ tools?: ModelTaskTool[];
94
+ /** `Tools` mode: force one tool, or leave the choice open. */
95
+ toolChoice?: ModelTaskToolChoice;
96
+ /** `Json` mode: the schema the single returned object must satisfy. */
97
+ outputSchema?: Record<string, unknown>;
98
+ /** A soft cap, stated so a parent can size its own call. */
99
+ maxOutputChars?: number;
100
+ /** Present on a retry: what was wrong with the previous answer. */
101
+ feedback?: string;
102
+ expiresAt: string;
103
+ }
104
+ export interface ModelTaskMessage {
105
+ role: ModelTaskRole;
106
+ content: string;
107
+ /** Assistant messages that called tools. */
108
+ toolCalls?: ModelTaskToolCall[];
109
+ /** Tool messages answer one call. */
110
+ toolCallId?: string;
111
+ /** Tool messages name the tool they answer. */
112
+ name?: string;
113
+ }
114
+ export interface ModelTaskTool {
115
+ name: string;
116
+ description?: string;
117
+ /** JSON Schema for the tool's arguments. */
118
+ parameters: Record<string, unknown>;
119
+ }
120
+ export type ModelTaskToolChoice = 'auto' | 'none' | {
121
+ name: string;
122
+ };
123
+ export interface ModelTaskToolCall {
124
+ id?: string;
125
+ name: string;
126
+ args: Record<string, unknown>;
127
+ }
128
+ /** What the parent's subagent produced. */
129
+ export interface ModelTaskResult {
130
+ taskId: string;
131
+ kind: ModelTaskResultKind;
132
+ text?: string;
133
+ json?: unknown;
134
+ toolCalls?: ModelTaskToolCall[];
135
+ /** Why the parent could not answer. Treated as a malformed answer and retried. */
136
+ error?: string;
137
+ /** What the parent spent. Recorded for the trace; it costs the platform nothing. */
138
+ usage?: ModelTaskUsage;
139
+ /** What the parent actually ran. Display only. */
140
+ model?: string;
141
+ }
142
+ export interface ModelTaskUsage {
143
+ inputTokens?: number;
144
+ outputTokens?: number;
145
+ }
146
+ /** One option a {@link ConnectInquiryKind.Choice} question offers. */
147
+ export interface ConnectInquiryOption {
148
+ value: string;
149
+ label: string;
150
+ description?: string;
151
+ }
152
+ /**
153
+ * One question put to the person the connector is working for.
154
+ *
155
+ * It carries where it came from — the run and the step — because an answer is recorded
156
+ * against the run that asked and re-read when that run resumes. `expiresAt` is what makes an
157
+ * unanswered question fail its step instead of parking a project lock forever.
158
+ */
159
+ export interface InquiryPayload {
160
+ id: string;
161
+ projectId: string;
162
+ runId?: string;
163
+ /** The pipeline step that asked, so a resumed run can match the answer to the place it belongs. */
164
+ step?: string;
165
+ kind: ConnectInquiryKind;
166
+ question: string;
167
+ /** What the asker already knows, so the person is not asked to go and find it out. */
168
+ context?: string;
169
+ options?: ConnectInquiryOption[];
170
+ multiple?: boolean;
171
+ /** Whether a choice question also accepts text the options do not cover. */
172
+ allowText?: boolean;
173
+ /** What the asker will assume if nobody answers. Recorded as an assumption when it is used. */
174
+ default?: string | string[];
175
+ expiresAt: string;
176
+ }
177
+ /**
178
+ * The answer to one question.
179
+ *
180
+ * `declined` is a real answer and not an absence: it says a person saw the question and chose not
181
+ * to decide, which the asker records as an assumption rather than waiting out the timeout.
182
+ */
183
+ export interface InquiryAnswerPayload {
184
+ inquiryId: string;
185
+ value?: string | string[];
186
+ text?: string;
187
+ declined?: boolean;
188
+ }
189
+ //# sourceMappingURL=ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ops.d.ts","sourceRoot":"","sources":["../../src/connect/ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ops.js","sourceRoot":"","sources":["../../src/connect/ops.ts"],"names":[],"mappings":""}