@cotal-ai/core 0.109.12 → 0.109.15
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/dist/connector.d.ts +6 -1
- package/dist/connector.d.ts.map +1 -1
- package/dist/connector.js.map +1 -1
- package/dist/startup-confirm.d.ts +13 -4
- package/dist/startup-confirm.d.ts.map +1 -1
- package/dist/startup-confirm.js +34 -7
- package/dist/startup-confirm.js.map +1 -1
- package/package.json +1 -1
package/dist/connector.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Extension, ExtensionRef } from "./registry.js";
|
|
2
2
|
import type { McpServerSpec } from "./connector-config.js";
|
|
3
|
-
import type { StartupReply } from "./startup-confirm.js";
|
|
3
|
+
import type { StartupBlocker, StartupReply } from "./startup-confirm.js";
|
|
4
4
|
/** Identity + mesh coordinates the manager hands a connector to launch an agent. */
|
|
5
5
|
export interface LaunchOpts {
|
|
6
6
|
space: string;
|
|
@@ -172,6 +172,11 @@ export interface LaunchSpec {
|
|
|
172
172
|
* normalized like confirm. Seen on two consecutive screen reads, it ends the startup watch with
|
|
173
173
|
* no key. Requires confirm. */
|
|
174
174
|
confirmReady?: readonly string[];
|
|
175
|
+
/** Optional native startup screens the watch never answers, such as a harness's first-run setup or
|
|
176
|
+
* a safety warning only its user may accept. Each is matched like a confirmBefore prompt. While one
|
|
177
|
+
* is on screen no key is sent, and when the startup bound ends with one on screen the failure names
|
|
178
|
+
* its reason. Requires confirm. */
|
|
179
|
+
confirmBlockers?: readonly StartupBlocker[];
|
|
175
180
|
/** This agent's local control endpoint — the OS path its lifecycle hooks connect to (passed in
|
|
176
181
|
* the child env as `COTAL_CONTROL_SOCKET`/`COTAL_CONTROL_TOKEN`), plus the first-frame `token`
|
|
177
182
|
* that authenticates it. The connector mints it in `buildLaunch`; the manager keeps it IN MEMORY
|
package/dist/connector.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"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"}
|
package/dist/connector.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AA8VA;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,SAAmG;IAEnG,IAAI,SAAS,CAAC,2BAA2B;QAAE,OAAO,OAAO,CAAC;IAC1D,IAAI,SAAS,CAAC,cAAc;QAAE,OAAO,MAAM,CAAC;IAC5C,OAAO,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;AAC/D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAAC,SAAsD;IACpG,IAAI,SAAS,CAAC,wBAAwB,KAAK,IAAI;QAAE,OAAO;IACxD,MAAM,IAAI,KAAK,CACb,qIAAqI,CACtI,CAAC;AACJ,CAAC"}
|
|
@@ -7,11 +7,20 @@ export interface StartupReply {
|
|
|
7
7
|
* it is not on screen, the next choice can be answered instead, which skips this one for good. */
|
|
8
8
|
optional?: boolean;
|
|
9
9
|
}
|
|
10
|
+
/** A native startup screen the watch never answers, such as a harness's first-run setup or a safety
|
|
11
|
+
* warning only its user may accept. No key is sent while one is on screen. When the startup bound
|
|
12
|
+
* ends with one on screen, the failure names its `reason` instead of the prompt that did not appear. */
|
|
13
|
+
export interface StartupBlocker {
|
|
14
|
+
prompt: string;
|
|
15
|
+
reason: string;
|
|
16
|
+
}
|
|
10
17
|
/** The seat package repeats this small matcher because it has no core dependency. Both operate on
|
|
11
18
|
* current screen snapshots, never scrollback accumulated from an earlier dialog. */
|
|
12
19
|
export declare class StartupConfirmSequence {
|
|
13
20
|
#private;
|
|
14
|
-
constructor(prompt: string, before?: readonly StartupReply[], ready?: readonly string[]);
|
|
21
|
+
constructor(prompt: string, before?: readonly StartupReply[], ready?: readonly string[], blockers?: readonly StartupBlocker[]);
|
|
22
|
+
/** The reason of the declared blocker on the last screen read, if one was there. */
|
|
23
|
+
get blocked(): string | undefined;
|
|
15
24
|
/** The key to press, if any; `done` ends the watch. */
|
|
16
25
|
observe(screen: string): {
|
|
17
26
|
key?: "Down" | "Enter";
|
|
@@ -30,7 +39,7 @@ export interface ConfirmPane {
|
|
|
30
39
|
/** Stop the child and report the failure. Must not throw from the watch's timer. */
|
|
31
40
|
fail(message: string): void;
|
|
32
41
|
}
|
|
33
|
-
/** Honor {@link LaunchSpec.confirm}, its optional preceding choices
|
|
34
|
-
* startup bound. No key is sent for an unrelated dialog, after exit, or once the watch is done. */
|
|
35
|
-
export declare function confirmWatch(prompt: string, before?: readonly StartupReply[], ready?: readonly string[]): (pane: ConfirmPane) => void;
|
|
42
|
+
/** Honor {@link LaunchSpec.confirm}, its optional preceding choices, its ready texts and its blockers
|
|
43
|
+
* within one startup bound. No key is sent for an unrelated dialog, after exit, or once the watch is done. */
|
|
44
|
+
export declare function confirmWatch(prompt: string, before?: readonly StartupReply[], ready?: readonly string[], blockers?: readonly StartupBlocker[]): (pane: ConfirmPane) => void;
|
|
36
45
|
//# sourceMappingURL=startup-confirm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup-confirm.d.ts","sourceRoot":"","sources":["../src/startup-confirm.ts"],"names":[],"mappings":"AAYA;sFACsF;AACtF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACtB;sGACkG;IAClG,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;oFACoF;AACpF,qBAAa,sBAAsB;;
|
|
1
|
+
{"version":3,"file":"startup-confirm.d.ts","sourceRoot":"","sources":["../src/startup-confirm.ts"],"names":[],"mappings":"AAYA;sFACsF;AACtF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACtB;sGACkG;IAClG,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;wGAEwG;AACxG,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;oFACoF;AACpF,qBAAa,sBAAsB;;gBAUrB,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,SAAS,YAAY,EAAO,EAAE,KAAK,GAAE,SAAS,MAAM,EAAO,EAAE,QAAQ,GAAE,SAAS,cAAc,EAAO;IA0BzI,oFAAoF;IACpF,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAEhC;IACD,uDAAuD;IACvD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS;CAuC/E;AAED,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B;2FACuF;IACvF,IAAI,IAAI,MAAM,GAAG,SAAS,CAAC;IAC3B,+BAA+B;IAC/B,KAAK,IAAI,IAAI,CAAC;IACd,0DAA0D;IAC1D,IAAI,CAAC,IAAI,IAAI,CAAC;IACd,oFAAoF;IACpF,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;8GAC8G;AAC9G,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,SAAS,YAAY,EAAO,EAAE,KAAK,GAAE,SAAS,MAAM,EAAO,EAAE,QAAQ,GAAE,SAAS,cAAc,EAAO,GAAG,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAiCvL"}
|
package/dist/startup-confirm.js
CHANGED
|
@@ -12,11 +12,13 @@ export class StartupConfirmSequence {
|
|
|
12
12
|
#final;
|
|
13
13
|
#before;
|
|
14
14
|
#ready;
|
|
15
|
+
#blockers;
|
|
16
|
+
#blocked;
|
|
15
17
|
#step = 0;
|
|
16
18
|
#seen;
|
|
17
19
|
#readySeen = false;
|
|
18
20
|
#done = false;
|
|
19
|
-
constructor(prompt, before = [], ready = []) {
|
|
21
|
+
constructor(prompt, before = [], ready = [], blockers = []) {
|
|
20
22
|
this.#final = normalizeConfirmText(prompt);
|
|
21
23
|
if (!this.#final)
|
|
22
24
|
throw new Error("startup confirmation prompt is empty after ANSI and whitespace normalization");
|
|
@@ -39,6 +41,21 @@ export class StartupConfirmSequence {
|
|
|
39
41
|
throw new Error("invalid startup ready text");
|
|
40
42
|
return normalized;
|
|
41
43
|
});
|
|
44
|
+
if (!Array.isArray(blockers) || blockers.length > 8)
|
|
45
|
+
throw new Error("invalid startup blockers");
|
|
46
|
+
this.#blockers = blockers.map((blocker) => {
|
|
47
|
+
if (!blocker || typeof blocker.prompt !== "string" || blocker.prompt.length > 1024
|
|
48
|
+
|| typeof blocker.reason !== "string" || !blocker.reason.trim() || blocker.reason.length > 1024)
|
|
49
|
+
throw new Error("invalid startup blocker");
|
|
50
|
+
const normalized = blocker.prompt.split(/\r?\n/).map(normalizeConfirmText).filter(Boolean).join("\n");
|
|
51
|
+
if (!normalized)
|
|
52
|
+
throw new Error("startup blocker prompt is empty after normalization");
|
|
53
|
+
return { prompt: normalized, reason: blocker.reason };
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/** The reason of the declared blocker on the last screen read, if one was there. */
|
|
57
|
+
get blocked() {
|
|
58
|
+
return this.#blocked;
|
|
42
59
|
}
|
|
43
60
|
/** The key to press, if any; `done` ends the watch. */
|
|
44
61
|
observe(screen) {
|
|
@@ -49,6 +66,13 @@ export class StartupConfirmSequence {
|
|
|
49
66
|
const expected = prompt.split("\n");
|
|
50
67
|
return lines.some((_, start) => expected.every((line, offset) => lines[start + offset] === line));
|
|
51
68
|
};
|
|
69
|
+
// A blocker is left for the startup bound to end, so a person at the pane can still answer it.
|
|
70
|
+
this.#blocked = this.#blockers.find((blocker) => matches(blocker.prompt))?.reason;
|
|
71
|
+
if (this.#blocked !== undefined) {
|
|
72
|
+
this.#seen = undefined;
|
|
73
|
+
this.#readySeen = false;
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
52
76
|
// An optional choice that is not on screen does not block the choice after it. Answering a
|
|
53
77
|
// later choice passes over the optional ones before it for good.
|
|
54
78
|
let index = this.#step;
|
|
@@ -92,16 +116,19 @@ export class StartupConfirmSequence {
|
|
|
92
116
|
return { key: step.key, done: false };
|
|
93
117
|
}
|
|
94
118
|
}
|
|
95
|
-
/** Honor {@link LaunchSpec.confirm}, its optional preceding choices
|
|
96
|
-
* startup bound. No key is sent for an unrelated dialog, after exit, or once the watch is done. */
|
|
97
|
-
export function confirmWatch(prompt, before = [], ready = []) {
|
|
119
|
+
/** Honor {@link LaunchSpec.confirm}, its optional preceding choices, its ready texts and its blockers
|
|
120
|
+
* within one startup bound. No key is sent for an unrelated dialog, after exit, or once the watch is done. */
|
|
121
|
+
export function confirmWatch(prompt, before = [], ready = [], blockers = []) {
|
|
98
122
|
// Validate before a runtime starts a child, but allocate mutable state per watch.
|
|
99
|
-
new StartupConfirmSequence(prompt, before, ready);
|
|
123
|
+
new StartupConfirmSequence(prompt, before, ready, blockers);
|
|
100
124
|
return (pane) => {
|
|
101
|
-
const sequence = new StartupConfirmSequence(prompt, before, ready);
|
|
125
|
+
const sequence = new StartupConfirmSequence(prompt, before, ready, blockers);
|
|
102
126
|
const deadline = Date.now() + CONFIRM_TIMEOUT_MS;
|
|
103
127
|
const poll = () => {
|
|
104
|
-
|
|
128
|
+
const blocked = sequence.blocked;
|
|
129
|
+
let failure = blocked === undefined
|
|
130
|
+
? `Cotal startup confirmation failed: prompt ${JSON.stringify(prompt)} did not appear within ${CONFIRM_TIMEOUT_MS}ms.`
|
|
131
|
+
: `Cotal startup confirmation failed: ${blocked}`;
|
|
105
132
|
try {
|
|
106
133
|
if (Date.now() < deadline) {
|
|
107
134
|
const screen = pane.read();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup-confirm.js","sourceRoot":"","sources":["../src/startup-confirm.ts"],"names":[],"mappings":"AAEA,MAAM,GAAG,GAAG,0BAA0B,CAAC;AACvC,MAAM,GAAG,GAAG,oCAAoC,CAAC;AACjD,MAAM,GAAG,GAAG,cAAc,CAAC;AAC3B,MAAM,OAAO,GAAG,GAAG,CAAC;AACpB,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,SAAS,oBAAoB,CAAC,KAAa;IACzC,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACtF,CAAC;
|
|
1
|
+
{"version":3,"file":"startup-confirm.js","sourceRoot":"","sources":["../src/startup-confirm.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED