@brainpilot/runtime 0.0.9 → 0.0.11
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/agent-factory.d.ts.map +1 -1
- package/dist/agent-factory.js +5 -2
- package/dist/agent-factory.js.map +1 -1
- package/dist/events.d.ts +19 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +19 -0
- package/dist/events.js.map +1 -1
- package/dist/extensions/agent-status.d.ts +13 -11
- package/dist/extensions/agent-status.d.ts.map +1 -1
- package/dist/extensions/agent-status.js +37 -21
- package/dist/extensions/agent-status.js.map +1 -1
- package/dist/extensions/trace-reminder.d.ts +7 -19
- package/dist/extensions/trace-reminder.d.ts.map +1 -1
- package/dist/extensions/trace-reminder.js +57 -33
- package/dist/extensions/trace-reminder.js.map +1 -1
- package/dist/mas-agent.d.ts +16 -0
- package/dist/mas-agent.d.ts.map +1 -1
- package/dist/mas-agent.js +93 -4
- package/dist/mas-agent.js.map +1 -1
- package/dist/mock-agent.d.ts +5 -2
- package/dist/mock-agent.d.ts.map +1 -1
- package/dist/mock-agent.js +17 -1
- package/dist/mock-agent.js.map +1 -1
- package/dist/personas.d.ts +1 -1
- package/dist/personas.d.ts.map +1 -1
- package/dist/personas.js +101 -22
- package/dist/personas.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +22 -9
- package/dist/server.js.map +1 -1
- package/dist/session-manager.d.ts +56 -1
- package/dist/session-manager.d.ts.map +1 -1
- package/dist/session-manager.js +235 -34
- package/dist/session-manager.js.map +1 -1
- package/dist/tools/kb/paths.d.ts +24 -0
- package/dist/tools/kb/paths.d.ts.map +1 -0
- package/dist/tools/kb/paths.js +69 -0
- package/dist/tools/kb/paths.js.map +1 -0
- package/dist/tools/kb/python.d.ts +2 -0
- package/dist/tools/kb/python.d.ts.map +1 -0
- package/dist/tools/kb/python.js +42 -0
- package/dist/tools/kb/python.js.map +1 -0
- package/dist/tools/kb/retrieve.d.ts +20 -0
- package/dist/tools/kb/retrieve.d.ts.map +1 -0
- package/dist/tools/kb/retrieve.js +128 -0
- package/dist/tools/kb/retrieve.js.map +1 -0
- package/dist/tools/kb/search-papers.d.ts +39 -0
- package/dist/tools/kb/search-papers.d.ts.map +1 -0
- package/dist/tools/kb/search-papers.js +188 -0
- package/dist/tools/kb/search-papers.js.map +1 -0
- package/dist/tools/kb/sidecar.d.ts +11 -0
- package/dist/tools/kb/sidecar.d.ts.map +1 -0
- package/dist/tools/kb/sidecar.js +161 -0
- package/dist/tools/kb/sidecar.js.map +1 -0
- package/dist/tools/kb/store.d.ts +46 -0
- package/dist/tools/kb/store.d.ts.map +1 -0
- package/dist/tools/kb/store.js +191 -0
- package/dist/tools/kb/store.js.map +1 -0
- package/dist/tools/kb/tools.d.ts +24 -0
- package/dist/tools/kb/tools.d.ts.map +1 -0
- package/dist/tools/kb/tools.js +192 -0
- package/dist/tools/kb/tools.js.map +1 -0
- package/dist/tools/system-tools.d.ts.map +1 -1
- package/dist/tools/system-tools.js +41 -6
- package/dist/tools/system-tools.js.map +1 -1
- package/dist/types.d.ts +33 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-factory.d.ts","sourceRoot":"","sources":["../src/agent-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"agent-factory.d.ts","sourceRoot":"","sources":["../src/agent-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAA0D,MAAM,YAAY,CAAC;AAM9G,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GAAG,OAAO,CAEzF;AAED,eAAO,MAAM,gBAAgB,EAAE,mBAE9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,mBA8E9B,CAAC;AAEF,wBAAgB,aAAa,IAAI,mBAAmB,CAEnD"}
|
package/dist/agent-factory.js
CHANGED
|
@@ -119,11 +119,14 @@ class RealAgentSession {
|
|
|
119
119
|
get sessionId() {
|
|
120
120
|
return this.s.sessionId;
|
|
121
121
|
}
|
|
122
|
+
get isStreaming() {
|
|
123
|
+
return this.s.isStreaming;
|
|
124
|
+
}
|
|
122
125
|
subscribe(listener) {
|
|
123
126
|
return this.s.subscribe((e) => listener(e));
|
|
124
127
|
}
|
|
125
|
-
prompt(text) {
|
|
126
|
-
return this.s.prompt(text);
|
|
128
|
+
prompt(text, opts) {
|
|
129
|
+
return this.s.prompt(text, opts);
|
|
127
130
|
}
|
|
128
131
|
abort() {
|
|
129
132
|
return this.s.abort();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-factory.js","sourceRoot":"","sources":["../src/agent-factory.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-factory.js","sourceRoot":"","sources":["../src/agent-factory.ts"],"names":[],"mappings":"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"}
|
package/dist/events.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AgUiEvent } from "@brainpilot/protocol";
|
|
1
|
+
import type { AgUiEvent, CompactionReason } from "@brainpilot/protocol";
|
|
2
2
|
interface Ctx {
|
|
3
3
|
sessionId: string;
|
|
4
4
|
agentName?: string;
|
|
@@ -56,8 +56,26 @@ export declare const ev: {
|
|
|
56
56
|
agent?: string;
|
|
57
57
|
details?: string;
|
|
58
58
|
recoverable?: boolean;
|
|
59
|
+
id?: string;
|
|
59
60
|
}): AgUiEvent;
|
|
60
61
|
custom(ctx: Ctx, name: string, value: unknown): AgUiEvent;
|
|
62
|
+
/**
|
|
63
|
+
* Pi SDK auto/manual compaction — the runtime translates Pi's internal
|
|
64
|
+
* `compaction_start` / `compaction_end` events onto the AG-UI CUSTOM channel
|
|
65
|
+
* so clients can render a "context being compacted" indicator instead of
|
|
66
|
+
* silently seeing the assistant's history collapse. Wire form:
|
|
67
|
+
* { type:"CUSTOM", name:"compaction", value: { op:"start", reason, ... } }
|
|
68
|
+
*/
|
|
69
|
+
compactionStart(ctx: Ctx, reason: CompactionReason): AgUiEvent;
|
|
70
|
+
compactionEnd(ctx: Ctx, v: {
|
|
71
|
+
reason: CompactionReason;
|
|
72
|
+
aborted: boolean;
|
|
73
|
+
willRetry: boolean;
|
|
74
|
+
errorMessage?: string;
|
|
75
|
+
tokensBefore?: number;
|
|
76
|
+
estimatedTokensAfter?: number;
|
|
77
|
+
firstKeptEntryId?: string;
|
|
78
|
+
}): AgUiEvent;
|
|
61
79
|
};
|
|
62
80
|
export {};
|
|
63
81
|
//# sourceMappingURL=events.d.ts.map
|
package/dist/events.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,SAAS,EAET,gBAAgB,EAEjB,MAAM,sBAAsB,CAAC;AAO9B,UAAU,GAAG;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAgBD,wBAAgB,YAAY,IAAI,MAAM,CAErC;AACD,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED,eAAO,MAAM,EAAE;oBACG,GAAG,gBAAgB,MAAM,GAAG,SAAS;qBAGpC,GAAG,WAAW,OAAO,GAAG,SAAS;kBAGpC,GAAG,WAAW,MAAM,kBAA2B,SAAS;0BAGhD,GAAG,aAAa,MAAM,kBAAuB,SAAS;4BAGpD,GAAG,aAAa,MAAM,SAAS,MAAM,GAAG,SAAS;wBAGrD,GAAG,aAAa,MAAM,GAAG,SAAS;IAGtD;;;;;;;;;OASG;0BACmB,GAAG,aAAa,MAAM,SAAS,MAAM,kBAAuB,SAAS;+BAGhE,GAAG,aAAa,MAAM,GAAG,SAAS;iCAGhC,GAAG,aAAa,MAAM,SAAS,MAAM,GAAG,SAAS;6BAGrD,GAAG,aAAa,MAAM,GAAG,SAAS;uBAGxC,GAAG,cAAc,MAAM,YAAY,MAAM,oBAAoB,MAAM,GAAG,SAAS;sBAShF,GAAG,cAAc,MAAM,SAAS,MAAM,GAAG,SAAS;qBAGnD,GAAG,cAAc,MAAM,GAAG,SAAS;wBAGhC,GAAG,cAAc,MAAM,WAAW,MAAM,iCAA+B,MAAM,GAAG,SAAS;2BAWtG,GAAG,QACF,MAAM,UACJ,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,UACxC;QACN,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;QAChC,SAAS,CAAC,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,gBAAgB,EAAE,MAAM,CAAA;SAAE,CAAC;KAC9E,GACA,SAAS;0BAoBL,GAAG,OACH;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GAC1G,SAAS;2BAWW,GAAG,OAAO;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;6BAStE,MAAM,SACV,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,WACpC,MAAM,SACR;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9E,SAAS;gBAeA,GAAG,QAAQ,MAAM,SAAS,OAAO,GAAG,SAAS;IAGzD;;;;;;OAMG;yBACkB,GAAG,UAAU,gBAAgB,GAAG,SAAS;uBAKvD,GAAG,KACL;QACD,MAAM,EAAE,gBAAgB,CAAC;QACzB,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,GACA,SAAS;CAIb,CAAC"}
|
package/dist/events.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* `agent_name` + `_ts`; `run_id` when known.
|
|
9
9
|
*/
|
|
10
10
|
import { randomUUID } from "node:crypto";
|
|
11
|
+
import { CUSTOM_EVENT } from "@brainpilot/protocol";
|
|
11
12
|
function ts() {
|
|
12
13
|
return new Date().toISOString();
|
|
13
14
|
}
|
|
@@ -136,6 +137,9 @@ export const ev = {
|
|
|
136
137
|
return {
|
|
137
138
|
type: "system_message",
|
|
138
139
|
session_id: sessionId,
|
|
140
|
+
// #167: optional stable id lets the client coalesce repeated messages
|
|
141
|
+
// (e.g. retry warnings) into one updating bubble instead of appending.
|
|
142
|
+
...(opts?.id ? { id: opts.id } : {}),
|
|
139
143
|
agent: opts?.agent,
|
|
140
144
|
level,
|
|
141
145
|
message,
|
|
@@ -147,5 +151,20 @@ export const ev = {
|
|
|
147
151
|
custom(ctx, name, value) {
|
|
148
152
|
return { type: "CUSTOM", ...envelope(ctx), name, value };
|
|
149
153
|
},
|
|
154
|
+
/**
|
|
155
|
+
* Pi SDK auto/manual compaction — the runtime translates Pi's internal
|
|
156
|
+
* `compaction_start` / `compaction_end` events onto the AG-UI CUSTOM channel
|
|
157
|
+
* so clients can render a "context being compacted" indicator instead of
|
|
158
|
+
* silently seeing the assistant's history collapse. Wire form:
|
|
159
|
+
* { type:"CUSTOM", name:"compaction", value: { op:"start", reason, ... } }
|
|
160
|
+
*/
|
|
161
|
+
compactionStart(ctx, reason) {
|
|
162
|
+
const value = { op: "start", reason };
|
|
163
|
+
return { type: "CUSTOM", ...envelope(ctx), name: CUSTOM_EVENT.COMPACTION, value };
|
|
164
|
+
},
|
|
165
|
+
compactionEnd(ctx, v) {
|
|
166
|
+
const value = { op: "end", ...v };
|
|
167
|
+
return { type: "CUSTOM", ...envelope(ctx), name: CUSTOM_EVENT.COMPACTION, value };
|
|
168
|
+
},
|
|
150
169
|
};
|
|
151
170
|
//# sourceMappingURL=events.js.map
|
package/dist/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
* - `context` handler receives `{ messages }` (a safe-to-mutate copy) and may
|
|
20
20
|
* return `{ messages }` to replace what the model sees this turn.
|
|
21
21
|
* - Because the host appends a NEW block each turn, we first STRIP any block we
|
|
22
|
-
* injected on a previous turn (identified by the
|
|
23
|
-
*
|
|
22
|
+
* injected on a previous turn (identified by the status-block opener) so the
|
|
23
|
+
* model only ever sees the latest snapshot, not a pile of old ones.
|
|
24
24
|
*
|
|
25
25
|
* Only the real factory loads this — the mock has no Pi event loop, so the
|
|
26
26
|
* behavioural injection is verified in real mode. The pure block renderer
|
|
@@ -36,13 +36,14 @@ export interface AgentStatusLine {
|
|
|
36
36
|
unread: number;
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
* Build the team-status block as
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
39
|
+
* Build the team-status block as an internal coordination hint. The wording
|
|
40
|
+
* tells the model not to surface this block to the user, while still showing
|
|
41
|
+
* active work or pending agent replies that may affect coordination. Returns ""
|
|
42
|
+
* when there is nothing to report (caller skips injection).
|
|
43
43
|
*
|
|
44
44
|
* `lines` should already be filtered by the caller (trace agent excluded,
|
|
45
|
-
* stopped agents excluded
|
|
45
|
+
* stopped agents excluded, idle agents with no pending messages excluded).
|
|
46
|
+
* Order is preserved.
|
|
46
47
|
*/
|
|
47
48
|
export declare function renderAgentStatusBlock(lines: readonly AgentStatusLine[]): string;
|
|
48
49
|
/** Minimal structural surface of an agent the collector reads. */
|
|
@@ -53,10 +54,11 @@ export interface StatusAgentLike {
|
|
|
53
54
|
}
|
|
54
55
|
/**
|
|
55
56
|
* Collect the status lines for a team snapshot from the live agents (#97).
|
|
56
|
-
* Includes every agent — INCLUDING the principal, so it sees
|
|
57
|
-
* except the trace agent (an internal recorder)
|
|
58
|
-
* (destroyed; irrelevant to coordination)
|
|
59
|
-
* messages
|
|
57
|
+
* Includes every active or pending agent — INCLUDING the principal, so it sees
|
|
58
|
+
* its own backlog — except the trace agent (an internal recorder), any stopped
|
|
59
|
+
* agent (destroyed; irrelevant to coordination), and idle agents with no unread
|
|
60
|
+
* messages. `unreadOf` returns the number of messages still queued unread in
|
|
61
|
+
* that agent's inbox. Order follows iteration.
|
|
60
62
|
*/
|
|
61
63
|
export declare function collectAgentStatusLines(agents: Iterable<StatusAgentLike>, unreadOf: (name: string) => number): AgentStatusLine[];
|
|
62
64
|
/** Minimal structural surface of Pi's ExtensionAPI we depend on. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-status.d.ts","sourceRoot":"","sources":["../../src/extensions/agent-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"agent-status.d.ts","sourceRoot":"","sources":["../../src/extensions/agent-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;CAChB;AAOD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAqBhF;AAED,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,EACjC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GACjC,eAAe,EAAE,CAUnB;AAED,oEAAoE;AACpE,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,UAAU,cAAc;IACtB,EAAE,CACA,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,CAAC,CAAC,EAAE;QACX,QAAQ,EAAE,gBAAgB,EAAE,CAAC;KAC9B,KAAK;QAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAA;KAAE,GAAG,IAAI,GAC5C,IAAI,CAAC;CACT;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,YAAY,EAAE,MAAM,MAAM,CAAC;CAC5B;AAeD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,CAAC,EAAE,EAAE,cAAc,KAAK,IAAI,CAoBtF"}
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
* - `context` handler receives `{ messages }` (a safe-to-mutate copy) and may
|
|
20
20
|
* return `{ messages }` to replace what the model sees this turn.
|
|
21
21
|
* - Because the host appends a NEW block each turn, we first STRIP any block we
|
|
22
|
-
* injected on a previous turn (identified by the
|
|
23
|
-
*
|
|
22
|
+
* injected on a previous turn (identified by the status-block opener) so the
|
|
23
|
+
* model only ever sees the latest snapshot, not a pile of old ones.
|
|
24
24
|
*
|
|
25
25
|
* Only the real factory loads this — the mock has no Pi event loop, so the
|
|
26
26
|
* behavioural injection is verified in real mode. The pure block renderer
|
|
@@ -28,38 +28,48 @@
|
|
|
28
28
|
* a fake `pi`.
|
|
29
29
|
*/
|
|
30
30
|
/** Opening tag — also the marker used to recognise a block we injected before. */
|
|
31
|
-
const TAG_OPEN = "<
|
|
32
|
-
const TAG_CLOSE = "</
|
|
31
|
+
const TAG_OPEN = "<internal_agent_status>";
|
|
32
|
+
const TAG_CLOSE = "</internal_agent_status>";
|
|
33
|
+
const LEGACY_TAG_OPEN = "<agent_status>";
|
|
33
34
|
/**
|
|
34
|
-
* Build the team-status block as
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
35
|
+
* Build the team-status block as an internal coordination hint. The wording
|
|
36
|
+
* tells the model not to surface this block to the user, while still showing
|
|
37
|
+
* active work or pending agent replies that may affect coordination. Returns ""
|
|
38
|
+
* when there is nothing to report (caller skips injection).
|
|
38
39
|
*
|
|
39
40
|
* `lines` should already be filtered by the caller (trace agent excluded,
|
|
40
|
-
* stopped agents excluded
|
|
41
|
+
* stopped agents excluded, idle agents with no pending messages excluded).
|
|
42
|
+
* Order is preserved.
|
|
41
43
|
*/
|
|
42
44
|
export function renderAgentStatusBlock(lines) {
|
|
43
|
-
|
|
45
|
+
const visibleLines = lines.filter((l) => l.status !== "idle" || l.unread > 0);
|
|
46
|
+
if (visibleLines.length === 0)
|
|
44
47
|
return "";
|
|
45
|
-
const body =
|
|
48
|
+
const body = visibleLines
|
|
46
49
|
.map((l) => {
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
+
const parts = [];
|
|
51
|
+
if (l.status !== "idle")
|
|
52
|
+
parts.push(`status=${l.status}`);
|
|
53
|
+
if (l.unread > 0) {
|
|
54
|
+
parts.push(`${l.unread} pending message${l.unread === 1 ? "" : "s"}`);
|
|
55
|
+
}
|
|
56
|
+
return `- ${l.name}: ${parts.join(", ")}`;
|
|
50
57
|
})
|
|
51
58
|
.join("\n");
|
|
52
59
|
return (`${TAG_OPEN}\n` +
|
|
53
|
-
`
|
|
60
|
+
`Internal coordination state. Use this only to decide whether to wait for pending agent work. ` +
|
|
61
|
+
`Never mention, quote, or summarize it in user-facing text.\n` +
|
|
62
|
+
`Pending or active agents:\n` +
|
|
54
63
|
`${body}\n` +
|
|
55
64
|
`${TAG_CLOSE}`);
|
|
56
65
|
}
|
|
57
66
|
/**
|
|
58
67
|
* Collect the status lines for a team snapshot from the live agents (#97).
|
|
59
|
-
* Includes every agent — INCLUDING the principal, so it sees
|
|
60
|
-
* except the trace agent (an internal recorder)
|
|
61
|
-
* (destroyed; irrelevant to coordination)
|
|
62
|
-
* messages
|
|
68
|
+
* Includes every active or pending agent — INCLUDING the principal, so it sees
|
|
69
|
+
* its own backlog — except the trace agent (an internal recorder), any stopped
|
|
70
|
+
* agent (destroyed; irrelevant to coordination), and idle agents with no unread
|
|
71
|
+
* messages. `unreadOf` returns the number of messages still queued unread in
|
|
72
|
+
* that agent's inbox. Order follows iteration.
|
|
63
73
|
*/
|
|
64
74
|
export function collectAgentStatusLines(agents, unreadOf) {
|
|
65
75
|
const lines = [];
|
|
@@ -68,14 +78,20 @@ export function collectAgentStatusLines(agents, unreadOf) {
|
|
|
68
78
|
continue;
|
|
69
79
|
if (a.status === "stopped")
|
|
70
80
|
continue;
|
|
71
|
-
|
|
81
|
+
const unread = unreadOf(a.name);
|
|
82
|
+
if (a.status === "idle" && unread === 0)
|
|
83
|
+
continue;
|
|
84
|
+
lines.push({ name: a.name, status: a.status, unread });
|
|
72
85
|
}
|
|
73
86
|
return lines;
|
|
74
87
|
}
|
|
75
88
|
/** True for a `user` message whose text is a status block we injected earlier. */
|
|
76
89
|
function isStatusMessage(m) {
|
|
77
90
|
return (m.role === "user" &&
|
|
78
|
-
m.content.some((c) =>
|
|
91
|
+
m.content.some((c) => {
|
|
92
|
+
const text = c.text ?? "";
|
|
93
|
+
return (c.type === "text" && (text.startsWith(TAG_OPEN) || text.startsWith(LEGACY_TAG_OPEN)));
|
|
94
|
+
}));
|
|
79
95
|
}
|
|
80
96
|
/**
|
|
81
97
|
* Build the extension factory for one agent. The returned function is what Pi
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-status.js","sourceRoot":"","sources":["../../src/extensions/agent-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAWH,kFAAkF;AAClF,MAAM,QAAQ,GAAG,
|
|
1
|
+
{"version":3,"file":"agent-status.js","sourceRoot":"","sources":["../../src/extensions/agent-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
* - 意图二 (expert results flow back): if an expert run produced work but never
|
|
9
9
|
* send_message'd the principal, nudge; if it still won't, the host writes a
|
|
10
10
|
* fallback note into the principal's mailbox so the PI never dead-waits.
|
|
11
|
-
* - 意图三 (PI keeps to delegation): if the principal
|
|
12
|
-
* directly
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* - 意图三 (PI keeps to delegation): if the principal did substantive work
|
|
12
|
+
* directly (a write/run/external tool, not a read or coordination call)
|
|
13
|
+
* without delegating, nudge it at run end via a followUp (same channel as
|
|
14
|
+
* 意图一/二) — the tool result itself is left untouched.
|
|
15
15
|
*
|
|
16
16
|
* 意图一 and 意图二 are ORTHOGONAL checks (B): an expert can owe both a trace
|
|
17
17
|
* and a reply. They limit independently (A — separate counters), but when BOTH
|
|
@@ -29,8 +29,9 @@
|
|
|
29
29
|
* {deliverAs:"followUp"})` inside `agent_end`: it releases the current stop
|
|
30
30
|
* and starts a NEW agent loop (a fresh agent_start) — which is why the
|
|
31
31
|
* anti-loop counters must NOT reset on agent_start.
|
|
32
|
-
* -
|
|
33
|
-
*
|
|
32
|
+
* - Host-injected text (every followUp this file sends) is wrapped in a paired
|
|
33
|
+
* `[SYSTEM-MESSAGE:kind] … [/SYSTEM-MESSAGE]` marker via the `SYS()` helper, so
|
|
34
|
+
* a consumer can strip it with one regex and the wrapping has a single source.
|
|
34
35
|
*/
|
|
35
36
|
import type { AgentRole } from "../types.js";
|
|
36
37
|
/** Minimal structural surface of Pi's ExtensionAPI we depend on. */
|
|
@@ -44,19 +45,6 @@ interface PiExtensionApi {
|
|
|
44
45
|
toolName: string;
|
|
45
46
|
isError: boolean;
|
|
46
47
|
}) => void): void;
|
|
47
|
-
on(event: "tool_result", handler: (e: {
|
|
48
|
-
toolName: string;
|
|
49
|
-
isError: boolean;
|
|
50
|
-
content: Array<{
|
|
51
|
-
type: string;
|
|
52
|
-
text?: string;
|
|
53
|
-
}>;
|
|
54
|
-
}) => {
|
|
55
|
-
content: Array<{
|
|
56
|
-
type: "text";
|
|
57
|
-
text: string;
|
|
58
|
-
}>;
|
|
59
|
-
} | void): void;
|
|
60
48
|
on(event: "agent_end", handler: (e: AgentEndLike) => void): void;
|
|
61
49
|
sendUserMessage(content: string, options?: {
|
|
62
50
|
deliverAs?: "steer" | "followUp";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-reminder.d.ts","sourceRoot":"","sources":["../../src/extensions/trace-reminder.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"trace-reminder.d.ts","sourceRoot":"","sources":["../../src/extensions/trace-reminder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,oEAAoE;AACpE,UAAU,cAAc;IACtB,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACpD,EAAE,CAAC,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACpG,EAAE,CAAC,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACpG,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI,CAAC;IACjE,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC;CACxF;AAED;;;;;;;GAOG;AACH,UAAU,YAAY;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1D;AAeD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AA2DD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,CAAC,EAAE,EAAE,cAAc,KAAK,IAAI,CAuH1F"}
|
|
@@ -12,10 +12,24 @@ function endedInError(e) {
|
|
|
12
12
|
return false;
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
15
|
+
* Tools a principal may call directly WITHOUT it counting as "doing the work
|
|
16
|
+
* itself" (意图三 exemption): information-gathering / read-only tools plus the
|
|
17
|
+
* management/coordination tools. Anything NOT in this set — a write/edit/run, or
|
|
18
|
+
* any external MCP tool (domain work a principal should delegate) — counts as
|
|
19
|
+
* substantive work and arms the delegate reminder.
|
|
17
20
|
*/
|
|
18
|
-
const
|
|
21
|
+
const PI_ALLOWED_TOOLS = new Set([
|
|
22
|
+
// information-gathering / read-only. These MUST be Pi's real emitted tool
|
|
23
|
+
// names, which are lowercase (see BUILTIN_TOOL_CONFIG in tools/system-tools.ts:
|
|
24
|
+
// principal = ["read","write","edit","bash","grep","find","glob","ls"]). Names
|
|
25
|
+
// are matched case-insensitively below, but keep them lowercase to match the
|
|
26
|
+
// source of truth. (The principal has no WebFetch/WebSearch tool — omitted.)
|
|
27
|
+
"read",
|
|
28
|
+
"grep",
|
|
29
|
+
"glob",
|
|
30
|
+
"ls",
|
|
31
|
+
"find",
|
|
32
|
+
// management / coordination
|
|
19
33
|
"create_agent",
|
|
20
34
|
"destroy_agent",
|
|
21
35
|
"record_trace",
|
|
@@ -23,13 +37,22 @@ const MGMT_TOOLS = new Set([
|
|
|
23
37
|
"ask_user",
|
|
24
38
|
"get_trace_graph",
|
|
25
39
|
]);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Paired marker wrapping EVERY host-injected message, so a consumer can strip it
|
|
42
|
+
* with a single regex (`\[SYSTEM-MESSAGE.*?\][\s\S]*?\[/SYSTEM-MESSAGE\]`) and the
|
|
43
|
+
* wrapping style has one source of truth. `kind` sub-tags the message for
|
|
44
|
+
* filtering/metrics; the namespace is intentionally generic (not "REMINDER") so
|
|
45
|
+
* future host injections of any sort reuse the same envelope.
|
|
46
|
+
*/
|
|
47
|
+
const SYS = (kind, body) => `[SYSTEM-MESSAGE:${kind}] ${body} [/SYSTEM-MESSAGE]`;
|
|
48
|
+
const TRACE_REMINDER = SYS("trace", "You did substantive work this run but have not called record_trace. " +
|
|
49
|
+
"If this step is worth recording, call record_trace before finishing.");
|
|
50
|
+
const EXPERT_REPLY_REMINDER = SYS("reply", 'You have not returned your result to the Principal via send_message(to="principal", ...). ' +
|
|
51
|
+
"Please report back, otherwise the Principal will not receive your output.");
|
|
52
|
+
const MERGED_REMINDER = SYS("merged", "Before finishing this run: " +
|
|
53
|
+
'(1) return your result via send_message(to="principal", ...); ' +
|
|
54
|
+
"(2) record the key decision via record_trace.");
|
|
55
|
+
const DELEGATE_REMINDER = SYS("delegate", "As the Principal, substantive work should be delegated to an expert rather than done directly.");
|
|
33
56
|
/**
|
|
34
57
|
* Build the extension factory for one agent. The returned function is what Pi
|
|
35
58
|
* calls with the per-session `ExtensionAPI`.
|
|
@@ -45,21 +68,25 @@ export function makeTraceReminderExt(deps) {
|
|
|
45
68
|
let traced = false;
|
|
46
69
|
let replied = false;
|
|
47
70
|
let delegated = false;
|
|
48
|
-
|
|
71
|
+
// 意图三: did the principal do substantive (non-read, non-coordination) work
|
|
72
|
+
// directly this run? Set in tool_execution_end, read in agent_end.
|
|
73
|
+
let didSubstantiveWork = false;
|
|
49
74
|
// ⚠️ Cross-run-CHAIN counters — MUST NOT reset on agent_start/turn_start nor
|
|
50
75
|
// at the top of agent_end. sendUserMessage(followUp) starts a NEW agent loop
|
|
51
76
|
// (verified: a followUp fires a fresh agent_start) whose end re-enters
|
|
52
77
|
// agent_end; if these were cleared we would re-remind forever. They are reset
|
|
53
78
|
// ONLY at the terminal exits below (dimension satisfied, or already reminded
|
|
54
|
-
// once → fallback/let-go). Decoupled per dimension (A) so a trace reminder
|
|
55
|
-
// and a
|
|
79
|
+
// once → fallback/let-go). Decoupled per dimension (A) so a trace reminder,
|
|
80
|
+
// a reply reminder, and a delegate reminder limit independently. delegate
|
|
81
|
+
// moved here (from a run-scoped flag) because it now fires via followUp too.
|
|
56
82
|
let traceRemindCount = 0;
|
|
57
83
|
let replyRemindCount = 0;
|
|
84
|
+
let delegateRemindCount = 0;
|
|
58
85
|
pi.on("agent_start", () => {
|
|
59
86
|
traced = false;
|
|
60
87
|
replied = false;
|
|
61
88
|
delegated = false;
|
|
62
|
-
|
|
89
|
+
didSubstantiveWork = false;
|
|
63
90
|
});
|
|
64
91
|
// tool_execution_start: nothing required for accounting (we key off
|
|
65
92
|
// tool_execution_end which carries success/failure). Kept as a no-op anchor
|
|
@@ -74,25 +101,12 @@ export function makeTraceReminderExt(deps) {
|
|
|
74
101
|
replied = true;
|
|
75
102
|
if (t === "create_agent")
|
|
76
103
|
delegated = true;
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
//
|
|
80
|
-
|
|
81
|
-
if (
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
if (deps.role === "principal" &&
|
|
85
|
-
!delegated &&
|
|
86
|
-
!MGMT_TOOLS.has(e.toolName) &&
|
|
87
|
-
delegateRemindCount < 1) {
|
|
88
|
-
delegateRemindCount++;
|
|
89
|
-
suffix += `\n${DELEGATE_REMINDER}`;
|
|
90
|
-
}
|
|
91
|
-
if (!suffix)
|
|
92
|
-
return; // no rewrite — leave the result untouched
|
|
93
|
-
// Rewrite by appending to the existing text content; the tool still ran.
|
|
94
|
-
const text = e.content.map((c) => (c.type === "text" ? c.text ?? "" : "")).join("");
|
|
95
|
-
return { content: [{ type: "text", text: `${text}${suffix}` }] };
|
|
104
|
+
// 意图三: any successful call NOT in the allow-set (a write/run, or an
|
|
105
|
+
// external MCP/domain tool) is the principal doing the work itself. Match
|
|
106
|
+
// case-insensitively — Pi emits builtins lowercase, but normalizing here
|
|
107
|
+
// keeps the exemption working if a tool ever surfaces in another case.
|
|
108
|
+
if (deps.role === "principal" && !PI_ALLOWED_TOOLS.has(t.toLowerCase()))
|
|
109
|
+
didSubstantiveWork = true;
|
|
96
110
|
});
|
|
97
111
|
pi.on("agent_end", (e) => {
|
|
98
112
|
if (deps.role === "trace")
|
|
@@ -135,6 +149,16 @@ export function makeTraceReminderExt(deps) {
|
|
|
135
149
|
pi.sendUserMessage(TRACE_REMINDER, { deliverAs: "followUp" });
|
|
136
150
|
return;
|
|
137
151
|
}
|
|
152
|
+
// 意图三 (PI delegation): the principal did substantive work itself this run
|
|
153
|
+
// without delegating. Nudge once via followUp (NOT merged with trace —
|
|
154
|
+
// separate limiter, worst case one extra round-trip). Cross-run-chain
|
|
155
|
+
// limited like the others. Only reachable for a principal once its trace
|
|
156
|
+
// dimension is settled (a principal has no reply dimension).
|
|
157
|
+
if (deps.role === "principal" && didSubstantiveWork && !delegated && delegateRemindCount < 1) {
|
|
158
|
+
delegateRemindCount++;
|
|
159
|
+
pi.sendUserMessage(DELEGATE_REMINDER, { deliverAs: "followUp" });
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
138
162
|
// Nothing left to nudge (each lapsed dimension was already reminded once).
|
|
139
163
|
// Terminal handling per dimension:
|
|
140
164
|
// - reply has a host fallback so the principal never dead-waits;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-reminder.js","sourceRoot":"","sources":["../../src/extensions/trace-reminder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trace-reminder.js","sourceRoot":"","sources":["../../src/extensions/trace-reminder.ts"],"names":[],"mappings":"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"}
|
package/dist/mas-agent.d.ts
CHANGED
|
@@ -104,6 +104,20 @@ export declare class MasAgent {
|
|
|
104
104
|
* The settled promise is tracked in `currentPrompt` so `abort()` can await it.
|
|
105
105
|
*/
|
|
106
106
|
prompt(text: string): Promise<void>;
|
|
107
|
+
/** True while a run is streaming — a plain prompt() would be rejected. */
|
|
108
|
+
get isStreaming(): boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Queue a user message onto the *in-flight* run instead of starting a new one
|
|
111
|
+
* (#: concurrent send). The SDK's agent loop drains follow-ups before it emits
|
|
112
|
+
* agent_end, so the message is handled after the current turn without a fresh
|
|
113
|
+
* RUN_STARTED/runId — the events keep flowing under the current run. Unlike
|
|
114
|
+
* `prompt()`, this does NOT open a new run lifecycle. Error-isolated: a queue
|
|
115
|
+
* failure is surfaced as a run error, never thrown to the caller.
|
|
116
|
+
*
|
|
117
|
+
* Falls back to a normal `prompt()` if the run has already drained (not
|
|
118
|
+
* streaming anymore) by the time this lands, so a race can't drop the message.
|
|
119
|
+
*/
|
|
120
|
+
followUp(text: string): Promise<void>;
|
|
107
121
|
private runPrompt;
|
|
108
122
|
/**
|
|
109
123
|
* Abort the active run and wait for it to fully settle (#101).
|
|
@@ -118,6 +132,8 @@ export declare class MasAgent {
|
|
|
118
132
|
*/
|
|
119
133
|
abort(): Promise<void>;
|
|
120
134
|
stop(): void;
|
|
135
|
+
/** Emit a compaction-related system_message with the agent tag pre-filled. */
|
|
136
|
+
private emitCompactionSystemMessage;
|
|
121
137
|
private recordError;
|
|
122
138
|
/** Translate one Pi event into zero or more AG-UI events (§6). */
|
|
123
139
|
private onPiEvent;
|
package/dist/mas-agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mas-agent.d.ts","sourceRoot":"","sources":["../src/mas-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAA2C,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EAGb,OAAO,EACR,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEnE,qEAAqE;AACrE,wBAAgB,eAAe,IAAI,UAAU,CAE5C;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAY5E;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,aAAa,CAAC;IACvB,GAAG,EAAE,QAAQ,CAAC;IACd,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7D;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;CAC7E;AAED,qBAAa,QAAQ;IAmCP,OAAO,CAAC,QAAQ,CAAC,IAAI;IAlCjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAW;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAEzC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,oBAAoB,CAAqB;IACjD,OAAO,CAAC,SAAS,CAA0B;IAC3C;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAAiC;IACxD;;;;;OAKG;IACH,OAAO,CAAC,cAAc,CAA6B;IACnD;;;;;OAKG;IACH,OAAO,CAAC,aAAa,CAA4B;gBAEpB,IAAI,EAAE,YAAY;IAS/C,IAAI,MAAM,IAAI,WAAW,CAExB;IAED;;;;OAIG;IACH,IAAI,aAAa,IAAI,cAAc,GAAG,SAAS,CAE9C;IAED;;;;OAIG;IACH,KAAK,IAAI,UAAU;IAInB;;;OAGG;IACH,SAAS,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI;IAI1C,wCAAwC;IACxC,KAAK,IAAI,UAAU;IAQnB,OAAO,CAAC,SAAS;IAajB;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"mas-agent.d.ts","sourceRoot":"","sources":["../src/mas-agent.ts"],"names":[],"mappings":"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"}
|