@miadi/tide-contract 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/index.d.ts +60 -9
- package/dist/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/schema/tide-api.schema.json +61 -10
package/README.md
CHANGED
|
@@ -13,7 +13,9 @@ This package is the shared covenant between:
|
|
|
13
13
|
|
|
14
14
|
- `schema/tide-api.schema.json` is the planned source of truth.
|
|
15
15
|
- `src/index.ts` carries hand-written TypeScript types for this scaffold, edited in lockstep with the schema (guarded by `npm test`, `test/schema-patterns.test.ts`).
|
|
16
|
-
- 0.2.0 adds the `multiplexer` discriminator (`"tmux" | "herdr"`, absent ⇒ `"tmux"`), pane targets in both formats
|
|
16
|
+
- 0.2.0 adds the `multiplexer` discriminator (`"tmux" | "herdr"`, absent ⇒ `"tmux"`), pane targets in both formats, optional `pane_label`, the `TideSendKeysResult` discriminated union, and optional `agent_status` on `EpisodeLane` / `TidePendingApproval`.
|
|
17
|
+
- 0.2.1 corrects the herdr pane-id story from the EP137 live smoke (herdr 0.7.4): real ids are `w1:p2` (legacy `1-2` still accepted), **session-scoped and monotonic** — they do not compact or get reused when panes close, a stale id fails loudly with `pane_not_found`, and `pane rename` sets the `label` field that label→id resolution matches at action time.
|
|
18
|
+
- 0.2.2 types the remaining live-verified herdr envelopes: `TideHerdrPaneInfo` (`pane list` rows), `TideHerdrWaitOutputResult` (`wait output` hit), and `TideHerdrAgentStatusEvent` (`wait agent-status` hits print an EVENT envelope, not a result envelope).
|
|
17
19
|
- Runtime identity constants are exported from `src/index.ts` and mirrored in the schema `x-tide` metadata: `tide`, `MIADI_HOME`, `~/.miadi/navigator`, and `miadi.tide.daemon.v2`.
|
|
18
20
|
- Future work should generate the TypeScript types from the schema and validate IronSilk runtime payloads with Python `jsonschema`.
|
|
19
21
|
|
package/dist/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export type Multiplexer = "tmux" | "herdr";
|
|
|
16
16
|
export type TideAgentStatus = "idle" | "working" | "blocked" | "done" | "unknown";
|
|
17
17
|
export interface TerminalContext {
|
|
18
18
|
multiplexer?: Multiplexer;
|
|
19
|
-
/** Pane id in the owning multiplexer: tmux (e.g. "%56") or herdr (e.g. "1-2"). Field name is historical. */
|
|
19
|
+
/** Pane id in the owning multiplexer: tmux (e.g. "%56") or herdr (e.g. "w1:p2" as of herdr 0.7; legacy "1-2" accepted). Field name is historical. */
|
|
20
20
|
tmux_pane: string;
|
|
21
21
|
pid: number;
|
|
22
22
|
cwd: string;
|
|
@@ -65,9 +65,9 @@ export interface TideTerminalTarget {
|
|
|
65
65
|
session_name: string;
|
|
66
66
|
window_id: string;
|
|
67
67
|
window_name: string;
|
|
68
|
-
/** Pane id in the owning multiplexer: tmux (e.g. "%56") or herdr (e.g. "1-2"). */
|
|
68
|
+
/** Pane id in the owning multiplexer: tmux (e.g. "%56") or herdr (e.g. "w1:p2" as of herdr 0.7; legacy "1-2" accepted). */
|
|
69
69
|
pane_id: string;
|
|
70
|
-
/** Durable pane label (herdr); resolve label→id at action time — herdr ids
|
|
70
|
+
/** Durable pane label (herdr, set via `pane rename`); resolve label→id at action time — herdr ids are session-scoped and a stale id fails loudly with pane_not_found. */
|
|
71
71
|
pane_label?: string;
|
|
72
72
|
cwd: string;
|
|
73
73
|
pane_active: boolean;
|
|
@@ -127,7 +127,7 @@ export interface TideTmuxSendKeysResult {
|
|
|
127
127
|
*/
|
|
128
128
|
export interface TideHerdrSendKeysResult {
|
|
129
129
|
multiplexer: "herdr";
|
|
130
|
-
/** Resolved herdr pane id (e.g. "1-2").
|
|
130
|
+
/** Resolved herdr pane id (e.g. "w1:p2" as of herdr 0.7; legacy "1-2" accepted). Session-scoped, not durable across herdr restarts. */
|
|
131
131
|
target: string;
|
|
132
132
|
/** Durable pane label this target was resolved from, when label→id resolution ran. */
|
|
133
133
|
pane_label?: string;
|
|
@@ -135,7 +135,7 @@ export interface TideHerdrSendKeysResult {
|
|
|
135
135
|
message: string;
|
|
136
136
|
/** Whether a real Enter key was sent after the literal text. */
|
|
137
137
|
submitted: boolean;
|
|
138
|
-
/** Exact herdr CLI argv used to type the literal text (e.g. ["pane","send-text","
|
|
138
|
+
/** Exact herdr CLI argv used to type the literal text (e.g. ["pane","send-text","w1:p2", …]). */
|
|
139
139
|
literal_command: string[];
|
|
140
140
|
/** Exact herdr CLI argv used to submit Enter, or null when `submitted` is false. */
|
|
141
141
|
submit_command: string[] | null;
|
|
@@ -144,6 +144,57 @@ export interface TideHerdrSendKeysResult {
|
|
|
144
144
|
}
|
|
145
145
|
/** Discriminated union on `multiplexer`; an absent discriminator means the tmux variant. */
|
|
146
146
|
export type TideSendKeysResult = TideTmuxSendKeysResult | TideHerdrSendKeysResult;
|
|
147
|
+
/**
|
|
148
|
+
* One row from `herdr pane list` (fields observed live on herdr 0.7.4, EP137).
|
|
149
|
+
* `label` appears only after `herdr pane rename`; rows carry
|
|
150
|
+
* `terminal_title`/`terminal_title_stripped`, never `title`.
|
|
151
|
+
*/
|
|
152
|
+
export interface TideHerdrPaneInfo {
|
|
153
|
+
/** Session-scoped herdr pane id (e.g. "w1:p2"). */
|
|
154
|
+
pane_id?: string;
|
|
155
|
+
/** Durable pane label set via `herdr pane rename` — the field label→id resolution matches. */
|
|
156
|
+
label?: string;
|
|
157
|
+
focused?: boolean;
|
|
158
|
+
agent_status?: TideAgentStatus | string;
|
|
159
|
+
workspace_id?: string;
|
|
160
|
+
tab_id?: string;
|
|
161
|
+
cwd?: string;
|
|
162
|
+
terminal_title?: string;
|
|
163
|
+
terminal_title_stripped?: string;
|
|
164
|
+
[key: string]: unknown;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Envelope printed by `herdr wait output` on a hit (herdr 0.7.4, EP137):
|
|
168
|
+
* `result.type` is "output_matched" with `matched_line` and a read transcript
|
|
169
|
+
* block. On timeout herdr exits 1 with error JSON on stderr — that path
|
|
170
|
+
* surfaces as a TideError, never as this shape.
|
|
171
|
+
*/
|
|
172
|
+
export interface TideHerdrWaitOutputResult {
|
|
173
|
+
id?: string;
|
|
174
|
+
result?: {
|
|
175
|
+
type?: string;
|
|
176
|
+
matched_line?: string;
|
|
177
|
+
pane_id?: string;
|
|
178
|
+
workspace_id?: string;
|
|
179
|
+
[key: string]: unknown;
|
|
180
|
+
};
|
|
181
|
+
[key: string]: unknown;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* EVENT envelope printed by `herdr wait agent-status` on a hit (herdr 0.7.4,
|
|
185
|
+
* EP137) — NOT a result envelope. On timeout herdr exits 1 with plain text on
|
|
186
|
+
* stderr — that path surfaces as a TideError.
|
|
187
|
+
*/
|
|
188
|
+
export interface TideHerdrAgentStatusEvent {
|
|
189
|
+
event?: string;
|
|
190
|
+
data?: {
|
|
191
|
+
pane_id?: string;
|
|
192
|
+
workspace_id?: string;
|
|
193
|
+
agent_status?: TideAgentStatus | string;
|
|
194
|
+
[key: string]: unknown;
|
|
195
|
+
};
|
|
196
|
+
[key: string]: unknown;
|
|
197
|
+
}
|
|
147
198
|
export type ObserverControllerPosture = "observer" | "controller" | "auto";
|
|
148
199
|
export type EpisodeLaneRole = "planning" | "perspective" | "delivery" | "implementation" | "custom";
|
|
149
200
|
export type EpisodeLaneVerificationState = "verified" | "unverified" | "unknown";
|
|
@@ -151,9 +202,9 @@ export interface EpisodeLane {
|
|
|
151
202
|
episode_id: string;
|
|
152
203
|
lane_id: string;
|
|
153
204
|
lane_role: EpisodeLaneRole;
|
|
154
|
-
/** Pane target: tmux pane id (e.g. "%76") or herdr pane id (e.g. "
|
|
205
|
+
/** Pane target: tmux pane id (e.g. "%76") or herdr pane id (e.g. "w1:p2"). */
|
|
155
206
|
pane_target: string | null;
|
|
156
|
-
/** Durable pane label. herdr ids are
|
|
207
|
+
/** Durable pane label. herdr ids are session-scoped (they do not survive a herdr restart), so label→id resolution happens at action time. */
|
|
157
208
|
pane_label?: string | null;
|
|
158
209
|
agent_status?: TideAgentStatus;
|
|
159
210
|
verification_state: EpisodeLaneVerificationState;
|
|
@@ -173,7 +224,7 @@ export interface TideLaneCheckpoint {
|
|
|
173
224
|
episode_id: string;
|
|
174
225
|
lane_id: string;
|
|
175
226
|
pane_target: string | null;
|
|
176
|
-
/** Durable pane label for re-resolving the (
|
|
227
|
+
/** Durable pane label for re-resolving the (session-scoped) herdr pane id at action time. */
|
|
177
228
|
pane_label?: string | null;
|
|
178
229
|
continuation_note: string | null;
|
|
179
230
|
artifact_paths: string[];
|
|
@@ -202,7 +253,7 @@ export interface TidePendingApproval {
|
|
|
202
253
|
episode_id: string;
|
|
203
254
|
lane_id: string | null;
|
|
204
255
|
pane_target: string | null;
|
|
205
|
-
/** Durable pane label for re-resolving the (
|
|
256
|
+
/** Durable pane label for re-resolving the (session-scoped) herdr pane id at action time. */
|
|
206
257
|
pane_label?: string | null;
|
|
207
258
|
agent_status?: TideAgentStatus;
|
|
208
259
|
action_type: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB,mDAAmD,CAAA;AAClF,eAAO,MAAM,gBAAgB,SAAS,CAAA;AACtC,eAAO,MAAM,mBAAmB,eAAe,CAAA;AAC/C,eAAO,MAAM,uBAAuB,uBAAuB,CAAA;AAC3D,eAAO,MAAM,4BAA4B,yBAAyB,CAAA;AAIlE;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,CAAA;AAE1C;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;AAEjF,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -51,8 +51,8 @@
|
|
|
51
51
|
"episode_id": { "type": "string", "description": "Unique episode identifier." },
|
|
52
52
|
"lane_id": { "type": "string", "description": "Unique lane identifier within the episode (e.g., 'planning', 'delivery')." },
|
|
53
53
|
"lane_role": { "$ref": "#/$defs/episodeLaneRole" },
|
|
54
|
-
"pane_target": { "type": ["string", "null"], "pattern": "^(%?[0-9]+|[0-9]+-[0-9]+)$", "description": "Optional pane target: tmux pane id (e.g., '%76' or '76') or herdr pane id (e.g., '1-2')." },
|
|
55
|
-
"pane_label": { "type": ["string", "null"], "description": "Durable pane label. herdr pane ids are
|
|
54
|
+
"pane_target": { "type": ["string", "null"], "pattern": "^(%?[0-9]+|[0-9]+-[0-9]+|w[0-9]+:p[0-9]+)$", "description": "Optional pane target: tmux pane id (e.g., '%76' or '76') or herdr pane id (e.g., 'w1:p2' as of herdr 0.7; legacy '1-2' accepted)." },
|
|
55
|
+
"pane_label": { "type": ["string", "null"], "description": "Durable pane label. herdr pane ids are session-scoped (they do not survive a herdr restart), so label→id resolution happens at action time." },
|
|
56
56
|
"agent_status": { "$ref": "#/$defs/agentStatus" },
|
|
57
57
|
"verification_state": { "$ref": "#/$defs/episodeLaneVerificationState" },
|
|
58
58
|
"domain_id": { "type": ["string", "null"] },
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"episode_id": { "type": "string" },
|
|
82
82
|
"lane_id": { "type": "string" },
|
|
83
83
|
"pane_target": { "type": ["string", "null"] },
|
|
84
|
-
"pane_label": { "type": ["string", "null"], "description": "Durable pane label for re-resolving the (
|
|
84
|
+
"pane_label": { "type": ["string", "null"], "description": "Durable pane label for re-resolving the (session-scoped) herdr pane id at action time." },
|
|
85
85
|
"continuation_note": { "type": ["string", "null"] },
|
|
86
86
|
"artifact_paths": { "type": "array", "items": { "type": "string" } },
|
|
87
87
|
"safe_to_close": { "type": "boolean" },
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
"episode_id": { "type": "string" },
|
|
125
125
|
"lane_id": { "type": ["string", "null"] },
|
|
126
126
|
"pane_target": { "type": ["string", "null"] },
|
|
127
|
-
"pane_label": { "type": ["string", "null"], "description": "Durable pane label for re-resolving the (
|
|
127
|
+
"pane_label": { "type": ["string", "null"], "description": "Durable pane label for re-resolving the (session-scoped) herdr pane id at action time." },
|
|
128
128
|
"agent_status": { "$ref": "#/$defs/agentStatus" },
|
|
129
129
|
"action_type": { "type": "string", "description": "e.g., 'steer', 'send', 'close', 'commit'." },
|
|
130
130
|
"proposal_text": { "type": ["string", "null"] },
|
|
@@ -147,7 +147,7 @@
|
|
|
147
147
|
],
|
|
148
148
|
"properties": {
|
|
149
149
|
"multiplexer": { "$ref": "#/$defs/multiplexer" },
|
|
150
|
-
"tmux_pane": { "type": "string", "pattern": "^(%?[0-9]+|[0-9]+-[0-9]+)$", "description": "Pane id in the owning multiplexer: tmux (e.g., '%56') or herdr (e.g., '1-2'). Field name is historical." },
|
|
150
|
+
"tmux_pane": { "type": "string", "pattern": "^(%?[0-9]+|[0-9]+-[0-9]+|w[0-9]+:p[0-9]+)$", "description": "Pane id in the owning multiplexer: tmux (e.g., '%56') or herdr (e.g., 'w1:p2' as of herdr 0.7; legacy '1-2' accepted). Field name is historical." },
|
|
151
151
|
"pid": { "type": "integer" },
|
|
152
152
|
"cwd": { "type": "string" },
|
|
153
153
|
"domain_id": { "type": ["string", "null"] },
|
|
@@ -258,8 +258,8 @@
|
|
|
258
258
|
"session_name": { "type": "string" },
|
|
259
259
|
"window_id": { "type": "string" },
|
|
260
260
|
"window_name": { "type": "string" },
|
|
261
|
-
"pane_id": { "type": "string", "pattern": "^(%?[0-9]+|[0-9]+-[0-9]+)$", "description": "Pane id in the owning multiplexer: tmux (e.g., '%56') or herdr (e.g., '1-2')." },
|
|
262
|
-
"pane_label": { "type": "string", "description": "Durable pane label (herdr); resolve label→id at action time — herdr ids
|
|
261
|
+
"pane_id": { "type": "string", "pattern": "^(%?[0-9]+|[0-9]+-[0-9]+|w[0-9]+:p[0-9]+)$", "description": "Pane id in the owning multiplexer: tmux (e.g., '%56') or herdr (e.g., 'w1:p2' as of herdr 0.7; legacy '1-2' accepted)." },
|
|
262
|
+
"pane_label": { "type": "string", "description": "Durable pane label (herdr, set via `pane rename`); resolve label→id at action time — herdr ids are session-scoped and a stale id fails loudly with pane_not_found." },
|
|
263
263
|
"cwd": { "type": "string" },
|
|
264
264
|
"pane_active": { "type": "boolean" },
|
|
265
265
|
"session_attached": { "type": "integer", "minimum": 0 },
|
|
@@ -319,12 +319,12 @@
|
|
|
319
319
|
"description": "Result/plan of a direct send-keys steer against a herdr pane. The argv fields carry herdr CLI arguments instead of tmux argv.",
|
|
320
320
|
"properties": {
|
|
321
321
|
"multiplexer": { "const": "herdr" },
|
|
322
|
-
"target": { "type": "string", "pattern": "^[0-9]+-[0-9]
|
|
322
|
+
"target": { "type": "string", "pattern": "^([0-9]+-[0-9]+|w[0-9]+:p[0-9]+)$", "description": "Resolved herdr pane id (e.g., 'w1:p2' as of herdr 0.7; legacy '1-2' accepted). Session-scoped, not durable across herdr restarts." },
|
|
323
323
|
"pane_label": { "type": "string", "description": "Durable pane label this target was resolved from, when label→id resolution ran." },
|
|
324
324
|
"message": { "type": "string", "description": "The literal text typed into the pane." },
|
|
325
325
|
"submitted": { "type": "boolean", "description": "Whether a real Enter key was sent after the literal text." },
|
|
326
|
-
"literal_command": { "type": "array", "items": { "type": "string" }, "description": "Exact herdr CLI argv used to type the literal text (e.g., ['pane','send-text','
|
|
327
|
-
"submit_command": { "type": ["array", "null"], "items": { "type": "string" }, "description": "Exact herdr CLI argv used to submit Enter (['pane','send-keys','
|
|
326
|
+
"literal_command": { "type": "array", "items": { "type": "string" }, "description": "Exact herdr CLI argv used to type the literal text (e.g., ['pane','send-text','w1:p2', …])." },
|
|
327
|
+
"submit_command": { "type": ["array", "null"], "items": { "type": "string" }, "description": "Exact herdr CLI argv used to submit Enter (['pane','send-keys','w1:p2','Enter']), or null when 'submitted' is false." },
|
|
328
328
|
"sent_at": { "type": "string", "description": "ISO timestamp the keys were sent (omitted on a dry-run plan)." }
|
|
329
329
|
}
|
|
330
330
|
},
|
|
@@ -334,6 +334,57 @@
|
|
|
334
334
|
{ "$ref": "#/$defs/herdrSendKeysResult" }
|
|
335
335
|
],
|
|
336
336
|
"description": "Discriminated union on 'multiplexer'; an absent discriminator means the tmux variant."
|
|
337
|
+
},
|
|
338
|
+
"herdrPaneInfo": {
|
|
339
|
+
"type": "object",
|
|
340
|
+
"additionalProperties": true,
|
|
341
|
+
"description": "One row from `herdr pane list` (loose — herdr owns the shape; fields below observed live on herdr 0.7.4, EP137). `label` appears only after `herdr pane rename`; rows carry terminal_title/terminal_title_stripped, never `title`.",
|
|
342
|
+
"properties": {
|
|
343
|
+
"pane_id": { "type": "string", "description": "Session-scoped herdr pane id (e.g., 'w1:p2')." },
|
|
344
|
+
"label": { "type": "string", "description": "Durable pane label set via `herdr pane rename` — the field label→id resolution matches." },
|
|
345
|
+
"focused": { "type": "boolean" },
|
|
346
|
+
"agent_status": { "$ref": "#/$defs/agentStatus" },
|
|
347
|
+
"workspace_id": { "type": "string" },
|
|
348
|
+
"tab_id": { "type": "string" },
|
|
349
|
+
"cwd": { "type": "string" },
|
|
350
|
+
"terminal_title": { "type": "string" },
|
|
351
|
+
"terminal_title_stripped": { "type": "string" }
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
"herdrWaitOutputResult": {
|
|
355
|
+
"type": "object",
|
|
356
|
+
"additionalProperties": true,
|
|
357
|
+
"description": "Envelope printed by `herdr wait output` on a hit (herdr 0.7.4, EP137-verified): result.type is 'output_matched' with matched_line and a read transcript block. On timeout herdr exits 1 with an error JSON on stderr — that path surfaces as a TideError, never as this shape.",
|
|
358
|
+
"properties": {
|
|
359
|
+
"id": { "type": "string" },
|
|
360
|
+
"result": {
|
|
361
|
+
"type": "object",
|
|
362
|
+
"additionalProperties": true,
|
|
363
|
+
"properties": {
|
|
364
|
+
"type": { "type": "string" },
|
|
365
|
+
"matched_line": { "type": "string" },
|
|
366
|
+
"pane_id": { "type": "string" },
|
|
367
|
+
"workspace_id": { "type": "string" }
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
},
|
|
372
|
+
"herdrAgentStatusEvent": {
|
|
373
|
+
"type": "object",
|
|
374
|
+
"additionalProperties": true,
|
|
375
|
+
"description": "EVENT envelope printed by `herdr wait agent-status` on a hit (herdr 0.7.4, EP137-verified) — NOT a result envelope. On timeout herdr exits 1 with plain text on stderr — that path surfaces as a TideError.",
|
|
376
|
+
"properties": {
|
|
377
|
+
"event": { "type": "string", "description": "e.g., 'pane.agent_status_changed'." },
|
|
378
|
+
"data": {
|
|
379
|
+
"type": "object",
|
|
380
|
+
"additionalProperties": true,
|
|
381
|
+
"properties": {
|
|
382
|
+
"pane_id": { "type": "string" },
|
|
383
|
+
"workspace_id": { "type": "string" },
|
|
384
|
+
"agent_status": { "$ref": "#/$defs/agentStatus" }
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}
|
|
337
388
|
}
|
|
338
389
|
},
|
|
339
390
|
"properties": {
|