@stratusagent/agents 0.6.0 → 0.8.0

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/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AgentRegistry, type AgentDefinition, type AgentMemoryStore, type AgentRunner, type AvatarTheme, type JsonObject, type Session, type Tool } from '@stratusagent/core';
1
+ import { AgentRegistry, type AgentDefinition, type AgentMemoryStore, type AgentRunner, type AvatarTheme, type JsonObject, type Session, type Skill, type Tool } from '@stratusagent/core';
2
2
  /**
3
3
  * The one house style every Stratus agent avatar is drawn in. Surfaces
4
4
  * (CLI, web, macOS) render this style; agents differ by their name-derived
@@ -81,6 +81,7 @@ export interface DefineAgentInput {
81
81
  id?: string;
82
82
  instructions?: string;
83
83
  tools?: string[];
84
+ skills?: string[];
84
85
  credentials?: string[];
85
86
  avatar?: AvatarTheme;
86
87
  /** Seed for deterministic identity generation (used in tests). */
@@ -120,6 +121,59 @@ export declare const parseSoul: (source: string, options?: ParseSoulOptions) =>
120
121
  * inverse of parseSoul for round-tripping `stratus agent new` output.
121
122
  */
122
123
  export declare const formatSoul: (soul: ParsedSoul) => string;
124
+ /**
125
+ * The shape a skill id is written in: lowercase kebab-case (`web-research`).
126
+ * One pattern for the manifest's declared ids and the operator directory's
127
+ * folder names — two copies would drift into two answers to what a valid
128
+ * id is.
129
+ */
130
+ export declare const SKILL_ID_PATTERN: RegExp;
131
+ export declare const isValidSkillId: (id: string) => boolean;
132
+ /**
133
+ * A parsed `SKILL.md`: the one-line identity that reaches the system
134
+ * prompt, and the body that only ever travels through `skill.read`.
135
+ */
136
+ export interface ParsedSkillDocument {
137
+ /** Display name; the registered skill falls back to its id. */
138
+ name?: string;
139
+ /**
140
+ * When to reach for this skill — what routing runs on, so it earns its
141
+ * place by saying when, not what the body contains.
142
+ */
143
+ description: string;
144
+ /** Informational; nothing keys on it. */
145
+ version?: string;
146
+ /** Toolset globs the procedure expects (`browser.*`). Advisory — see `Skill.requires`. */
147
+ requires?: string[];
148
+ body: string;
149
+ }
150
+ /**
151
+ * Parse a `SKILL.md` — the same frontmatter dialect souls use (`key: value`
152
+ * scalars, block lists), with the skill's keys: `name`, `description`,
153
+ * optional `version`, optional `requires`. The body is the procedure
154
+ * itself, markdown, untouched.
155
+ *
156
+ * `description` is required: it is the only thing the model sees before
157
+ * deciding to load the body, and a skill without one is unreachable by the
158
+ * mechanism that makes skills cheap.
159
+ */
160
+ export declare const parseSkillDocument: (source: string) => ParsedSkillDocument;
161
+ export interface LazySkillInput {
162
+ /** The id the skill registers under — qualified for a plugin's skill. */
163
+ id: string;
164
+ /** The parsed document, from the load-time read that validated the file. */
165
+ document: ParsedSkillDocument;
166
+ /** Re-read the file's source. Called on demand; the registry caches. */
167
+ read: () => Promise<string>;
168
+ }
169
+ /**
170
+ * A `Skill` whose body stays on disk until somebody asks. The identity
171
+ * comes from the load-time parse (which is also what validated the file);
172
+ * `load()` re-reads rather than closing over the body, so an
173
+ * enabled-but-unused skill costs its description line and nothing else —
174
+ * in the prompt and in memory.
175
+ */
176
+ export declare const createLazySkill: ({ id, document, read }: LazySkillInput) => Skill;
123
177
  export declare const MEMORY_TOOL_NAME = "memory.remember";
124
178
  /**
125
179
  * A tool that lets an agent write to its own long-term memory. Entries are
@@ -127,6 +181,24 @@ export declare const MEMORY_TOOL_NAME = "memory.remember";
127
181
  * that agent's knowledge — and follows it to every channel and thread.
128
182
  */
129
183
  export declare const createRememberTool: (store: AgentMemoryStore) => Tool;
184
+ export declare const RECALL_TOOL_NAME = "memory.recall";
185
+ /**
186
+ * Searches the agent's own long-term memory. `safe` by the same rule as
187
+ * `memory.remember`: reading what this agent already knows. The query is
188
+ * literal text — the store does whatever escaping its backend needs, so no
189
+ * query a model writes is ever a syntax error; matching nothing is a normal
190
+ * result, because an agent that has learned nothing yet is the ordinary
191
+ * starting state, not a broken tool.
192
+ */
193
+ export declare const createRecallTool: (store: AgentMemoryStore) => Tool;
194
+ export declare const FORGET_TOOL_NAME = "memory.forget";
195
+ /**
196
+ * Retires one of the agent's own memories, by id. Tombstoned rather than
197
+ * deleted — which is what makes `safe` defensible for it: the entry stops
198
+ * being live but does not stop existing, so an operator can still see what
199
+ * an agent chose to drop.
200
+ */
201
+ export declare const createForgetTool: (store: AgentMemoryStore) => Tool;
130
202
  export declare const DELEGATE_TOOL_NAME = "agent.delegate";
131
203
  /**
132
204
  * Runs a delegated sub-session. A plain runner works when every agent
@@ -175,4 +247,179 @@ export interface AgentRouter {
175
247
  export declare const createAgentRouter: (rules: AgentRouteRule[], fallback: AgentDefinition) => AgentRouter;
176
248
  /** Register a set of agents and get the registry back. */
177
249
  export declare const createAgentTeam: (agents: AgentDefinition[]) => AgentRegistry;
