@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 +248 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +634 -25
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,IAAI,EACV,MAAM,oBAAoB,CAAC;AAgB5B;;;;;GAKG;AACH,eAAO,MAAM,YAAY,YAAY,CAAC;AAwBtC;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,KAAG,MAKjD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,KAAG,WAalD,CAAC;AAQF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,QAAyB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAUtC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,cAAc,GAAI,IAAI,MAAM,KAAG,OAa5B,CAAC;AAEjB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG,MAIjE,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAYD;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,QAAO,gBAAqB,KAAG,
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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 (!
|
|
269
|
-
|
|
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
|
-
|
|
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
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
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":"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"}
|
|
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.
|
|
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.
|
|
20
|
+
"@stratusagent/core": "0.8.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@types/node": "^24.6.0",
|