pilotswarm-sdk 0.1.29 → 0.1.31
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-loader.d.ts +12 -0
- package/dist/agent-loader.d.ts.map +1 -1
- package/dist/agent-loader.js +20 -0
- package/dist/agent-loader.js.map +1 -1
- package/dist/child-notifications.d.ts +76 -0
- package/dist/child-notifications.d.ts.map +1 -0
- package/dist/child-notifications.js +181 -0
- package/dist/child-notifications.js.map +1 -0
- package/dist/client.d.ts +4 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +31 -1
- package/dist/client.js.map +1 -1
- package/dist/cms-migrations.d.ts.map +1 -1
- package/dist/cms-migrations.js +1333 -0
- package/dist/cms-migrations.js.map +1 -1
- package/dist/cms.d.ts +210 -3
- package/dist/cms.d.ts.map +1 -1
- package/dist/cms.js +232 -14
- package/dist/cms.js.map +1 -1
- package/dist/cron-at.d.ts +100 -0
- package/dist/cron-at.d.ts.map +1 -0
- package/dist/cron-at.js +414 -0
- package/dist/cron-at.js.map +1 -0
- package/dist/facts-tools.d.ts +6 -0
- package/dist/facts-tools.d.ts.map +1 -1
- package/dist/facts-tools.js +31 -3
- package/dist/facts-tools.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/managed-session.d.ts.map +1 -1
- package/dist/managed-session.js +425 -28
- package/dist/managed-session.js.map +1 -1
- package/dist/management-client.d.ts +75 -4
- package/dist/management-client.d.ts.map +1 -1
- package/dist/management-client.js +336 -26
- package/dist/management-client.js.map +1 -1
- package/dist/orchestration/agents.d.ts.map +1 -1
- package/dist/orchestration/agents.js +16 -4
- package/dist/orchestration/agents.js.map +1 -1
- package/dist/orchestration/lifecycle.d.ts +5 -1
- package/dist/orchestration/lifecycle.d.ts.map +1 -1
- package/dist/orchestration/lifecycle.js +62 -7
- package/dist/orchestration/lifecycle.js.map +1 -1
- package/dist/orchestration/queue.d.ts.map +1 -1
- package/dist/orchestration/queue.js +64 -2
- package/dist/orchestration/queue.js.map +1 -1
- package/dist/orchestration/runtime.js.map +1 -1
- package/dist/orchestration/state.d.ts +3 -1
- package/dist/orchestration/state.d.ts.map +1 -1
- package/dist/orchestration/state.js +1 -0
- package/dist/orchestration/state.js.map +1 -1
- package/dist/orchestration/turn.d.ts.map +1 -1
- package/dist/orchestration/turn.js +152 -15
- package/dist/orchestration/turn.js.map +1 -1
- package/dist/orchestration.js +1 -1
- package/dist/prompt-layering.d.ts +3 -0
- package/dist/prompt-layering.d.ts.map +1 -1
- package/dist/prompt-layering.js +17 -1
- package/dist/prompt-layering.js.map +1 -1
- package/dist/prompt-layers.d.ts +45 -0
- package/dist/prompt-layers.d.ts.map +1 -0
- package/dist/prompt-layers.js +44 -0
- package/dist/prompt-layers.js.map +1 -0
- package/dist/session-manager.d.ts +5 -0
- package/dist/session-manager.d.ts.map +1 -1
- package/dist/session-manager.js +57 -5
- package/dist/session-manager.js.map +1 -1
- package/dist/session-messages.d.ts +32 -0
- package/dist/session-messages.d.ts.map +1 -0
- package/dist/session-messages.js +121 -0
- package/dist/session-messages.js.map +1 -0
- package/dist/session-proxy.d.ts +3 -0
- package/dist/session-proxy.d.ts.map +1 -1
- package/dist/session-proxy.js +401 -7
- package/dist/session-proxy.js.map +1 -1
- package/dist/system-agents.d.ts +45 -0
- package/dist/system-agents.d.ts.map +1 -0
- package/dist/system-agents.js +212 -0
- package/dist/system-agents.js.map +1 -0
- package/dist/types.d.ts +163 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/worker.d.ts +17 -10
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +63 -127
- package/dist/worker.js.map +1 -1
- package/package.json +5 -4
- package/plugins/mgmt/agents/agent-tuner.agent.md +6 -7
- package/plugins/mgmt/agents/facts-manager.agent.md +10 -7
- package/plugins/mgmt/agents/pilotswarm.agent.md +6 -10
- package/plugins/mgmt/agents/resourcemgr.agent.md +8 -8
- package/plugins/mgmt/agents/sweeper.agent.md +5 -3
- package/plugins/mgmt/skills/orchestration-session-lifecycle/SKILL.md +8 -8
- package/plugins/mgmt/skills/resourcemgr/SKILL.md +3 -3
- package/plugins/mgmt/skills/sweeper/SKILL.md +2 -2
- package/plugins/system/agents/default.agent.md +27 -7
- package/plugins/system/skills/durable-timers/SKILL.md +16 -3
- package/plugins/system/skills/sub-agents/SKILL.md +23 -3
package/dist/agent-loader.d.ts
CHANGED
|
@@ -50,6 +50,18 @@ export interface AgentConfig {
|
|
|
50
50
|
namespace?: string;
|
|
51
51
|
/** Internal: identifies which prompt layering path this agent should use. */
|
|
52
52
|
promptLayerKind?: "app-agent" | "app-system-agent" | "pilotswarm-system-agent";
|
|
53
|
+
/**
|
|
54
|
+
* Frontmatter schema version. Defaults to 1 when the file omits it. Higher integers
|
|
55
|
+
* indicate forward-incompatible frontmatter shapes the loader may reject in the future.
|
|
56
|
+
*/
|
|
57
|
+
schemaVersion?: number;
|
|
58
|
+
/**
|
|
59
|
+
* Author-supplied version label for this agent definition. PilotSwarm-authored system
|
|
60
|
+
* agents use SemVer; app authors may use any meaningful non-empty string.
|
|
61
|
+
*/
|
|
62
|
+
version?: string;
|
|
63
|
+
/** Absolute path the agent was loaded from, when known. Used for diagnostics. */
|
|
64
|
+
sourcePath?: string;
|
|
53
65
|
}
|
|
54
66
|
/**
|
|
55
67
|
* Load all .agent.md files from a directory and convert to CustomAgentConfig[].
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-loader.d.ts","sourceRoot":"","sources":["../src/agent-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAQH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYpD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAclF;AAID,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qGAAqG;IACrG,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,qHAAqH;IACrH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uGAAuG;IACvG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,WAAW,GAAG,kBAAkB,GAAG,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-loader.d.ts","sourceRoot":"","sources":["../src/agent-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAQH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYpD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAclF;AAID,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qGAAqG;IACrG,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,qHAAqH;IACrH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uGAAuG;IACvG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,WAAW,GAAG,kBAAkB,GAAG,yBAAyB,CAAC;IAC/E;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAoHD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CA6D/D"}
|
package/dist/agent-loader.js
CHANGED
|
@@ -137,6 +137,13 @@ function parseAgentFrontmatter(content) {
|
|
|
137
137
|
meta.title = value;
|
|
138
138
|
else if (key === "parent")
|
|
139
139
|
meta.parent = value;
|
|
140
|
+
else if (key === "schemaVersion") {
|
|
141
|
+
const n = Number(value);
|
|
142
|
+
if (Number.isFinite(n) && n > 0)
|
|
143
|
+
meta.schemaVersion = Math.floor(n);
|
|
144
|
+
}
|
|
145
|
+
else if (key === "version")
|
|
146
|
+
meta.version = value;
|
|
140
147
|
else if (key === "tools" && value) {
|
|
141
148
|
// Inline array: tools: [view, grep]
|
|
142
149
|
meta.tools = value.replace(/[\[\]]/g, "").split(",").map(s => s.trim()).filter(Boolean);
|
|
@@ -190,6 +197,10 @@ export function loadAgentFiles(agentsDir) {
|
|
|
190
197
|
console.warn(`[agent-loader] Skipping ${entry.name}: empty prompt body`);
|
|
191
198
|
continue;
|
|
192
199
|
}
|
|
200
|
+
if (meta.schemaVersion !== undefined && meta.schemaVersion !== 1) {
|
|
201
|
+
console.warn(`[agent-loader] Skipping ${entry.name}: unsupported schemaVersion ${meta.schemaVersion}; expected schemaVersion: 1`);
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
193
204
|
agents.push({
|
|
194
205
|
name: meta.name,
|
|
195
206
|
description: meta.description,
|
|
@@ -201,7 +212,16 @@ export function loadAgentFiles(agentsDir) {
|
|
|
201
212
|
parent: meta.parent,
|
|
202
213
|
splash: meta.splash,
|
|
203
214
|
initialPrompt: meta.initialPrompt,
|
|
215
|
+
schemaVersion: meta.schemaVersion,
|
|
216
|
+
version: meta.version,
|
|
217
|
+
sourcePath: filePath,
|
|
204
218
|
});
|
|
219
|
+
if (meta.schemaVersion === undefined) {
|
|
220
|
+
console.warn(`[agent-loader] ${entry.name}: missing frontmatter 'schemaVersion'. Defaulting to 1; add 'schemaVersion: 1' to silence this warning.`);
|
|
221
|
+
}
|
|
222
|
+
if (!meta.version) {
|
|
223
|
+
console.warn(`[agent-loader] ${entry.name}: missing frontmatter 'version'. Add 'version: x.y.z' (or any non-empty label) to track agent prompt changes.`);
|
|
224
|
+
}
|
|
205
225
|
}
|
|
206
226
|
catch (err) {
|
|
207
227
|
console.warn(`[agent-loader] Failed to parse ${entry.name}: ${err.message}`);
|
package/dist/agent-loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-loader.js","sourceRoot":"","sources":["../src/agent-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,mEAAmE;AAEnE;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;SACnC,MAAM,CAAC,0BAA0B,CAAC;SAClC,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,KAAK,CAAC,CAAC;IACnB,OAAO;QACH,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;KACrB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,eAAuB,EAAE,IAAY;IACtE,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;SACnC,MAAM,CAAC,gCAAgC,CAAC;SACxC,MAAM,CAAC,eAAe,CAAC;SACvB,MAAM,CAAC,GAAG,CAAC;SACX,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,KAAK,CAAC,CAAC;IACnB,OAAO;QACH,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;KACrB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-loader.js","sourceRoot":"","sources":["../src/agent-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Child notification policy helpers.
|
|
3
|
+
*
|
|
4
|
+
* Implements the decision logic described in the
|
|
5
|
+
* "Child Contract Notification Policy" proposal:
|
|
6
|
+
*
|
|
7
|
+
* - `wakeOn: "any"` - wake parent for any child update
|
|
8
|
+
* - `wakeOn: "material_change"` - wake parent for material changes only
|
|
9
|
+
* (default; suppresses clear heartbeats)
|
|
10
|
+
* - `wakeOn: "completion"` - wake parent only on terminal/blocked/error
|
|
11
|
+
*
|
|
12
|
+
* `wakeOn` only controls AUTONOMOUS parent wakeups. Explicit parent tools such
|
|
13
|
+
* as `check_agents` and `wait_for_agents` always reveal child state regardless
|
|
14
|
+
* of policy.
|
|
15
|
+
*
|
|
16
|
+
* This module is intentionally pure and side-effect-free so it is easy to
|
|
17
|
+
* unit test and safe to call from orchestration helpers.
|
|
18
|
+
*
|
|
19
|
+
* @module
|
|
20
|
+
*/
|
|
21
|
+
import type { ChildSessionResult, ChildSessionContract } from "./types.js";
|
|
22
|
+
export type ChildWakePolicy = "any" | "material_change" | "completion";
|
|
23
|
+
export type ChildUpdateClassification = "heartbeat" | "material" | "completion" | "error" | "unknown";
|
|
24
|
+
/** Compact representation of a child update suitable for wake-decision logic. */
|
|
25
|
+
export interface ChildUpdateSnapshot {
|
|
26
|
+
/** Kind of orchestration update being delivered to the parent. */
|
|
27
|
+
kind: "completed" | "wait" | "progress" | "error" | "cancelled";
|
|
28
|
+
/** Last assistant content / summary text emitted by the child. */
|
|
29
|
+
summary?: string;
|
|
30
|
+
/** Structured child result if available (final or interim). */
|
|
31
|
+
result?: Partial<ChildSessionResult>;
|
|
32
|
+
/** Optional explicit material flag from the child (overrides classifier). */
|
|
33
|
+
material?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/** Default policy when a contract is missing or unset. */
|
|
36
|
+
export declare const DEFAULT_CHILD_WAKE_POLICY: ChildWakePolicy;
|
|
37
|
+
/** Normalize an arbitrary input value to a valid `ChildWakePolicy`. */
|
|
38
|
+
export declare function normalizeWakeOn(value: unknown): ChildWakePolicy;
|
|
39
|
+
/** Read `wakeOn` off a contract (or a contract-shaped record) safely. */
|
|
40
|
+
export declare function readWakeOn(contract: Partial<ChildSessionContract> | Record<string, unknown> | null | undefined): ChildWakePolicy;
|
|
41
|
+
/**
|
|
42
|
+
* Conservative no-op classifier.
|
|
43
|
+
*
|
|
44
|
+
* Returns true only for clear heartbeat/no-op text. Unknown / arbitrary
|
|
45
|
+
* natural-language summaries default to material under `material_change`.
|
|
46
|
+
*/
|
|
47
|
+
export declare function isHeartbeatText(text: string | undefined): boolean;
|
|
48
|
+
/** Classify a child update for wake-decision purposes. */
|
|
49
|
+
export declare function classifyChildUpdate(update: ChildUpdateSnapshot): ChildUpdateClassification;
|
|
50
|
+
export interface ParentWakeDecisionInput {
|
|
51
|
+
update: ChildUpdateSnapshot;
|
|
52
|
+
contract?: Partial<ChildSessionContract> | Record<string, unknown> | null;
|
|
53
|
+
}
|
|
54
|
+
export interface ParentWakeDecision {
|
|
55
|
+
wake: boolean;
|
|
56
|
+
policy: ChildWakePolicy;
|
|
57
|
+
classification: ChildUpdateClassification;
|
|
58
|
+
reason: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Decide whether the parent session should be woken for the given child update.
|
|
62
|
+
*
|
|
63
|
+
* The conservative rule: when the helper cannot confidently classify an
|
|
64
|
+
* update as a heartbeat under `material_change`, it wakes the parent
|
|
65
|
+
* rather than risk silently swallowing important work.
|
|
66
|
+
*/
|
|
67
|
+
export declare function shouldWakeParentForChildUpdate(input: ParentWakeDecisionInput): ParentWakeDecision;
|
|
68
|
+
/**
|
|
69
|
+
* Evaluate a batch of pending child updates against the parent's active wait.
|
|
70
|
+
*
|
|
71
|
+
* Used as the digest-defense guard described in the proposal: a heartbeat-only
|
|
72
|
+
* batch should not interrupt an active parent cron wait; a mixed batch with
|
|
73
|
+
* any material update wakes the parent.
|
|
74
|
+
*/
|
|
75
|
+
export declare function shouldWakeParentForChildDigest(updates: Array<ParentWakeDecisionInput>): ParentWakeDecision;
|
|
76
|
+
//# sourceMappingURL=child-notifications.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"child-notifications.d.ts","sourceRoot":"","sources":["../src/child-notifications.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAuB,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEhG,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,iBAAiB,GAAG,YAAY,CAAC;AAEvE,MAAM,MAAM,yBAAyB,GAC/B,WAAW,GACX,UAAU,GACV,YAAY,GACZ,OAAO,GACP,SAAS,CAAC;AAEhB,iFAAiF;AACjF,MAAM,WAAW,mBAAmB;IAChC,kEAAkE;IAClE,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,CAAC;IAChE,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,0DAA0D;AAC1D,eAAO,MAAM,yBAAyB,EAAE,eAAmC,CAAC;AAI5E,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAS/D;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,CAGhI;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAiCjE;AAWD,0DAA0D;AAC1D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,yBAAyB,CAgC1F;AAED,MAAM,WAAW,uBAAuB;IACpC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7E;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,cAAc,EAAE,yBAAyB,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,uBAAuB,GAAG,kBAAkB,CAoBjG;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,KAAK,CAAC,uBAAuB,CAAC,GAAG,kBAAkB,CAW1G"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Child notification policy helpers.
|
|
3
|
+
*
|
|
4
|
+
* Implements the decision logic described in the
|
|
5
|
+
* "Child Contract Notification Policy" proposal:
|
|
6
|
+
*
|
|
7
|
+
* - `wakeOn: "any"` - wake parent for any child update
|
|
8
|
+
* - `wakeOn: "material_change"` - wake parent for material changes only
|
|
9
|
+
* (default; suppresses clear heartbeats)
|
|
10
|
+
* - `wakeOn: "completion"` - wake parent only on terminal/blocked/error
|
|
11
|
+
*
|
|
12
|
+
* `wakeOn` only controls AUTONOMOUS parent wakeups. Explicit parent tools such
|
|
13
|
+
* as `check_agents` and `wait_for_agents` always reveal child state regardless
|
|
14
|
+
* of policy.
|
|
15
|
+
*
|
|
16
|
+
* This module is intentionally pure and side-effect-free so it is easy to
|
|
17
|
+
* unit test and safe to call from orchestration helpers.
|
|
18
|
+
*
|
|
19
|
+
* @module
|
|
20
|
+
*/
|
|
21
|
+
/** Default policy when a contract is missing or unset. */
|
|
22
|
+
export const DEFAULT_CHILD_WAKE_POLICY = "material_change";
|
|
23
|
+
const ALL_POLICIES = new Set(["any", "material_change", "completion"]);
|
|
24
|
+
/** Normalize an arbitrary input value to a valid `ChildWakePolicy`. */
|
|
25
|
+
export function normalizeWakeOn(value) {
|
|
26
|
+
if (typeof value !== "string")
|
|
27
|
+
return DEFAULT_CHILD_WAKE_POLICY;
|
|
28
|
+
const lower = value.trim().toLowerCase();
|
|
29
|
+
if (ALL_POLICIES.has(lower))
|
|
30
|
+
return lower;
|
|
31
|
+
// tolerant aliases
|
|
32
|
+
if (lower === "always" || lower === "all")
|
|
33
|
+
return "any";
|
|
34
|
+
if (lower === "material" || lower === "change")
|
|
35
|
+
return "material_change";
|
|
36
|
+
if (lower === "done" || lower === "finished")
|
|
37
|
+
return "completion";
|
|
38
|
+
return DEFAULT_CHILD_WAKE_POLICY;
|
|
39
|
+
}
|
|
40
|
+
/** Read `wakeOn` off a contract (or a contract-shaped record) safely. */
|
|
41
|
+
export function readWakeOn(contract) {
|
|
42
|
+
if (!contract || typeof contract !== "object")
|
|
43
|
+
return DEFAULT_CHILD_WAKE_POLICY;
|
|
44
|
+
return normalizeWakeOn(contract["wakeOn"]);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Conservative no-op classifier.
|
|
48
|
+
*
|
|
49
|
+
* Returns true only for clear heartbeat/no-op text. Unknown / arbitrary
|
|
50
|
+
* natural-language summaries default to material under `material_change`.
|
|
51
|
+
*/
|
|
52
|
+
export function isHeartbeatText(text) {
|
|
53
|
+
if (!text)
|
|
54
|
+
return false;
|
|
55
|
+
const trimmed = text.trim().toLowerCase();
|
|
56
|
+
if (!trimmed)
|
|
57
|
+
return true;
|
|
58
|
+
// Common short heartbeat phrases.
|
|
59
|
+
const heartbeats = [
|
|
60
|
+
"no change",
|
|
61
|
+
"no changes",
|
|
62
|
+
"no drift",
|
|
63
|
+
"no new change",
|
|
64
|
+
"no new changes",
|
|
65
|
+
"no new reportable change",
|
|
66
|
+
"no new reportable changes",
|
|
67
|
+
"no update",
|
|
68
|
+
"no updates",
|
|
69
|
+
"nothing to report",
|
|
70
|
+
"nothing new",
|
|
71
|
+
"cycle quiet",
|
|
72
|
+
"quiet cycle",
|
|
73
|
+
"still watching",
|
|
74
|
+
"still monitoring",
|
|
75
|
+
"no material change",
|
|
76
|
+
"no material changes",
|
|
77
|
+
"heartbeat",
|
|
78
|
+
"unchanged",
|
|
79
|
+
"no_change",
|
|
80
|
+
];
|
|
81
|
+
if (heartbeats.includes(trimmed))
|
|
82
|
+
return true;
|
|
83
|
+
// Allow short statements that start with a heartbeat phrase + trailing punctuation.
|
|
84
|
+
for (const h of heartbeats) {
|
|
85
|
+
if (trimmed === h + "." || trimmed === h + "!")
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
const TERMINAL_VERDICTS = new Set([
|
|
91
|
+
"success",
|
|
92
|
+
"partial",
|
|
93
|
+
"blocked",
|
|
94
|
+
"failed",
|
|
95
|
+
"cancelled",
|
|
96
|
+
"timed_out",
|
|
97
|
+
]);
|
|
98
|
+
/** Classify a child update for wake-decision purposes. */
|
|
99
|
+
export function classifyChildUpdate(update) {
|
|
100
|
+
if (update.kind === "error")
|
|
101
|
+
return "error";
|
|
102
|
+
// Treat cancelled as completion for routing purposes (parent should know).
|
|
103
|
+
if (update.kind === "cancelled")
|
|
104
|
+
return "completion";
|
|
105
|
+
// Completed turn with a recognized terminal verdict.
|
|
106
|
+
if (update.kind === "completed") {
|
|
107
|
+
const verdict = update.result?.verdict;
|
|
108
|
+
if (verdict && TERMINAL_VERDICTS.has(verdict)) {
|
|
109
|
+
if (verdict === "blocked" || verdict === "failed" || verdict === "timed_out")
|
|
110
|
+
return "completion";
|
|
111
|
+
return "completion";
|
|
112
|
+
}
|
|
113
|
+
// Completed turn without a verdict — treat as material so parent sees the summary.
|
|
114
|
+
return update.material === false && isHeartbeatText(update.summary) ? "heartbeat" : "material";
|
|
115
|
+
}
|
|
116
|
+
// Explicit material flag from the child wins.
|
|
117
|
+
if (update.material === true)
|
|
118
|
+
return "material";
|
|
119
|
+
if (update.material === false)
|
|
120
|
+
return "heartbeat";
|
|
121
|
+
// Structured verdict hints during a wait/progress turn.
|
|
122
|
+
const verdictHint = update.result?.verdict;
|
|
123
|
+
if (typeof verdictHint === "string") {
|
|
124
|
+
const v = verdictHint.toLowerCase();
|
|
125
|
+
if (v === "heartbeat" || v === "unchanged" || v === "no_change")
|
|
126
|
+
return "heartbeat";
|
|
127
|
+
}
|
|
128
|
+
// Fall back to text classification.
|
|
129
|
+
if (isHeartbeatText(update.summary))
|
|
130
|
+
return "heartbeat";
|
|
131
|
+
if (!update.summary)
|
|
132
|
+
return "unknown";
|
|
133
|
+
return "material";
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Decide whether the parent session should be woken for the given child update.
|
|
137
|
+
*
|
|
138
|
+
* The conservative rule: when the helper cannot confidently classify an
|
|
139
|
+
* update as a heartbeat under `material_change`, it wakes the parent
|
|
140
|
+
* rather than risk silently swallowing important work.
|
|
141
|
+
*/
|
|
142
|
+
export function shouldWakeParentForChildUpdate(input) {
|
|
143
|
+
const policy = readWakeOn(input.contract ?? null);
|
|
144
|
+
const classification = classifyChildUpdate(input.update);
|
|
145
|
+
if (policy === "any") {
|
|
146
|
+
return { wake: true, policy, classification, reason: "policy=any" };
|
|
147
|
+
}
|
|
148
|
+
if (policy === "completion") {
|
|
149
|
+
if (classification === "completion" || classification === "error") {
|
|
150
|
+
return { wake: true, policy, classification, reason: `policy=completion classification=${classification}` };
|
|
151
|
+
}
|
|
152
|
+
return { wake: false, policy, classification, reason: `policy=completion classification=${classification}` };
|
|
153
|
+
}
|
|
154
|
+
// material_change (default)
|
|
155
|
+
if (classification === "heartbeat") {
|
|
156
|
+
return { wake: false, policy, classification, reason: "policy=material_change classification=heartbeat" };
|
|
157
|
+
}
|
|
158
|
+
return { wake: true, policy, classification, reason: `policy=material_change classification=${classification}` };
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Evaluate a batch of pending child updates against the parent's active wait.
|
|
162
|
+
*
|
|
163
|
+
* Used as the digest-defense guard described in the proposal: a heartbeat-only
|
|
164
|
+
* batch should not interrupt an active parent cron wait; a mixed batch with
|
|
165
|
+
* any material update wakes the parent.
|
|
166
|
+
*/
|
|
167
|
+
export function shouldWakeParentForChildDigest(updates) {
|
|
168
|
+
if (updates.length === 0) {
|
|
169
|
+
return { wake: false, policy: DEFAULT_CHILD_WAKE_POLICY, classification: "unknown", reason: "empty digest" };
|
|
170
|
+
}
|
|
171
|
+
let firstHeartbeat;
|
|
172
|
+
for (const u of updates) {
|
|
173
|
+
const d = shouldWakeParentForChildUpdate(u);
|
|
174
|
+
if (d.wake)
|
|
175
|
+
return d;
|
|
176
|
+
if (!firstHeartbeat)
|
|
177
|
+
firstHeartbeat = d;
|
|
178
|
+
}
|
|
179
|
+
return firstHeartbeat;
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=child-notifications.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"child-notifications.js","sourceRoot":"","sources":["../src/child-notifications.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -49,6 +49,8 @@ export declare class PilotSwarmClient {
|
|
|
49
49
|
agentId?: string;
|
|
50
50
|
/** Authenticated owner to associate with the new session. */
|
|
51
51
|
owner?: SessionOwnerInfo | null;
|
|
52
|
+
/** Optional visual session group assignment. */
|
|
53
|
+
groupId?: string | null;
|
|
52
54
|
}): Promise<PilotSwarmSession>;
|
|
53
55
|
/**
|
|
54
56
|
* Create a session bound to a named agent.
|
|
@@ -68,6 +70,7 @@ export declare class PilotSwarmClient {
|
|
|
68
70
|
splash?: string;
|
|
69
71
|
initialPrompt?: string;
|
|
70
72
|
owner?: SessionOwnerInfo | null;
|
|
73
|
+
groupId?: string | null;
|
|
71
74
|
}): Promise<PilotSwarmSession>;
|
|
72
75
|
/**
|
|
73
76
|
* Create a system session (e.g. Sweeper Agent).
|
|
@@ -183,7 +186,7 @@ export declare class PilotSwarmSession {
|
|
|
183
186
|
cancelPendingMessage(clientMessageIds: string[]): Promise<void>;
|
|
184
187
|
abort(): Promise<void>;
|
|
185
188
|
destroy(): Promise<void>;
|
|
186
|
-
/** Get
|
|
189
|
+
/** Get a provider-capped latest page of persisted events from CMS. Use event paging to drain complete history. */
|
|
187
190
|
getMessages(limit?: number): Promise<SessionEvent[]>;
|
|
188
191
|
getInfo(): Promise<PilotSwarmSessionInfo>;
|
|
189
192
|
private _startPolling;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACR,uBAAuB,EACvB,oBAAoB,EAGpB,qBAAqB,EAErB,gBAAgB,EAIhB,gBAAgB,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA4BrE;;;;;;;;;GASG;AACH,qBAAa,gBAAgB;IACzB,OAAO,CAAC,MAAM,CAAsD;IACpE,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,cAAc,CAA2C;IACjE,8CAA8C;IAC9C,OAAO,CAAC,gBAAgB,CAA6B;IACrD,2CAA2C;IAC3C,OAAO,CAAC,aAAa,CAA6B;IAClD,2BAA2B;IAC3B,cAAc,cAAqB;IACnC,OAAO,CAAC,oBAAoB,CAA6B;IACzD,OAAO,CAAC,qBAAqB,CAA6B;IAC1D,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,uBAAuB,CAA6B;IAC5D,OAAO,CAAC,qBAAqB,CAA8B;IAC3D,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,OAAO,CAAS;IACxB,6EAA6E;IAC7E,OAAO,CAAC,eAAe,CAA6B;IACpD,6DAA6D;IAC7D,OAAO,KAAK,cAAc,GAEzB;IACD,wDAAwD;IACxD,OAAO,KAAK,kBAAkB,GAE7B;gBAEW,OAAO,EAAE,uBAAuB;IAStC,aAAa,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG;QAChD,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,kBAAkB,CAAC,EAAE,gBAAgB,CAAC;QACtC,0EAA0E;QAC1E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,6DAA6D;QAC7D,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,kDAAkD;QAClD,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,oFAAoF;QACpF,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,6DAA6D;QAC7D,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -109,6 +109,7 @@ export class PilotSwarmClient {
|
|
|
109
109
|
reasoningEffort: config?.reasoningEffort,
|
|
110
110
|
parentSessionId: config?.parentSessionId,
|
|
111
111
|
owner: config?.owner ?? null,
|
|
112
|
+
groupId: config?.groupId ?? null,
|
|
112
113
|
});
|
|
113
114
|
// Track parentSessionId for sub-agent orchestration input
|
|
114
115
|
if (config?.parentSessionId) {
|
|
@@ -148,6 +149,7 @@ export class PilotSwarmClient {
|
|
|
148
149
|
boundAgentName: agentName,
|
|
149
150
|
promptLayering: { kind: "app-agent" },
|
|
150
151
|
owner: opts?.owner ?? null,
|
|
152
|
+
groupId: opts?.groupId ?? null,
|
|
151
153
|
});
|
|
152
154
|
// Set agent metadata in CMS (agentId + prefixed title)
|
|
153
155
|
const shortId = session.sessionId.slice(0, 8);
|
|
@@ -259,6 +261,10 @@ export class PilotSwarmClient {
|
|
|
259
261
|
isSystem: row.isSystem || undefined,
|
|
260
262
|
agentId: row.agentId ?? undefined,
|
|
261
263
|
splash: row.splash ?? undefined,
|
|
264
|
+
groupId: row.groupId ?? undefined,
|
|
265
|
+
shortSummary: row.shortSummary ?? undefined,
|
|
266
|
+
summaryState: row.summaryState ?? undefined,
|
|
267
|
+
summaryUpdatedAt: row.summaryUpdatedAt ?? undefined,
|
|
262
268
|
}));
|
|
263
269
|
}
|
|
264
270
|
async deleteSession(sessionId) {
|
|
@@ -549,6 +555,21 @@ export class PilotSwarmClient {
|
|
|
549
555
|
: null;
|
|
550
556
|
const cronActive = customStatus.cronActive === true;
|
|
551
557
|
const cronInterval = typeof customStatus.cronInterval === "number" ? customStatus.cronInterval : undefined;
|
|
558
|
+
const cronKind = cronActive && (customStatus.cronKind === "wall-clock" || customStatus.cronKind === "interval")
|
|
559
|
+
? customStatus.cronKind
|
|
560
|
+
: undefined;
|
|
561
|
+
const cronNextFireAt = cronActive && typeof customStatus.cronNextFireAt === "number"
|
|
562
|
+
? customStatus.cronNextFireAt
|
|
563
|
+
: undefined;
|
|
564
|
+
const cronTimezone = cronActive && typeof customStatus.cronTimezone === "string"
|
|
565
|
+
? customStatus.cronTimezone
|
|
566
|
+
: undefined;
|
|
567
|
+
const cronMaxFires = cronActive && typeof customStatus.cronMaxFires === "number"
|
|
568
|
+
? customStatus.cronMaxFires
|
|
569
|
+
: undefined;
|
|
570
|
+
const cronFiresCompleted = cronActive && typeof customStatus.cronFiresCompleted === "number"
|
|
571
|
+
? customStatus.cronFiresCompleted
|
|
572
|
+
: undefined;
|
|
552
573
|
const status = deriveStatusFromCmsAndRuntime({
|
|
553
574
|
row: cmsRow,
|
|
554
575
|
customStatus,
|
|
@@ -611,6 +632,10 @@ export class PilotSwarmClient {
|
|
|
611
632
|
title: cmsRow?.title ?? undefined,
|
|
612
633
|
agentId: cmsRow?.agentId ?? undefined,
|
|
613
634
|
owner: cmsRow?.owner ?? undefined,
|
|
635
|
+
groupId: cmsRow?.groupId ?? undefined,
|
|
636
|
+
shortSummary: cmsRow?.shortSummary ?? undefined,
|
|
637
|
+
summaryState: cmsRow?.summaryState ?? undefined,
|
|
638
|
+
summaryUpdatedAt: cmsRow?.summaryUpdatedAt ?? undefined,
|
|
614
639
|
createdAt: cmsRow?.createdAt ?? new Date(),
|
|
615
640
|
updatedAt: cmsRow?.updatedAt ?? new Date(),
|
|
616
641
|
iterations: customStatus.iteration ?? cmsRow?.currentIteration ?? 0,
|
|
@@ -629,6 +654,11 @@ export class PilotSwarmClient {
|
|
|
629
654
|
waitReason: customStatus.waitReason,
|
|
630
655
|
cronActive,
|
|
631
656
|
cronInterval,
|
|
657
|
+
cronKind,
|
|
658
|
+
cronNextFireAt,
|
|
659
|
+
cronTimezone,
|
|
660
|
+
cronMaxFires,
|
|
661
|
+
cronFiresCompleted,
|
|
632
662
|
cronReason: typeof customStatus.cronReason === "string" ? customStatus.cronReason : undefined,
|
|
633
663
|
contextUsage: customStatus?.contextUsage && typeof customStatus.contextUsage === "object"
|
|
634
664
|
? customStatus.contextUsage
|
|
@@ -880,7 +910,7 @@ export class PilotSwarmSession {
|
|
|
880
910
|
this._stopPolling();
|
|
881
911
|
await this.client.deleteSession(this.sessionId);
|
|
882
912
|
}
|
|
883
|
-
/** Get
|
|
913
|
+
/** Get a provider-capped latest page of persisted events from CMS. Use event paging to drain complete history. */
|
|
884
914
|
async getMessages(limit) {
|
|
885
915
|
const catalog = this.client._getCatalog();
|
|
886
916
|
return catalog.getSessionEvents(this.sessionId, undefined, limit);
|