250
+ /**
251
+ * Where a schedule reports, or a `message.send` speaks: a channel kind plus
252
+ * a channel-native id — the same convention approver lists use, because
253
+ * mapping through a Stratus identity adds a lookup that can only be wrong.
254
+ */
255
+ export interface ScheduleDestination {
256
+ /** Channel kind, e.g. 'slack' — which adapter must do the talking. */
257
+ channel: string;
258
+ /** Channel-native conversation id (Slack: `C…`/`G…`/`D…`). */
259
+ to: string;
260
+ }
261
+ /**
262
+ * The one string form of a destination, `<channel>:<native id>`, used
263
+ * everywhere a destination is *compared*: `Tool.destinationFor`, the
264
+ * permission policy's pre-authorization check, and the schedule row it is
265
+ * checked against. One canonicalization, or two writers of `slack:C01` and
266
+ * `SLACK:C01` would disagree about the same channel.
267
+ */
268
+ export declare const canonicalDestination: (destination: ScheduleDestination) => string;
269
+ /**
270
+ * When a schedule runs. Three shapes rather than one string, because the
271
+ * three are advanced differently: an interval adds itself to the previous
272
+ * slot, a cron expression is searched forward, and a one-shot has no next
273
+ * at all.
274
+ */
275
+ export type ScheduleCadence = {
276
+ kind: 'every';
277
+ intervalMs: number;
278
+ } | {
279
+ kind: 'cron';
280
+ expression: string;
281
+ } | {
282
+ kind: 'at';
283
+ at: string;
284
+ };
285
+ /** One durable schedule, exactly as the human approved it. */
286
+ export interface ScheduleRecord {
287
+ id: string;
288
+ agentId: string;
289
+ cadence: ScheduleCadence;
290
+ /** The user message each firing dispatches — the payload of the feature. */
291
+ prompt: string;
292
+ /**
293
+ * Where firings are pre-authorized to report. Absent for a silent
294
+ * schedule, whose firings face the gate like any inbound turn.
295
+ */
296
+ destination?: ScheduleDestination;
297
+ createdAt: string;
298
+ /** The session whose turn created it, for the audit trail. */
299
+ createdBy?: string;
300
+ /**
301
+ * The next slot, ISO-8601. Consumed — advanced — BEFORE the dispatch, so
302
+ * a daemon that dies mid-firing can never run the same window twice.
303
+ * Absent for a spent one-shot: it will not fire again and its row stays
304
+ * only until the firing it pre-authorized has finished.
305
+ */
306
+ nextFireAt?: string;
307
+ lastFiredAt?: string;
308
+ /**
309
+ * The session id of the most recent firing. What the restart sweep uses
310
+ * to tell a spent one-shot whose turn is parked on a human (keep the row
311
+ * — it is the approval's scope) from one whose turn is over (delete it).
312
+ */
313
+ lastSessionId?: string;
314
+ }
315
+ /** `every` strings: a positive integer and one unit — `90s`, `10m`, `2h`, `1d`. */
316
+ export declare const parseInterval: (text: string) => number | undefined;
317
+ interface CronFields {
318
+ minutes: Set<number>;
319
+ hours: Set<number>;
320
+ daysOfMonth: Set<number>;
321
+ months: Set<number>;
322
+ daysOfWeek: Set<number>;
323
+ /**
324
+ * Whether the day fields were written as anything but `*`. Standard cron
325
+ * semantics: when BOTH are restricted, a day matches if EITHER does —
326
+ * `0 0 1 * 1` is "the 1st, and every Monday", not "the 1st when it is a
327
+ * Monday".
328
+ */
329
+ domRestricted: boolean;
330
+ dowRestricted: boolean;
331
+ }
332
+ /**
333
+ * Five fields — minute, hour, day-of-month, month, day-of-week — with `*`,
334
+ * lists, ranges, and steps. Numbers only; day-of-week 0-7 with both 0 and 7
335
+ * as Sunday. Evaluated in the daemon's local time, which is what "every
336
+ * morning at 7" means to the person whose machine it is.
337
+ */
338
+ export declare const parseCronExpression: (expression: string) => CronFields;
339
+ /**
340
+ * The slot after `after`, or undefined when there is none — a one-shot
341
+ * already past, or a cron expression that matches no real date. One
342
+ * implementation, because the scheduler advancing a fired slot and the
343
+ * creation path computing the first one must never disagree.
344
+ */
345
+ export declare const nextFireAfter: (cadence: ScheduleCadence, after: Date) => Date | undefined;
346
+ /** One line for a human: `every 30m`, `cron 0 7 * * *`, `once at 2026-…`. */
347
+ export declare const describeCadence: (cadence: ScheduleCadence) => string;
348
+ /**
349
+ * Metadata a firing's session carries. The schedule id is what the
350
+ * permission carve-out resolves the approved destination from, and
351
+ * `scheduled: true` is what lets a renderer say a turn arrived from a
352
+ * schedule rather than a person.
353
+ */
354
+ export declare const SCHEDULE_ID_METADATA_KEY = "scheduleId";
355
+ export declare const SCHEDULED_TURN_METADATA_KEY = "scheduled";
356
+ export declare const SCHEDULE_EVERY_TOOL_NAME = "schedule.every";
357
+ export declare const SCHEDULE_AT_TOOL_NAME = "schedule.at";
358
+ export declare const SCHEDULE_LIST_TOOL_NAME = "schedule.list";
359
+ export declare const SCHEDULE_CANCEL_TOOL_NAME = "schedule.cancel";
360
+ export declare const MESSAGE_SEND_TOOL_NAME = "message.send";
361
+ export interface ScheduleCreateInput {
362
+ agentId: string;
363
+ cadence: ScheduleCadence;
364
+ prompt: string;
365
+ destination?: ScheduleDestination;
366
+ /** The session whose turn asked, for the audit trail. */
367
+ createdBy?: string;
368
+ }
369
+ /**
370
+ * The gateway-supplied handle the schedule tools close over — the same
371
+ * pattern as `agent.delegate`'s dispatcher, because the scheduler needs the
372
+ * store, the roster, and the channels, and none of those are this package's
373
+ * to hold. `create` owns every refusal that needs daemon knowledge: the
374
+ * interval floor, and a destination the agent's channel cannot address —
375
+ * checked NOW, while a person is present to hear why, not at 6am.
376
+ */
377
+ export interface SchedulerHandle {
378
+ create(input: ScheduleCreateInput): Promise<ScheduleRecord>;
379
+ list(agentId: string): Promise<ScheduleRecord[]>;
380
+ /** True when a schedule of this agent's was cancelled; false when nothing matched. */
381
+ cancel(agentId: string, scheduleId: string): Promise<boolean>;
382
+ }
383
+ /**
384
+ * One schedule as a surface shows it — the CLI table, the control API's
385
+ * listing, and the tool results all render this one projection, so the
386
+ * operator's view and the agent's cannot drift.
387
+ */
388
+ export declare const describeSchedule: (record: ScheduleRecord) => JsonObject;
389
+ /**
390
+ * The four `schedule.*` tools over one handle.
391
+ *
392
+ * Risk is split per tool, not per toolset: creating a schedule spends
393
+ * future money unattended and (with a destination) mints a standing
394
+ * permission to speak, so `schedule.every` and `schedule.at` are `gated` —
395
+ * the approval of THAT call is the human decision the whole step leans on.
396
+ * `schedule.list` is a read, and `schedule.cancel` only ever narrows
397
+ * authority — it is the reversal the risk note in the spec names — so both
398
+ * are `safe`: a headless agent that set a bad schedule must be able to
399
+ * undo it without waiting for the human whose absence is the problem.
400
+ */
401
+ export declare const createScheduleTools: (scheduler: SchedulerHandle) => Tool[];
402
+ /**
403
+ * Delivers one outbound message through the agent's channel. The gateway
404
+ * implements it over the channel contract's `resolveOutbound`; rejecting is
405
+ * the way to say a destination cannot be served.
406
+ */
407
+ export type OutboundMessenger = (input: {
408
+ agentId: string;
409
+ destination: ScheduleDestination;
410
+ text: string;
411
+ }) => Promise<void>;
412
+ /**
413
+ * Post to a channel or DM outside the current conversation — what makes a
414
+ * scheduled turn observable.
415
+ *
416
+ * `gated`, and deliberately not `safe` the way `agent.delegate` is: the
417
+ * delegate stays inside the fleet, under every per-agent allowlist and the
418
+ * same approval policy, while this speaks to people who did not ask. The
419
+ * unattended path is the schedule carve-out — `destinationFor` names where
420
+ * this call would speak, and the policy allows it exactly when the firing's
421
+ * schedule was approved with that destination.
422
+ */
423
+ export declare const createMessageSendTool: (send: OutboundMessenger) => Tool;
424
+ export {};
178
425
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -200,11 +200,12 @@ export const defineAgent = (input = {}) => {
200
200
  ...(input.instructions ? { instructions: input.instructions } : {}),
201
201
  avatar: input.avatar ?? generateAvatarTheme(name),
202
202
  ...(input.tools ? { tools: input.tools } : {}),
203
+ ...(input.skills ? { skills: input.skills } : {}),
203
204
  ...(input.credentials ? { credentials: input.credentials } : {}),
204
205
  };
205
206
  };
206
207
  const SOUL_SCALAR_KEYS = ['name', 'id', 'provider', 'model'];
207
- const SOUL_LIST_KEYS = ['tools', 'credentials'];
208
+ const SOUL_LIST_KEYS = ['tools', 'skills', 'credentials'];
208
209
  const unquote = (value) => {
209
210
  const trimmed = value.trim();
210
211
  if (trimmed.length >= 2 &&
@@ -215,20 +216,64 @@ const unquote = (value) => {
215
216
  return trimmed;
216
217
  };
217
218
  // A deliberately tiny frontmatter dialect: `key: value` scalars and block
218
- // lists of `- item` lines. Enough for souls, no YAML dependency.
219
- const parseSoulFrontmatter = (lines) => {
219
+ // lists of `- item` lines. Enough for souls and skills, no YAML dependency.
220
+ // Tolerant mode (see FrontmatterShape) additionally reads the block-scalar
221
+ // forms (`description: >-` and friends) and plain multi-line scalars, and
222
+ // skips unknown keys with their nested blocks.
223
+ const parseFrontmatterLines = (lines, shape) => {
220
224
  const scalars = {};
221
225
  const lists = {};
226
+ const tolerant = shape.tolerant ?? false;
222
227
  let currentList;
228
+ // Tolerant-mode line context: an unknown key whose indented block is
229
+ // being skipped, or a known scalar whose value continues on indented
230
+ // lines (a YAML block scalar, or a plain scalar that wraps). Inside
231
+ // either, blank lines and lines starting with # are content or skipped
232
+ // block — never the comments the top level treats them as — so both are
233
+ // handled before the comment filter below.
234
+ let skippingUnknownBlock = false;
235
+ let continuation;
236
+ const isIndented = (line) => /^\s/.test(line);
223
237
  for (const rawLine of lines) {
224
238
  const line = rawLine.trimEnd();
225
- if (line.trim().length === 0 || line.trim().startsWith('#')) {
239
+ const blank = line.trim().length === 0;
240
+ if (tolerant && skippingUnknownBlock && (blank || isIndented(line))) {
241
+ continue;
242
+ }
243
+ if (tolerant && continuation) {
244
+ if (blank) {
245
+ // A blank line is a line break in a literal block and a paragraph
246
+ // break in a folded or plain one — never the end of the value.
247
+ if (continuation.literal) {
248
+ const existing = scalars[continuation.key] ?? '';
249
+ if (existing.length > 0) {
250
+ scalars[continuation.key] = `${existing}\n`;
251
+ }
252
+ }
253
+ else {
254
+ continuation.pendingBreak = true;
255
+ }
256
+ continue;
257
+ }
258
+ if (isIndented(line)) {
259
+ const existing = scalars[continuation.key] ?? '';
260
+ const separator = continuation.literal || continuation.pendingBreak ? '\n' : ' ';
261
+ continuation.pendingBreak = false;
262
+ // The raw content, not unquote(): inside a block scalar a quote or
263
+ // a # is text, and YAML agrees.
264
+ const piece = line.trim();
265
+ scalars[continuation.key] = existing.length > 0 ? `${existing}${separator}${piece}` : piece;
266
+ continue;
267
+ }
268
+ // A non-indented line ends the value; fall through to read it.
269
+ }
270
+ if (blank || line.trim().startsWith('#')) {
226
271
  continue;
227
272
  }
228
273
  const listItem = /^\s+-\s*(.*)$/.exec(line);
229
274
  if (listItem) {
230
275
  if (!currentList) {
231
- throw new Error(`Soul frontmatter has a list item outside a list: "${line.trim()}"`);
276
+ throw new Error(`${capitalize(shape.kind)} frontmatter has a list item outside a list: "${line.trim()}"`);
232
277
  }
233
278
  const item = unquote(listItem[1] ?? '');
234
279
  if (item.length > 0) {
@@ -238,12 +283,14 @@ const parseSoulFrontmatter = (lines) => {
238
283
  }
239
284
  const entry = /^([A-Za-z][A-Za-z0-9_-]*)\s*:\s*(.*)$/.exec(line);
240
285
  if (!entry) {
241
- throw new Error(`Soul frontmatter line is not "key: value": "${line.trim()}"`);
286
+ throw new Error(`${capitalize(shape.kind)} frontmatter line is not "key: value": "${line.trim()}"`);
242
287
  }
243
288
  const key = entry[1] ?? '';
244
289
  const value = entry[2] ?? '';
245
290
  currentList = undefined;
246
- if (SOUL_LIST_KEYS.includes(key)) {
291
+ skippingUnknownBlock = false;
292
+ continuation = undefined;
293
+ if (shape.listKeys.includes(key)) {
247
294
  const list = [];
248
295
  lists[key] = list;
249
296
  const inline = value.trim();
@@ -251,7 +298,7 @@ const parseSoulFrontmatter = (lines) => {
251
298
  // Inline form: tools: [a, b]
252
299
  const match = /^\[(.*)\]$/.exec(inline);
253
300
  if (!match) {
254
- throw new Error(`Soul frontmatter list "${key}" must be a block list or [a, b]: "${inline}"`);
301
+ throw new Error(`${capitalize(shape.kind)} frontmatter list "${key}" must be a block list or [a, b]: "${inline}"`);
255
302
  }
256
303
  for (const item of (match[1] ?? '').split(',')) {
257
304
  const cleaned = unquote(item);
@@ -265,43 +312,88 @@ const parseSoulFrontmatter = (lines) => {
265
312
  }
266
313
  continue;
267
314
  }
268
- if (!SOUL_SCALAR_KEYS.includes(key)) {
269
- throw new Error(`Unknown soul frontmatter key: "${key}". Supported keys: ${[...SOUL_SCALAR_KEYS, ...SOUL_LIST_KEYS].join(', ')}.`);
315
+ if (!shape.scalarKeys.includes(key)) {
316
+ if (tolerant) {
317
+ // The key and anything nested under it belong to some other host.
318
+ skippingUnknownBlock = true;
319
+ continue;
320
+ }
321
+ throw new Error(`Unknown ${shape.kind} frontmatter key: "${key}". Supported keys: ${[...shape.scalarKeys, ...shape.listKeys].join(', ')}.`);
322
+ }
323
+ const inline = value.trim();
324
+ // YAML block-scalar headers: `>` folds continuation lines with spaces,
325
+ // `|` keeps their line breaks; either may carry an indentation digit
326
+ // and a chomping sign in either order, and a trailing comment. Only
327
+ // meaningful in tolerant mode — the strict dialect never wrote them.
328
+ if (tolerant && /^[>|](?:[1-9][+-]?|[+-][1-9]?)?(?:\s+#.*)?$/.test(inline)) {
329
+ scalars[key] = '';
330
+ continuation = { key, literal: inline.startsWith('|'), pendingBreak: false };
331
+ continue;
270
332
  }
271
333
  const scalar = unquote(value);
272
334
  if (scalar.length === 0) {
273
- throw new Error(`Soul frontmatter key "${key}" has no value.`);
335
+ if (tolerant) {
336
+ // May be a plain scalar continuing on indented lines; empty stays
337
+ // empty and is dropped below if nothing follows.
338
+ scalars[key] = '';
339
+ continuation = { key, literal: false, pendingBreak: false };
340
+ continue;
341
+ }
342
+ throw new Error(`${capitalize(shape.kind)} frontmatter key "${key}" has no value.`);
274
343
  }
275
344
  scalars[key] = scalar;
345
+ if (tolerant) {
346
+ continuation = { key, literal: false, pendingBreak: false };
347
+ }
348
+ }
349
+ // A tolerant block scalar that never got a body reads as absent, not as
350
+ // an empty string that would satisfy a required-field check.
351
+ for (const [key, value] of Object.entries(scalars)) {
352
+ if (value !== undefined && value.length === 0) {
353
+ delete scalars[key];
354
+ }
276
355
  }
277
356
  return { scalars, lists };
278
357
  };
358
+ const capitalize = (word) => `${word.charAt(0).toUpperCase()}${word.slice(1)}`;
359
+ /**
360
+ * Split a markdown document into its `---`-fenced frontmatter lines (if
361
+ * any) and the body after them. Shared by souls and skills — one reading
362
+ * of what the fences mean, wherever the dialect appears.
363
+ */
364
+ const extractFrontmatter = (source, kind) => {
365
+ const normalized = source.replace(/\r\n/g, '\n');
366
+ const opener = /^---[ \t]*\n/.exec(normalized);
367
+ if (!opener) {
368
+ return { lines: undefined, body: normalized };
369
+ }
370
+ const closer = /\n---[ \t]*(\n|$)/.exec(normalized.slice(opener[0].length - 1));
371
+ if (!closer || closer.index === undefined) {
372
+ throw new Error(`${capitalize(kind)} frontmatter opened with --- but never closed.`);
373
+ }
374
+ const frontmatterEnd = opener[0].length - 1 + closer.index;
375
+ return {
376
+ lines: normalized.slice(opener[0].length, frontmatterEnd).split('\n'),
377
+ body: normalized.slice(frontmatterEnd + closer[0].length),
378
+ };
379
+ };
279
380
  /**
280
381
  * Parse a soul file (markdown with optional frontmatter) into an agent
281
382
  * definition. The body becomes the agent's instructions; a missing name is
282
383
  * generated, so the smallest possible soul is just prose.
283
384
  */
284
385
  export const parseSoul = (source, options = {}) => {
285
- const normalized = source.replace(/\r\n/g, '\n');
286
- let frontmatter = { scalars: {}, lists: {} };
287
- let body = normalized;
288
- const opener = /^---[ \t]*\n/.exec(normalized);
289
- if (opener) {
290
- const closer = /\n---[ \t]*(\n|$)/.exec(normalized.slice(opener[0].length - 1));
291
- if (!closer || closer.index === undefined) {
292
- throw new Error('Soul frontmatter opened with --- but never closed.');
293
- }
294
- const frontmatterEnd = opener[0].length - 1 + closer.index;
295
- frontmatter = parseSoulFrontmatter(normalized.slice(opener[0].length, frontmatterEnd).split('\n'));
296
- body = normalized.slice(frontmatterEnd + closer[0].length);
297
- }
386
+ const { lines, body } = extractFrontmatter(source, 'soul');
387
+ const { scalars, lists } = lines
388
+ ? parseFrontmatterLines(lines, { kind: 'soul', scalarKeys: SOUL_SCALAR_KEYS, listKeys: SOUL_LIST_KEYS })
389
+ : { scalars: {}, lists: {} };
298
390
  const instructions = body.trim();
299
- const { scalars, lists } = frontmatter;
300
391
  const agent = defineAgent({
301
392
  ...(scalars.name ? { name: scalars.name } : {}),
302
393
  ...(scalars.id ? { id: scalars.id } : {}),
303
394
  ...(instructions ? { instructions } : {}),
304
395
  ...(lists.tools ? { tools: lists.tools } : {}),
396
+ ...(lists.skills ? { skills: lists.skills } : {}),
305
397
  ...(lists.credentials ? { credentials: lists.credentials } : {}),
306
398
  ...(options.seed !== undefined ? { seed: options.seed } : {}),
307
399
  });
@@ -325,6 +417,7 @@ export const formatSoul = (soul) => {
325
417
  }
326
418
  for (const [key, values] of [
327
419
  ['tools', soul.agent.tools],
420
+ ['skills', soul.agent.skills],
328
421
  ['credentials', soul.agent.credentials],
329
422
  ]) {
330
423
  if (values && values.length > 0) {
@@ -339,6 +432,68 @@ export const formatSoul = (soul) => {
339
432
  lines.push('');
340
433
  return lines.join('\n');
341
434
  };
435
+ // ---- skills ----------------------------------------------------------------
436
+ /**
437
+ * The shape a skill id is written in: lowercase kebab-case (`web-research`).
438
+ * One pattern for the manifest's declared ids and the operator directory's
439
+ * folder names — two copies would drift into two answers to what a valid
440
+ * id is.
441
+ */
442
+ export const SKILL_ID_PATTERN = /^[a-z0-9][a-z0-9-]*$/;
443
+ export const isValidSkillId = (id) => SKILL_ID_PATTERN.test(id);
444
+ const SKILL_SCALAR_KEYS = ['name', 'description', 'version'];
445
+ const SKILL_LIST_KEYS = ['requires'];
446
+ /**
447
+ * Parse a `SKILL.md` — the same frontmatter dialect souls use (`key: value`
448
+ * scalars, block lists), with the skill's keys: `name`, `description`,
449
+ * optional `version`, optional `requires`. The body is the procedure
450
+ * itself, markdown, untouched.
451
+ *
452
+ * `description` is required: it is the only thing the model sees before
453
+ * deciding to load the body, and a skill without one is unreachable by the
454
+ * mechanism that makes skills cheap.
455
+ */
456
+ export const parseSkillDocument = (source) => {
457
+ const { lines, body } = extractFrontmatter(source, 'skill');
458
+ if (!lines) {
459
+ throw new Error('Skill file has no frontmatter. A SKILL.md starts with --- and needs at least a description.');
460
+ }
461
+ const { scalars, lists } = parseFrontmatterLines(lines, {
462
+ kind: 'skill',
463
+ scalarKeys: SKILL_SCALAR_KEYS,
464
+ listKeys: SKILL_LIST_KEYS,
465
+ // Skills travel the wider agent-skills ecosystem (skills.sh and the
466
+ // registries behind it), whose frontmatter carries fields other hosts
467
+ // own. Those are metadata to skip, not defects to refuse — see
468
+ // FrontmatterShape.tolerant, and note souls do NOT set this.
469
+ tolerant: true,
470
+ });
471
+ const description = scalars.description;
472
+ if (!description) {
473
+ throw new Error('Skill frontmatter has no "description". The description is what an agent routes on — say when to reach for this skill.');
474
+ }
475
+ return {
476
+ ...(scalars.name ? { name: scalars.name } : {}),
477
+ description,
478
+ ...(scalars.version ? { version: scalars.version } : {}),
479
+ ...(lists.requires && lists.requires.length > 0 ? { requires: lists.requires } : {}),
480
+ body: body.trim(),
481
+ };
482
+ };
483
+ /**
484
+ * A `Skill` whose body stays on disk until somebody asks. The identity
485
+ * comes from the load-time parse (which is also what validated the file);
486
+ * `load()` re-reads rather than closing over the body, so an
487
+ * enabled-but-unused skill costs its description line and nothing else —
488
+ * in the prompt and in memory.
489
+ */
490
+ export const createLazySkill = ({ id, document, read }) => ({
491
+ id,
492
+ name: document.name ?? id,
493
+ description: document.description,
494
+ ...(document.requires ? { requires: document.requires } : {}),
495
+ load: async () => parseSkillDocument(await read()).body,
496
+ });
342
497
  export const MEMORY_TOOL_NAME = 'memory.remember';
343
498
  /**
344
499
  * A tool that lets an agent write to its own long-term memory. Entries are
@@ -366,6 +521,69 @@ export const createRememberTool = (store) => ({
366
521
  return { remembered: true, id: entry.id };
367
522
  },
368
523
  });
524
+ export const RECALL_TOOL_NAME = 'memory.recall';
525
+ /**
526
+ * Searches the agent's own long-term memory. `safe` by the same rule as
527
+ * `memory.remember`: reading what this agent already knows. The query is
528
+ * literal text — the store does whatever escaping its backend needs, so no
529
+ * query a model writes is ever a syntax error; matching nothing is a normal
530
+ * result, because an agent that has learned nothing yet is the ordinary
531
+ * starting state, not a broken tool.
532
+ */
533
+ export const createRecallTool = (store) => ({
534
+ name: RECALL_TOOL_NAME,
535
+ description: 'Search your long-term memory for facts you have remembered. Only your most recent memories appear in your prompt automatically — use this to find everything older.',
536
+ risk: 'safe',
537
+ parameters: {
538
+ type: 'object',
539
+ properties: {
540
+ query: { type: 'string', description: 'What to look for, as plain words. Every word must appear in a fact for it to match.' },
541
+ limit: { type: 'number', description: 'Maximum facts to return. Optional; the store bounds it either way.' },
542
+ },
543
+ required: ['query'],
544
+ },
545
+ async execute(input, session) {
546
+ if (typeof input.query !== 'string') {
547
+ throw new Error('memory.recall requires a "query" string.');
548
+ }
549
+ const limit = typeof input.limit === 'number' ? input.limit : undefined;
550
+ const result = await store.search(session.agent.id, input.query, limit);
551
+ return {
552
+ results: result.entries.map((entry) => ({ id: entry.id, content: entry.content, createdAt: entry.createdAt })),
553
+ truncated: result.truncated,
554
+ };
555
+ },
556
+ });
557
+ export const FORGET_TOOL_NAME = 'memory.forget';
558
+ /**
559
+ * Retires one of the agent's own memories, by id. Tombstoned rather than
560
+ * deleted — which is what makes `safe` defensible for it: the entry stops
561
+ * being live but does not stop existing, so an operator can still see what
562
+ * an agent chose to drop.
563
+ */
564
+ export const createForgetTool = (store) => ({
565
+ name: FORGET_TOOL_NAME,
566
+ description: 'Forget one of your remembered facts by its id (from memory.recall or memory.remember). It stops informing future conversations.',
567
+ risk: 'safe',
568
+ parameters: {
569
+ type: 'object',
570
+ properties: {
571
+ id: { type: 'string', description: 'The id of the memory entry to forget.' },
572
+ },
573
+ required: ['id'],
574
+ },
575
+ async execute(input, session) {
576
+ const id = typeof input.id === 'string' ? input.id.trim() : '';
577
+ if (!id) {
578
+ throw new Error('memory.forget requires a non-empty "id" string.');
579
+ }
580
+ const forgotten = await store.forget(session.agent.id, id);
581
+ if (!forgotten) {
582
+ throw new Error(`No live memory entry with id ${id} belongs to this agent — nothing was forgotten.`);
583
+ }
584
+ return { forgotten: true, id };
585
+ },
586
+ });
369
587
  export const DELEGATE_TOOL_NAME = 'agent.delegate';
370
588
  const DEFAULT_MAX_DELEGATION_DEPTH = 3;
371
589
  /**
@@ -494,4 +712,395 @@ export const createAgentTeam = (agents) => {
494
712
  }
495
713
  return registry;
496
714
  };
715
+ /**
716
+ * The one string form of a destination, `<channel>:<native id>`, used
717
+ * everywhere a destination is *compared*: `Tool.destinationFor`, the
718
+ * permission policy's pre-authorization check, and the schedule row it is
719
+ * checked against. One canonicalization, or two writers of `slack:C01` and
720
+ * `SLACK:C01` would disagree about the same channel.
721
+ */
722
+ export const canonicalDestination = (destination) => `${destination.channel.trim().toLowerCase()}:${destination.to.trim()}`;
723
+ /** `every` strings: a positive integer and one unit — `90s`, `10m`, `2h`, `1d`. */
724
+ export const parseInterval = (text) => {
725
+ const match = /^(\d+)(s|m|h|d)$/.exec(text.trim());
726
+ if (!match) {
727
+ return undefined;
728
+ }
729
+ const amount = Number(match[1]);
730
+ if (!Number.isSafeInteger(amount) || amount <= 0) {
731
+ return undefined;
732
+ }
733
+ const unit = { s: 1_000, m: 60_000, h: 3_600_000, d: 86_400_000 }[match[2]];
734
+ return amount * unit;
735
+ };
736
+ const parseCronField = (field, min, max, label) => {
737
+ const values = new Set();
738
+ for (const part of field.split(',')) {
739
+ const stepMatch = /^([^/]+)(?:\/(\d+))?$/.exec(part);
740
+ if (!stepMatch || part.length === 0) {
741
+ throw new Error(`Invalid cron ${label} field: ${field}`);
742
+ }
743
+ const [, rangeText, stepText] = stepMatch;
744
+ const step = stepText === undefined ? 1 : Number(stepText);
745
+ if (!Number.isSafeInteger(step) || step < 1) {
746
+ throw new Error(`Invalid cron ${label} step: ${part}`);
747
+ }
748
+ let low;
749
+ let high;
750
+ if (rangeText === '*') {
751
+ low = min;
752
+ high = max;
753
+ }
754
+ else {
755
+ const rangeMatch = /^(\d+)(?:-(\d+))?$/.exec(rangeText);
756
+ if (!rangeMatch) {
757
+ throw new Error(`Invalid cron ${label} field: ${field} (numbers only — names are not supported)`);
758
+ }
759
+ low = Number(rangeMatch[1]);
760
+ high = rangeMatch[2] === undefined ? low : Number(rangeMatch[2]);
761
+ // A bare value with a step (`5/15`) reads to the end of the range,
762
+ // matching vixie cron.
763
+ if (rangeMatch[2] === undefined && stepText !== undefined) {
764
+ high = max;
765
+ }
766
+ }
767
+ if (low < min || high > max || low > high) {
768
+ throw new Error(`Cron ${label} value out of range ${min}-${max}: ${part}`);
769
+ }
770
+ for (let value = low; value <= high; value += step) {
771
+ values.add(value);
772
+ }
773
+ }
774
+ return values;
775
+ };
776
+ /**
777
+ * Five fields — minute, hour, day-of-month, month, day-of-week — with `*`,
778
+ * lists, ranges, and steps. Numbers only; day-of-week 0-7 with both 0 and 7
779
+ * as Sunday. Evaluated in the daemon's local time, which is what "every
780
+ * morning at 7" means to the person whose machine it is.
781
+ */
782
+ export const parseCronExpression = (expression) => {
783
+ const fields = expression.trim().split(/\s+/);
784
+ if (fields.length !== 5) {
785
+ throw new Error(`A cron expression has five fields (minute hour day-of-month month day-of-week); got ${fields.length} in "${expression}".`);
786
+ }
787
+ const [minute, hour, dom, month, dow] = fields;
788
+ const daysOfWeek = parseCronField(dow, 0, 7, 'day-of-week');
789
+ if (daysOfWeek.has(7)) {
790
+ daysOfWeek.delete(7);
791
+ daysOfWeek.add(0);
792
+ }
793
+ return {
794
+ minutes: parseCronField(minute, 0, 59, 'minute'),
795
+ hours: parseCronField(hour, 0, 23, 'hour'),
796
+ daysOfMonth: parseCronField(dom, 1, 31, 'day-of-month'),
797
+ months: parseCronField(month, 1, 12, 'month'),
798
+ daysOfWeek,
799
+ domRestricted: dom !== '*',
800
+ dowRestricted: dow !== '*',
801
+ };
802
+ };
803
+ /** How far a cron search looks before concluding the expression never fires. */
804
+ const CRON_SEARCH_DAYS = 366 * 4;
805
+ const nextCronFire = (fields, after) => {
806
+ // Strictly after `after`, at minute granularity.
807
+ const start = new Date(after.getTime());
808
+ start.setSeconds(0, 0);
809
+ start.setMinutes(start.getMinutes() + 1);
810
+ const dayMatches = (date) => {
811
+ if (!fields.months.has(date.getMonth() + 1)) {
812
+ return false;
813
+ }
814
+ const domMatch = fields.daysOfMonth.has(date.getDate());
815
+ const dowMatch = fields.daysOfWeek.has(date.getDay());
816
+ if (fields.domRestricted && fields.dowRestricted) {
817
+ return domMatch || dowMatch;
818
+ }
819
+ return fields.domRestricted ? domMatch : fields.dowRestricted ? dowMatch : true;
820
+ };
821
+ const hours = [...fields.hours].sort((a, b) => a - b);
822
+ const minutes = [...fields.minutes].sort((a, b) => a - b);
823
+ const day = new Date(start.getFullYear(), start.getMonth(), start.getDate());
824
+ for (let offset = 0; offset < CRON_SEARCH_DAYS; offset += 1) {
825
+ if (dayMatches(day)) {
826
+ for (const hour of hours) {
827
+ for (const minute of minutes) {
828
+ const candidate = new Date(day.getFullYear(), day.getMonth(), day.getDate(), hour, minute);
829
+ if (candidate >= start && candidate > after) {
830
+ return candidate;
831
+ }
832
+ }
833
+ }
834
+ }
835
+ day.setDate(day.getDate() + 1);
836
+ }
837
+ // Reachable: `0 0 31 2 *` matches no real date. Creation treats this as
838
+ // a refusal, not a schedule that quietly never runs.
839
+ return undefined;
840
+ };
841
+ /**
842
+ * The slot after `after`, or undefined when there is none — a one-shot
843
+ * already past, or a cron expression that matches no real date. One
844
+ * implementation, because the scheduler advancing a fired slot and the
845
+ * creation path computing the first one must never disagree.
846
+ */
847
+ export const nextFireAfter = (cadence, after) => {
848
+ switch (cadence.kind) {
849
+ case 'every':
850
+ return new Date(after.getTime() + cadence.intervalMs);
851
+ case 'cron':
852
+ return nextCronFire(parseCronExpression(cadence.expression), after);
853
+ case 'at': {
854
+ const at = new Date(cadence.at);
855
+ if (Number.isNaN(at.getTime())) {
856
+ return undefined;
857
+ }
858
+ return at.getTime() > after.getTime() ? at : undefined;
859
+ }
860
+ default:
861
+ return undefined;
862
+ }
863
+ };
864
+ /** One line for a human: `every 30m`, `cron 0 7 * * *`, `once at 2026-…`. */
865
+ export const describeCadence = (cadence) => {
866
+ switch (cadence.kind) {
867
+ case 'every': {
868
+ const units = [[86_400_000, 'd'], [3_600_000, 'h'], [60_000, 'm'], [1_000, 's']];
869
+ for (const [ms, suffix] of units) {
870
+ if (cadence.intervalMs % ms === 0) {
871
+ return `every ${cadence.intervalMs / ms}${suffix}`;
872
+ }
873
+ }
874
+ return `every ${cadence.intervalMs}ms`;
875
+ }
876
+ case 'cron':
877
+ return `cron ${cadence.expression}`;
878
+ case 'at':
879
+ return `once at ${cadence.at}`;
880
+ default:
881
+ return 'unknown';
882
+ }
883
+ };
884
+ /**
885
+ * Metadata a firing's session carries. The schedule id is what the
886
+ * permission carve-out resolves the approved destination from, and
887
+ * `scheduled: true` is what lets a renderer say a turn arrived from a
888
+ * schedule rather than a person.
889
+ */
890
+ export const SCHEDULE_ID_METADATA_KEY = 'scheduleId';
891
+ export const SCHEDULED_TURN_METADATA_KEY = 'scheduled';
892
+ // ---- schedule tools ---------------------------------------------------------
893
+ export const SCHEDULE_EVERY_TOOL_NAME = 'schedule.every';
894
+ export const SCHEDULE_AT_TOOL_NAME = 'schedule.at';
895
+ export const SCHEDULE_LIST_TOOL_NAME = 'schedule.list';
896
+ export const SCHEDULE_CANCEL_TOOL_NAME = 'schedule.cancel';
897
+ export const MESSAGE_SEND_TOOL_NAME = 'message.send';
898
+ const parseDestinationInput = (raw) => {
899
+ if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) {
900
+ return undefined;
901
+ }
902
+ const channel = raw.channel;
903
+ const to = raw.to;
904
+ if (typeof channel !== 'string' || channel.trim().length === 0
905
+ || typeof to !== 'string' || to.trim().length === 0) {
906
+ return undefined;
907
+ }
908
+ return { channel: channel.trim().toLowerCase(), to: to.trim() };
909
+ };
910
+ const DESTINATION_PARAMETER = {
911
+ type: 'object',
912
+ description: 'Where firings report. Omit for a schedule that does not speak — its sends will need approval like any other. The channel kind plus the channel-native conversation id (for Slack, a channel id like C0123456789 that your app is a member of).',
913
+ properties: {
914
+ channel: { type: 'string', description: "Channel kind, e.g. 'slack'." },
915
+ to: { type: 'string', description: 'Channel-native conversation id.' },
916
+ },
917
+ required: ['channel', 'to'],
918
+ };
919
+ /**
920
+ * One schedule as a surface shows it — the CLI table, the control API's
921
+ * listing, and the tool results all render this one projection, so the
922
+ * operator's view and the agent's cannot drift.
923
+ */
924
+ export const describeSchedule = (record) => ({
925
+ id: record.id,
926
+ agentId: record.agentId,
927
+ cadence: describeCadence(record.cadence),
928
+ prompt: record.prompt,
929
+ ...(record.destination ? { destination: canonicalDestination(record.destination) } : {}),
930
+ ...(record.nextFireAt ? { nextFireAt: record.nextFireAt } : {}),
931
+ ...(record.lastFiredAt ? { lastFiredAt: record.lastFiredAt } : {}),
932
+ createdAt: record.createdAt,
933
+ });
934
+ /**
935
+ * The four `schedule.*` tools over one handle.
936
+ *
937
+ * Risk is split per tool, not per toolset: creating a schedule spends
938
+ * future money unattended and (with a destination) mints a standing
939
+ * permission to speak, so `schedule.every` and `schedule.at` are `gated` —
940
+ * the approval of THAT call is the human decision the whole step leans on.
941
+ * `schedule.list` is a read, and `schedule.cancel` only ever narrows
942
+ * authority — it is the reversal the risk note in the spec names — so both
943
+ * are `safe`: a headless agent that set a bad schedule must be able to
944
+ * undo it without waiting for the human whose absence is the problem.
945
+ */
946
+ export const createScheduleTools = (scheduler) => {
947
+ const create = async (session, cadence, input) => {
948
+ const prompt = typeof input.prompt === 'string' ? input.prompt.trim() : '';
949
+ if (!prompt) {
950
+ throw new Error('A schedule needs a non-empty "prompt" — the instruction each firing runs.');
951
+ }
952
+ if (input.destination !== undefined && parseDestinationInput(input.destination) === undefined) {
953
+ throw new Error('"destination" must be { channel, to } with non-empty strings, or omitted.');
954
+ }
955
+ const destination = parseDestinationInput(input.destination);
956
+ const record = await scheduler.create({
957
+ agentId: session.agent.id,
958
+ cadence,
959
+ prompt,
960
+ ...(destination ? { destination } : {}),
961
+ createdBy: session.id,
962
+ });
963
+ return { created: true, schedule: describeSchedule(record) };
964
+ };
965
+ return [
966
+ {
967
+ name: SCHEDULE_EVERY_TOOL_NAME,
968
+ description: 'Set a recurring schedule for yourself: an interval ("30m", "1d") or a five-field cron expression, the prompt each firing runs, and optionally the destination your reports are pre-authorized to post to. Creating a schedule needs human approval once; its firings then run unattended.',
969
+ risk: 'gated',
970
+ parameters: {
971
+ type: 'object',
972
+ properties: {
973
+ every: { type: 'string', description: 'Interval like "90s", "30m", "2h", "1d". Exactly one of "every" or "cron".' },
974
+ cron: { type: 'string', description: 'Five-field cron expression (minute hour day-of-month month day-of-week), local time. Exactly one of "every" or "cron".' },
975
+ prompt: { type: 'string', description: 'The instruction each firing runs, phrased to stand alone.' },
976
+ destination: DESTINATION_PARAMETER,
977
+ },
978
+ required: ['prompt'],
979
+ },
980
+ async execute(input, session) {
981
+ const every = typeof input.every === 'string' ? input.every.trim() : '';
982
+ const cron = typeof input.cron === 'string' ? input.cron.trim() : '';
983
+ if ((every === '') === (cron === '')) {
984
+ throw new Error('Pass exactly one of "every" (an interval) or "cron" (a cron expression).');
985
+ }
986
+ if (every) {
987
+ const intervalMs = parseInterval(every);
988
+ if (intervalMs === undefined) {
989
+ throw new Error(`Not an interval: "${every}". Use a positive integer and one unit — "90s", "30m", "2h", "1d".`);
990
+ }
991
+ return create(session, { kind: 'every', intervalMs }, input);
992
+ }
993
+ parseCronExpression(cron); // Refuse a bad expression here, with its own message.
994
+ return create(session, { kind: 'cron', expression: cron }, input);
995
+ },
996
+ },
997
+ {
998
+ name: SCHEDULE_AT_TOOL_NAME,
999
+ description: 'Schedule a one-shot run of a prompt at a future time (ISO-8601). Needs human approval once; the firing then runs unattended.',
1000
+ risk: 'gated',
1001
+ parameters: {
1002
+ type: 'object',
1003
+ properties: {
1004
+ at: { type: 'string', description: 'When to fire, ISO-8601 (e.g. 2026-09-01T07:00:00). Must be in the future.' },
1005
+ prompt: { type: 'string', description: 'The instruction the firing runs, phrased to stand alone.' },
1006
+ destination: DESTINATION_PARAMETER,
1007
+ },
1008
+ required: ['at', 'prompt'],
1009
+ },
1010
+ async execute(input, session) {
1011
+ const at = typeof input.at === 'string' ? input.at.trim() : '';
1012
+ const parsed = new Date(at);
1013
+ if (!at || Number.isNaN(parsed.getTime())) {
1014
+ throw new Error(`Not a timestamp: "${at}". Use ISO-8601, e.g. 2026-09-01T07:00:00.`);
1015
+ }
1016
+ if (parsed.getTime() <= Date.now()) {
1017
+ throw new Error(`${at} is in the past — a one-shot schedule must name a future time.`);
1018
+ }
1019
+ return create(session, { kind: 'at', at: parsed.toISOString() }, input);
1020
+ },
1021
+ },
1022
+ {
1023
+ name: SCHEDULE_LIST_TOOL_NAME,
1024
+ description: 'List your own schedules: cadence, prompt, destination, and when each fires next.',
1025
+ // A read of state this agent itself created.
1026
+ risk: 'safe',
1027
+ parameters: { type: 'object', properties: {} },
1028
+ async execute(_input, session) {
1029
+ const records = await scheduler.list(session.agent.id);
1030
+ return { schedules: records.map(describeSchedule) };
1031
+ },
1032
+ },
1033
+ {
1034
+ name: SCHEDULE_CANCEL_TOOL_NAME,
1035
+ description: 'Cancel one of your schedules by id. Cancelling also revokes the pre-authorized destination that was approved with it.',
1036
+ // Cancel only ever NARROWS authority — it destroys a human-minted
1037
+ // grant — and it is the reversal that keeps schedule creation short
1038
+ // of `dangerous`. Gating it would leave a headless agent unable to
1039
+ // undo its own schedule for want of the human whose absence is the
1040
+ // point of headless.
1041
+ risk: 'safe',
1042
+ parameters: {
1043
+ type: 'object',
1044
+ properties: {
1045
+ id: { type: 'string', description: 'The schedule id, from schedule.list or the creation result.' },
1046
+ },
1047
+ required: ['id'],
1048
+ },
1049
+ async execute(input, session) {
1050
+ const id = typeof input.id === 'string' ? input.id.trim() : '';
1051
+ if (!id) {
1052
+ throw new Error('schedule.cancel requires a non-empty "id".');
1053
+ }
1054
+ const cancelled = await scheduler.cancel(session.agent.id, id);
1055
+ if (!cancelled) {
1056
+ throw new Error(`No schedule of yours has id ${id}. schedule.list shows what exists.`);
1057
+ }
1058
+ return { cancelled: true, id };
1059
+ },
1060
+ },
1061
+ ];
1062
+ };
1063
+ /**
1064
+ * Post to a channel or DM outside the current conversation — what makes a
1065
+ * scheduled turn observable.
1066
+ *
1067
+ * `gated`, and deliberately not `safe` the way `agent.delegate` is: the
1068
+ * delegate stays inside the fleet, under every per-agent allowlist and the
1069
+ * same approval policy, while this speaks to people who did not ask. The
1070
+ * unattended path is the schedule carve-out — `destinationFor` names where
1071
+ * this call would speak, and the policy allows it exactly when the firing's
1072
+ * schedule was approved with that destination.
1073
+ */
1074
+ export const createMessageSendTool = (send) => ({
1075
+ name: MESSAGE_SEND_TOOL_NAME,
1076
+ description: 'Send a message to a channel or DM you are not currently talking in. Scheduled turns may post to their schedule\'s approved destination without asking; anywhere else needs approval.',
1077
+ risk: 'gated',
1078
+ parameters: {
1079
+ type: 'object',
1080
+ properties: {
1081
+ destination: {
1082
+ ...DESTINATION_PARAMETER,
1083
+ description: 'Where to post: the channel kind plus the channel-native conversation id.',
1084
+ },
1085
+ text: { type: 'string', description: 'The message text.' },
1086
+ },
1087
+ required: ['destination', 'text'],
1088
+ },
1089
+ destinationFor(input) {
1090
+ const destination = parseDestinationInput(input.destination);
1091
+ return destination ? canonicalDestination(destination) : undefined;
1092
+ },
1093
+ async execute(input, session) {
1094
+ const destination = parseDestinationInput(input.destination);
1095
+ if (!destination) {
1096
+ throw new Error('message.send requires "destination" as { channel, to } with non-empty strings.');
1097
+ }
1098
+ const text = typeof input.text === 'string' ? input.text.trim() : '';
1099
+ if (!text) {
1100
+ throw new Error('message.send requires a non-empty "text".');
1101
+ }
1102
+ await send({ agentId: session.agent.id, destination, text });
1103
+ return { sent: true, destination: canonicalDestination(destination) };
1104
+ },
1105
+ });
497
1106
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,GAQd,MAAM,oBAAoB,CAAC;AAE5B,0EAA0E;AAC1E,sEAAsE;AACtE,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ;IACtE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ;IACpE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAChE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IACvE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;IACrE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO;IACpD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IACzE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ;IAClE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CACjD,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC;AAEtC,kFAAkF;AAClF,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAU,EAAE;IACxC,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,UAAkB,EAAE,SAAiB,EAAU,EAAE;IAC9E,MAAM,CAAC,GAAG,UAAU,GAAG,GAAG,CAAC;IAC3B,MAAM,CAAC,GAAG,SAAS,GAAG,GAAG,CAAC;IAC1B,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE;QAC5B,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/D,CAAC,CAAC;IACF,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AACpD,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAa,EAAU,EAAE;IACzD,MAAM,KAAK,GAAG,IAAI,KAAK,SAAS;QAC9B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC;IAC3C,OAAO,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC;AAC5D,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAe,EAAE;IAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC;IACxB,OAAO;QACL,IAAI,EAAE,IAAI;QACV,GAAG;QACH,OAAO,EAAE;YACP,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;YACrB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;YAClC,QAAQ,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;SACpC;QACD,KAAK,EAAE,YAAY;KACpB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE,CACvC,IAAI;KACD,WAAW,EAAE;KACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;KAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC;AAExC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,6BAA6B,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAU,EAAW,EAAE,CACpD,EAAE,CAAC,MAAM,GAAG,CAAC;IACb,wEAAwE;IACxE,qEAAqE;OAClE,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE;OAChB,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;OACnB,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;IACjC,wEAAwE;IACxE,yEAAyE;IACzE,yEAAyE;IACzE,0EAA0E;IAC1E,sEAAsE;IACtE,6CAA6C;OAC1C,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAEjB;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,MAAe,EAAU,EAAE;IACzE,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5D,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,OAAO,GAAG,IAAI,EAAE,CAAC;AACvE,CAAC,CAAC;AAaF,wEAAwE;AACxE,2EAA2E;AAC3E,uEAAuE;AACvE,MAAM,iBAAiB,GAAG,CAAC,IAAa,EAAU,EAAE;IAClD,MAAM,KAAK,GAAG,IAAI,KAAK,SAAS;QAC9B,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,KAAK,CAAC;QACxB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAA0B,EAAE,EAAmB,EAAE;IAC3E,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;IAClD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzD,sEAAsE;IACtE,wCAAwC;IACxC,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,2DAA2D;cACtG,kGAAkG;cAClG,iDAAiD,CACpD,CAAC;IACJ,CAAC;IACD,mEAAmE;IACnE,uEAAuE;IACvE,qEAAqE;IACrE,qCAAqC;IACrC,MAAM,OAAO,GAAG,gBAAgB;QAC9B,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO;QACL,yEAAyE;QACzE,wEAAwE;QACxE,sEAAsE;QACtE,iEAAiE;QACjE,oEAAoE;QACpE,uEAAuE;QACvE,cAAc;QACd,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YACtC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3D,IAAI;QACJ,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC;QACjD,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;AACJ,CAAC,CAAC;AAqBF,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAU,CAAC;AACtE,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,aAAa,CAAU,CAAC;AAKzD,MAAM,OAAO,GAAG,CAAC,KAAa,EAAU,EAAE;IACxC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IACE,OAAO,CAAC,MAAM,IAAI,CAAC;QACnB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACjD,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EACrD,CAAC;QACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAOF,0EAA0E;AAC1E,iEAAiE;AACjE,MAAM,oBAAoB,GAAG,CAAC,KAAe,EAAmB,EAAE;IAChE,MAAM,OAAO,GAA+B,EAAE,CAAC;IAC/C,MAAM,KAAK,GAA6B,EAAE,CAAC;IAC3C,IAAI,WAAiC,CAAC;IAEtC,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5D,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,qDAAqD,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,uCAAuC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,WAAW,GAAG,SAAS,CAAC;QAExB,IAAK,cAAoC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,KAAK,CAAC,GAAkB,CAAC,GAAG,IAAI,CAAC;YACjC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,6BAA6B;gBAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,sCAAsC,MAAM,GAAG,CAAC,CAAC;gBAChG,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACvB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,CAAE,gBAAsC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CACb,kCAAkC,GAAG,sBAAsB,CAAC,GAAG,gBAAgB,EAAE,GAAG,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAClH,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,iBAAiB,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,CAAC,GAAoB,CAAC,GAAG,MAAM,CAAC;IACzC,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,UAA4B,EAAE,EAAc,EAAE;IACtF,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjD,IAAI,WAAW,GAAoB,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC9D,IAAI,IAAI,GAAG,UAAU,CAAC;IAEtB,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3D,WAAW,GAAG,oBAAoB,CAChC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAC/D,CAAC;QACF,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC;IAEvC,MAAM,KAAK,GAAG,WAAW,CAAC;QACxB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,CAAC,CAAC;IAEH,OAAO;QACL,KAAK;QACL,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnD,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAgB,EAAU,EAAE;IACrD,MAAM,KAAK,GAAa,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAEpF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACrC,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI;QAC1B,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC3B,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;KAC/B,EAAE,CAAC;QACX,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;YACtB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,+CAA+C,CAAC,CAAC;IACvF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAElD;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAuB,EAAQ,EAAE,CAAC,CAAC;IACpE,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,mGAAmG;IAChH,sEAAsE;IACtE,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wEAAwE,EAAE;SAChH;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;IACD,KAAK,CAAC,OAAO,CAAC,KAAiB,EAAE,OAAgB;QAC/C,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACpF,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;IAC5C,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAuBnD,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EACjC,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,GAAG,4BAA4B,GACnB,EAAQ,EAAE;IAC9B,MAAM,YAAY,GAAqB,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,yEAAyE;IACzE,wEAAwE;IACxE,+DAA+D;IAC/D,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,MAAM,YAAY,GAAG,GAAW,EAAE,CAChC,GAAG,eAAe,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAElE,OAAO;QACP,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,oEAAoE;QACjF,yEAAyE;QACzE,qEAAqE;QACrE,0EAA0E;QAC1E,yEAAyE;QACzE,qEAAqE;QACrE,yEAAyE;QACzE,uEAAuE;QACvE,SAAS;QACT,EAAE;QACF,yEAAyE;QACzE,sEAAsE;QACtE,sEAAsE;QACtE,wEAAwE;QACxE,0EAA0E;QAC1E,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;gBACjF,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;aAChF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;SAC9B;QACD,KAAK,CAAC,OAAO,CAAC,KAAiB,EAAE,OAAgB,EAAE,OAAO;YACxD,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;YAC3E,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,QAAQ,EAAE,eAAe,KAAK,QAAQ;gBACjE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAClC,CAAC,CAAC,CAAC,CAAC;YACN,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,IAAI,CAAC,CAAC;YACnE,CAAC;YAED,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACxE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,MAAM,CAAC,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,CAAC;YAED,eAAe,IAAI,CAAC,CAAC;YACrB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;gBAChC,SAAS,EAAE,GAAG,OAAO,CAAC,EAAE,aAAa,MAAM,CAAC,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,YAAY,EAAE,EAAE;gBAC/E,KAAK,EAAE,MAAM;gBACb,WAAW,EAAE,MAAM;gBACnB,QAAQ,EAAE;oBACR,eAAe,EAAE,KAAK,GAAG,CAAC;oBAC1B,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;oBAC7B,aAAa,EAAE,OAAO,OAAO,CAAC,QAAQ,EAAE,aAAa,KAAK,QAAQ;wBAChE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa;wBAChC,CAAC,CAAC,OAAO,CAAC,EAAE;iBACf;gBACD,8DAA8D;gBAC9D,gEAAgE;gBAChE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvD,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;iBAC/B,OAAO,EAAE;iBACT,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEjF,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,IAAI;gBAClB,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,YAAY;gBACrC,SAAS,EAAE,MAAM,CAAC,EAAE;aACrB,CAAC;QACJ,CAAC;KACA,CAAC;AACJ,CAAC,CAAC;AAYF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,KAAuB,EACvB,QAAyB,EACZ,EAAE;IACf,uEAAuE;IACvE,oEAAoE;IACpE,uEAAuE;IACvE,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtC,GAAG,IAAI;QACP,KAAK,EAAE,IAAI,CAAC,KAAK,YAAY,MAAM;YACjC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACjD,CAAC,CAAC,IAAI,CAAC,KAAK;KACf,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,KAAK,CAAC,KAAK;YACT,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,IAAI,OAAgB,CAAC;gBACrB,IAAI,IAAI,CAAC,KAAK,YAAY,MAAM,EAAE,CAAC;oBACjC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;oBACzB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBACD,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,IAAI,CAAC,KAAK,CAAC;gBACpB,CAAC;YACH,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAyB,EAAiB,EAAE;IAC1E,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stratusagent/agents",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -17,7 +17,7 @@
17
17
  "node": ">=22.13 <23 || >=23.4"
18
18
  },
19
19
  "dependencies": {
20
- "@stratusagent/core": "0.6.0"
20
+ "@stratusagent/core": "0.8.0"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@types/node": "^24.6.0",