@useactor/core 0.1.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.
Files changed (153) hide show
  1. package/dist/ai-sdk-provider.d.ts +54 -0
  2. package/dist/ai-sdk-provider.d.ts.map +1 -0
  3. package/dist/ai-sdk-provider.js +335 -0
  4. package/dist/ai-sdk-provider.js.map +1 -0
  5. package/dist/app-runtime.d.ts +83 -0
  6. package/dist/app-runtime.d.ts.map +1 -0
  7. package/dist/app-runtime.js +504 -0
  8. package/dist/app-runtime.js.map +1 -0
  9. package/dist/artifacts.d.ts +49 -0
  10. package/dist/artifacts.d.ts.map +1 -0
  11. package/dist/artifacts.js +50 -0
  12. package/dist/artifacts.js.map +1 -0
  13. package/dist/cli-defined-tools.d.ts +17 -0
  14. package/dist/cli-defined-tools.d.ts.map +1 -0
  15. package/dist/cli-defined-tools.js +146 -0
  16. package/dist/cli-defined-tools.js.map +1 -0
  17. package/dist/codex-oauth-provider.d.ts +30 -0
  18. package/dist/codex-oauth-provider.d.ts.map +1 -0
  19. package/dist/codex-oauth-provider.js +453 -0
  20. package/dist/codex-oauth-provider.js.map +1 -0
  21. package/dist/events.d.ts +133 -0
  22. package/dist/events.d.ts.map +1 -0
  23. package/dist/events.js +46 -0
  24. package/dist/events.js.map +1 -0
  25. package/dist/feedback.d.ts +29 -0
  26. package/dist/feedback.d.ts.map +1 -0
  27. package/dist/feedback.js +62 -0
  28. package/dist/feedback.js.map +1 -0
  29. package/dist/history.d.ts +34 -0
  30. package/dist/history.d.ts.map +1 -0
  31. package/dist/history.js +118 -0
  32. package/dist/history.js.map +1 -0
  33. package/dist/in-memory-runtime.d.ts +12 -0
  34. package/dist/in-memory-runtime.d.ts.map +1 -0
  35. package/dist/in-memory-runtime.js +491 -0
  36. package/dist/in-memory-runtime.js.map +1 -0
  37. package/dist/index.d.ts +36 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +36 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/integrations.d.ts +37 -0
  42. package/dist/integrations.d.ts.map +1 -0
  43. package/dist/integrations.js +48 -0
  44. package/dist/integrations.js.map +1 -0
  45. package/dist/local-event-logger.d.ts +19 -0
  46. package/dist/local-event-logger.d.ts.map +1 -0
  47. package/dist/local-event-logger.js +163 -0
  48. package/dist/local-event-logger.js.map +1 -0
  49. package/dist/local-event-schema.d.ts +99 -0
  50. package/dist/local-event-schema.d.ts.map +1 -0
  51. package/dist/local-event-schema.js +43 -0
  52. package/dist/local-event-schema.js.map +1 -0
  53. package/dist/local-tools.d.ts +99 -0
  54. package/dist/local-tools.d.ts.map +1 -0
  55. package/dist/local-tools.js +418 -0
  56. package/dist/local-tools.js.map +1 -0
  57. package/dist/mcp-server-config.d.ts +16 -0
  58. package/dist/mcp-server-config.d.ts.map +1 -0
  59. package/dist/mcp-server-config.js +75 -0
  60. package/dist/mcp-server-config.js.map +1 -0
  61. package/dist/mock-provider.d.ts +8 -0
  62. package/dist/mock-provider.d.ts.map +1 -0
  63. package/dist/mock-provider.js +47 -0
  64. package/dist/mock-provider.js.map +1 -0
  65. package/dist/model-catalog.d.ts +24 -0
  66. package/dist/model-catalog.d.ts.map +1 -0
  67. package/dist/model-catalog.js +92 -0
  68. package/dist/model-catalog.js.map +1 -0
  69. package/dist/monoid-integration.d.ts +33 -0
  70. package/dist/monoid-integration.d.ts.map +1 -0
  71. package/dist/monoid-integration.js +184 -0
  72. package/dist/monoid-integration.js.map +1 -0
  73. package/dist/openai-oauth.d.ts +69 -0
  74. package/dist/openai-oauth.d.ts.map +1 -0
  75. package/dist/openai-oauth.js +127 -0
  76. package/dist/openai-oauth.js.map +1 -0
  77. package/dist/permission-grant-store.d.ts +7 -0
  78. package/dist/permission-grant-store.d.ts.map +1 -0
  79. package/dist/permission-grant-store.js +77 -0
  80. package/dist/permission-grant-store.js.map +1 -0
  81. package/dist/permission-grants.d.ts +38 -0
  82. package/dist/permission-grants.d.ts.map +1 -0
  83. package/dist/permission-grants.js +93 -0
  84. package/dist/permission-grants.js.map +1 -0
  85. package/dist/personas.d.ts +51 -0
  86. package/dist/personas.d.ts.map +1 -0
  87. package/dist/personas.js +137 -0
  88. package/dist/personas.js.map +1 -0
  89. package/dist/project-tool-registry.d.ts +16 -0
  90. package/dist/project-tool-registry.d.ts.map +1 -0
  91. package/dist/project-tool-registry.js +86 -0
  92. package/dist/project-tool-registry.js.map +1 -0
  93. package/dist/projects.d.ts +88 -0
  94. package/dist/projects.d.ts.map +1 -0
  95. package/dist/projects.js +243 -0
  96. package/dist/projects.js.map +1 -0
  97. package/dist/prompt-context.d.ts +13 -0
  98. package/dist/prompt-context.d.ts.map +1 -0
  99. package/dist/prompt-context.js +170 -0
  100. package/dist/prompt-context.js.map +1 -0
  101. package/dist/proposed-plan.d.ts +24 -0
  102. package/dist/proposed-plan.d.ts.map +1 -0
  103. package/dist/proposed-plan.js +74 -0
  104. package/dist/proposed-plan.js.map +1 -0
  105. package/dist/providers.d.ts +53 -0
  106. package/dist/providers.d.ts.map +1 -0
  107. package/dist/providers.js +31 -0
  108. package/dist/providers.js.map +1 -0
  109. package/dist/question-requests.d.ts +39 -0
  110. package/dist/question-requests.d.ts.map +1 -0
  111. package/dist/question-requests.js +135 -0
  112. package/dist/question-requests.js.map +1 -0
  113. package/dist/renderer-api.d.ts +52 -0
  114. package/dist/renderer-api.d.ts.map +1 -0
  115. package/dist/renderer-api.js +2 -0
  116. package/dist/renderer-api.js.map +1 -0
  117. package/dist/runtime-tool-execution.d.ts +22 -0
  118. package/dist/runtime-tool-execution.d.ts.map +1 -0
  119. package/dist/runtime-tool-execution.js +245 -0
  120. package/dist/runtime-tool-execution.js.map +1 -0
  121. package/dist/runtime.d.ts +154 -0
  122. package/dist/runtime.d.ts.map +1 -0
  123. package/dist/runtime.js +184 -0
  124. package/dist/runtime.js.map +1 -0
  125. package/dist/secrets.d.ts +75 -0
  126. package/dist/secrets.d.ts.map +1 -0
  127. package/dist/secrets.js +255 -0
  128. package/dist/secrets.js.map +1 -0
  129. package/dist/session-actions.d.ts +45 -0
  130. package/dist/session-actions.d.ts.map +1 -0
  131. package/dist/session-actions.js +393 -0
  132. package/dist/session-actions.js.map +1 -0
  133. package/dist/skills.d.ts +43 -0
  134. package/dist/skills.d.ts.map +1 -0
  135. package/dist/skills.js +333 -0
  136. package/dist/skills.js.map +1 -0
  137. package/dist/test/setup.d.ts +2 -0
  138. package/dist/test/setup.d.ts.map +1 -0
  139. package/dist/test/setup.js +17 -0
  140. package/dist/test/setup.js.map +1 -0
  141. package/dist/tool-requests.d.ts +58 -0
  142. package/dist/tool-requests.d.ts.map +1 -0
  143. package/dist/tool-requests.js +122 -0
  144. package/dist/tool-requests.js.map +1 -0
  145. package/dist/tools.d.ts +45 -0
  146. package/dist/tools.d.ts.map +1 -0
  147. package/dist/tools.js +50 -0
  148. package/dist/tools.js.map +1 -0
  149. package/dist/wyrdos-integration.d.ts +32 -0
  150. package/dist/wyrdos-integration.d.ts.map +1 -0
  151. package/dist/wyrdos-integration.js +183 -0
  152. package/dist/wyrdos-integration.js.map +1 -0
  153. package/package.json +51 -0
@@ -0,0 +1,393 @@
1
+ import path from "node:path";
2
+ import { access, mkdir, readFile, writeFile } from "node:fs/promises";
3
+ import { appendActorSessionIndexEntry, createSessionRolloutWriter, } from "@useactor/storage";
4
+ import { appendSessionIndexFromSession, discoverSessionRolloutPath, discoverSessions, } from "./history.js";
5
+ import { createAssistantMessageStartEvent, createRuntimeDoneEvent, createStreamDeltaEvent, createUserMessageEvent, } from "./events.js";
6
+ import { createSessionMessage, normalizeSessionMessage, sessionMessageText, } from "./runtime.js";
7
+ export async function renameSession(options) {
8
+ const title = options.title.trim();
9
+ if (!title) {
10
+ throw new Error("Session title cannot be empty.");
11
+ }
12
+ const session = await findPersistedSession(options.env, options.sessionId);
13
+ const now = new Date().toISOString();
14
+ await appendActorSessionIndexEntry({
15
+ ...actorPathOptions(options.env),
16
+ entry: {
17
+ sessionId: options.sessionId,
18
+ title,
19
+ createdAt: session.createdAt ?? now,
20
+ updatedAt: now,
21
+ rolloutPath: session.rolloutPath,
22
+ ...(session.project ? { project: session.project } : {}),
23
+ ...(session.persona ? { persona: session.persona } : {}),
24
+ ...(session.model ? { model: session.model } : {}),
25
+ ...(session.summary ? { summary: session.summary } : {}),
26
+ },
27
+ });
28
+ }
29
+ export async function forkSession(options) {
30
+ const source = await findPersistedSession(options.env, options.sessionId);
31
+ const events = await readSessionRuntimeEvents({
32
+ ...actorPathOptions(options.env),
33
+ sessionId: options.sessionId,
34
+ });
35
+ const messages = runtimeEventsToSessionMessages(events);
36
+ if (messages.length === 0) {
37
+ throw new Error(`No transcript events found for selected session: ${options.sessionId}`);
38
+ }
39
+ return createPersistedSessionFromMessages({
40
+ ...actorPathOptions(options.env),
41
+ runtime: options.runtime,
42
+ title: `Fork of ${source.title ?? source.sessionId}`,
43
+ messages,
44
+ source,
45
+ });
46
+ }
47
+ export async function compactSession(options) {
48
+ const source = await findPersistedSession(options.env, options.sessionId);
49
+ const events = await readSessionRuntimeEvents({
50
+ ...actorPathOptions(options.env),
51
+ sessionId: options.sessionId,
52
+ });
53
+ const sourceMessages = runtimeEventsToSessionMessages(events);
54
+ if (sourceMessages.length === 0) {
55
+ throw new Error(`No transcript events found for selected session: ${options.sessionId}`);
56
+ }
57
+ const context = sessionContextFromDiscoveredSession(source);
58
+ const summary = await options.runtime.summarizeSession({
59
+ messages: sourceMessages,
60
+ ...context,
61
+ });
62
+ if (!summary) {
63
+ throw new Error("Compact session summary failed.");
64
+ }
65
+ const createdAt = new Date().toISOString();
66
+ const messages = [
67
+ createSessionMessage({
68
+ id: "compact_request",
69
+ message: {
70
+ role: "user",
71
+ content: "Continue from this compacted session summary.",
72
+ },
73
+ createdAt,
74
+ ...context,
75
+ }),
76
+ createSessionMessage({
77
+ id: "compact_summary",
78
+ message: { role: "assistant", content: summary },
79
+ createdAt,
80
+ ...context,
81
+ }),
82
+ ];
83
+ return createPersistedSessionFromMessages({
84
+ ...actorPathOptions(options.env),
85
+ runtime: options.runtime,
86
+ title: `Compact of ${source.title ?? source.sessionId}`,
87
+ messages,
88
+ source,
89
+ });
90
+ }
91
+ export async function getLastAgentMessage(options) {
92
+ const events = await readSessionRuntimeEvents(options);
93
+ const messages = runtimeEventsToSessionMessages(events);
94
+ const last = [...messages]
95
+ .reverse()
96
+ .find((message) => message.role === "assistant" && sessionMessageText(message).trim());
97
+ if (!last) {
98
+ throw new Error("No assistant message found in this session.");
99
+ }
100
+ return sessionMessageText(last).trim();
101
+ }
102
+ export async function formatSessionTranscript(options) {
103
+ const session = await findPersistedSession(options.env, options.sessionId);
104
+ const events = await readSessionRuntimeEvents(options);
105
+ const lines = [
106
+ `# ${session.title ?? session.sessionId}`,
107
+ "",
108
+ `Session: ${session.sessionId}`,
109
+ session.project?.name ? `Project: ${session.project.name}` : undefined,
110
+ session.updatedAt ? `Updated: ${session.updatedAt}` : undefined,
111
+ "",
112
+ ...formatRuntimeEventsAsMarkdown(events),
113
+ ].filter((line) => line !== undefined);
114
+ return `${lines.join("\n")}\n`;
115
+ }
116
+ export async function exportSessionTranscript(options) {
117
+ const session = await findPersistedSession(options.env, options.sessionId);
118
+ const content = await formatSessionTranscript(options);
119
+ const filePath = await nextAvailableFilePath(options.cwd, `${safeFilename(session.title ?? session.sessionId)}.md`);
120
+ await mkdir(path.dirname(filePath), { recursive: true });
121
+ await writeFile(filePath, content, "utf8");
122
+ return { filePath, content };
123
+ }
124
+ export async function readSessionRuntimeEvents(options) {
125
+ const rolloutPath = await discoverSessionRolloutPath({
126
+ ...actorPathOptions(options.env),
127
+ sessionId: options.sessionId,
128
+ });
129
+ if (!rolloutPath) {
130
+ throw new Error(`Session not found: ${options.sessionId}`);
131
+ }
132
+ let file = "";
133
+ try {
134
+ file = await readFile(rolloutPath, "utf8");
135
+ }
136
+ catch {
137
+ return [];
138
+ }
139
+ return file
140
+ .split("\n")
141
+ .map((line) => line.trim())
142
+ .filter(Boolean)
143
+ .flatMap((line) => {
144
+ try {
145
+ const parsed = JSON.parse(line);
146
+ return parsed.sessionId === options.sessionId ? [parsed] : [];
147
+ }
148
+ catch {
149
+ return [];
150
+ }
151
+ });
152
+ }
153
+ export function runtimeEventsToSessionMessages(events) {
154
+ const messages = [];
155
+ const assistantMessages = new Map();
156
+ const pushedAssistantMessageIds = new Set();
157
+ const openPlanMessageIds = new Set();
158
+ const closePlanBlock = (messageId) => {
159
+ if (!openPlanMessageIds.has(messageId))
160
+ return;
161
+ const assistant = assistantMessages.get(messageId);
162
+ if (!assistant) {
163
+ openPlanMessageIds.delete(messageId);
164
+ return;
165
+ }
166
+ assistantMessages.set(messageId, {
167
+ ...assistant,
168
+ content: `${assistant.content}</proposed_plan>`,
169
+ });
170
+ openPlanMessageIds.delete(messageId);
171
+ };
172
+ const pushAssistantMessage = (messageId) => {
173
+ if (pushedAssistantMessageIds.has(messageId))
174
+ return;
175
+ closePlanBlock(messageId);
176
+ const assistant = assistantMessages.get(messageId);
177
+ if (!assistant || !assistant.content.trim())
178
+ return;
179
+ messages.push(createSessionMessage({
180
+ id: assistant.id,
181
+ message: { role: "assistant", content: assistant.content },
182
+ createdAt: assistant.createdAt,
183
+ }));
184
+ pushedAssistantMessageIds.add(messageId);
185
+ };
186
+ for (const event of events) {
187
+ if (event.type === "user_message") {
188
+ messages.push(normalizeSessionMessage(event.message));
189
+ continue;
190
+ }
191
+ if (event.type === "assistant_message_start") {
192
+ assistantMessages.set(event.messageId, {
193
+ id: event.messageId,
194
+ content: "",
195
+ createdAt: event.timestamp,
196
+ });
197
+ continue;
198
+ }
199
+ if (event.type === "stream_delta") {
200
+ closePlanBlock(event.messageId);
201
+ const existing = assistantMessages.get(event.messageId) ?? {
202
+ id: event.messageId,
203
+ content: "",
204
+ createdAt: event.timestamp,
205
+ };
206
+ assistantMessages.set(event.messageId, {
207
+ ...existing,
208
+ content: `${existing.content}${event.delta}`,
209
+ });
210
+ continue;
211
+ }
212
+ if (event.type === "plan_delta") {
213
+ const existing = assistantMessages.get(event.messageId) ?? {
214
+ id: event.messageId,
215
+ content: "",
216
+ createdAt: event.timestamp,
217
+ };
218
+ const prefix = openPlanMessageIds.has(event.messageId)
219
+ ? ""
220
+ : "\n<proposed_plan>";
221
+ assistantMessages.set(event.messageId, {
222
+ ...existing,
223
+ content: `${existing.content}${prefix}${event.delta}`,
224
+ });
225
+ openPlanMessageIds.add(event.messageId);
226
+ continue;
227
+ }
228
+ if (event.type === "done" && event.messageId) {
229
+ pushAssistantMessage(event.messageId);
230
+ }
231
+ }
232
+ for (const messageId of assistantMessages.keys()) {
233
+ pushAssistantMessage(messageId);
234
+ }
235
+ return messages;
236
+ }
237
+ async function createPersistedSessionFromMessages(options) {
238
+ const context = sessionContextFromDiscoveredSession(options.source);
239
+ const session = await options.runtime.createSession({
240
+ title: options.title,
241
+ initialMessages: options.messages,
242
+ ...context,
243
+ });
244
+ const rolloutWriter = await createSessionRolloutWriter({
245
+ ...actorPathOptions(options.env),
246
+ runId: session.id,
247
+ });
248
+ await appendSessionIndexFromSession({
249
+ ...actorPathOptions(options.env),
250
+ session,
251
+ rolloutPath: rolloutWriter.filePath,
252
+ sessionContext: context,
253
+ });
254
+ const events = messagesToRuntimeEvents({
255
+ session,
256
+ messages: options.messages,
257
+ });
258
+ await writeEvents(rolloutWriter, events);
259
+ return { session, rolloutPath: rolloutWriter.filePath, events };
260
+ }
261
+ function messagesToRuntimeEvents(input) {
262
+ const events = [];
263
+ const runId = `${input.session.id}_seed`;
264
+ let sequence = 0;
265
+ const nextTimestamp = () => new Date(Date.parse(input.session.createdAt) + sequence++).toISOString();
266
+ for (const message of input.messages) {
267
+ const normalized = normalizeSessionMessage(message);
268
+ const text = sessionMessageText(normalized);
269
+ if (!text.trim())
270
+ continue;
271
+ if (normalized.role === "user") {
272
+ events.push(createUserMessageEvent({ sessionId: input.session.id, runId, timestamp: nextTimestamp() }, { ...normalized, id: `${normalized.id}_seed` }));
273
+ continue;
274
+ }
275
+ if (normalized.role === "assistant") {
276
+ const messageId = `${normalized.id}_seed`;
277
+ events.push(createAssistantMessageStartEvent({ sessionId: input.session.id, runId, timestamp: nextTimestamp() }, messageId));
278
+ events.push(createStreamDeltaEvent({ sessionId: input.session.id, runId, timestamp: nextTimestamp() }, messageId, text));
279
+ events.push(createRuntimeDoneEvent({ sessionId: input.session.id, runId, timestamp: nextTimestamp() }, { messageId }));
280
+ }
281
+ }
282
+ return events;
283
+ }
284
+ async function writeEvents(writer, events) {
285
+ for (const event of events) {
286
+ await writer.appendEvent({ ...event });
287
+ }
288
+ }
289
+ async function findPersistedSession(env, sessionId) {
290
+ const sessions = await discoverSessions(actorPathOptions(env));
291
+ const session = sessions.entries.find((entry) => entry.sessionId === sessionId);
292
+ if (!session) {
293
+ throw new Error(`Session not found: ${sessionId}`);
294
+ }
295
+ return session;
296
+ }
297
+ function actorPathOptions(env) {
298
+ return env ? { env } : {};
299
+ }
300
+ function sessionContextFromDiscoveredSession(session) {
301
+ return {
302
+ ...(session.project ? { project: session.project } : {}),
303
+ ...(session.persona ? { persona: session.persona } : {}),
304
+ ...(session.model ? { model: session.model } : {}),
305
+ };
306
+ }
307
+ function formatRuntimeEventsAsMarkdown(events) {
308
+ const lines = [];
309
+ const assistantText = new Map();
310
+ const pushLines = (values) => {
311
+ lines.push(...values.filter((value) => value !== undefined));
312
+ };
313
+ const flushAssistant = (messageId) => {
314
+ const text = assistantText.get(messageId)?.trim();
315
+ if (!text)
316
+ return;
317
+ lines.push("## Assistant", "", text, "");
318
+ assistantText.delete(messageId);
319
+ };
320
+ for (const event of events) {
321
+ if (event.type === "user_message") {
322
+ lines.push("## User", "", sessionMessageText(event.message).trim(), "");
323
+ continue;
324
+ }
325
+ if (event.type === "assistant_message_start") {
326
+ assistantText.set(event.messageId, "");
327
+ continue;
328
+ }
329
+ if (event.type === "stream_delta") {
330
+ assistantText.set(event.messageId, `${assistantText.get(event.messageId) ?? ""}${event.delta}`);
331
+ continue;
332
+ }
333
+ if (event.type === "done" && event.messageId) {
334
+ flushAssistant(event.messageId);
335
+ continue;
336
+ }
337
+ if (event.type === "tool_call" || event.type === "tool_request") {
338
+ pushLines([
339
+ `> Tool ${event.type === "tool_call" ? "call" : "request"}: ${event.tool.toolId}`,
340
+ event.tool.target ? `> Target: ${event.tool.target}` : undefined,
341
+ `> ${event.tool.reason}`,
342
+ "",
343
+ ]);
344
+ continue;
345
+ }
346
+ if (event.type === "tool_result") {
347
+ lines.push(`> Tool result: ${event.toolId} (${event.status})`, "");
348
+ continue;
349
+ }
350
+ if (event.type === "question_request") {
351
+ lines.push("> Question request:", ...event.questions.map((question) => `> - ${question.question}`), "");
352
+ continue;
353
+ }
354
+ if (event.type === "question_response") {
355
+ lines.push("> Question answered", "");
356
+ continue;
357
+ }
358
+ if (event.type === "artifact") {
359
+ lines.push(`> Artifact: ${event.name} (${event.kind})`, "");
360
+ continue;
361
+ }
362
+ if (event.type === "error") {
363
+ lines.push(`> Error: ${event.message}`, "");
364
+ }
365
+ }
366
+ for (const messageId of assistantText.keys()) {
367
+ flushAssistant(messageId);
368
+ }
369
+ return lines.filter((line) => line !== undefined);
370
+ }
371
+ function safeFilename(value) {
372
+ const safe = value
373
+ .toLowerCase()
374
+ .replace(/[^a-z0-9._-]+/g, "-")
375
+ .replace(/^-+|-+$/g, "")
376
+ .slice(0, 80);
377
+ return safe || "session-transcript";
378
+ }
379
+ async function nextAvailableFilePath(directory, filename) {
380
+ const extension = path.extname(filename);
381
+ const base = path.basename(filename, extension);
382
+ for (let index = 0; index < 1000; index += 1) {
383
+ const candidate = path.join(directory, index === 0 ? filename : `${base}-${index + 1}${extension}`);
384
+ try {
385
+ await access(candidate);
386
+ }
387
+ catch {
388
+ return candidate;
389
+ }
390
+ }
391
+ throw new Error("Could not choose an export filename.");
392
+ }
393
+ //# sourceMappingURL=session-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-actions.js","sourceRoot":"","sources":["../src/session-actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { type ActorPathResolverOptions } from "@useactor/storage";
2
+ import type { ToolDefinition } from "./tools.js";
3
+ export interface SkillMetadata {
4
+ readonly name: string;
5
+ readonly invocationName?: string;
6
+ readonly description: string;
7
+ readonly path: string;
8
+ readonly scope: "user" | "project";
9
+ readonly origin: "project" | "actor" | "builtin" | "codex" | "agents";
10
+ readonly instructions?: string;
11
+ }
12
+ export interface SkillLoadError {
13
+ readonly path: string;
14
+ readonly message: string;
15
+ }
16
+ export interface ListSkillsOptions extends ActorPathResolverOptions {
17
+ readonly projectRoot?: string;
18
+ }
19
+ export interface ListSkillsResult {
20
+ readonly skills: readonly SkillMetadata[];
21
+ readonly errors: readonly SkillLoadError[];
22
+ }
23
+ export interface CreateSkillInput {
24
+ readonly name: string;
25
+ readonly description: string;
26
+ readonly body: string;
27
+ readonly scope: "global" | "project";
28
+ readonly overwrite?: boolean;
29
+ }
30
+ export interface CreateSkillOptions extends ActorPathResolverOptions {
31
+ readonly projectRoot?: string;
32
+ }
33
+ export interface CreateSkillResult {
34
+ readonly path: string;
35
+ readonly name: string;
36
+ readonly scope: "global" | "project";
37
+ readonly overwritten: boolean;
38
+ }
39
+ export declare function listSkills(options?: ListSkillsOptions): Promise<ListSkillsResult>;
40
+ export declare function buildSkillsPromptSection(skills: readonly SkillMetadata[]): string | undefined;
41
+ export declare function createActorSkill(input: CreateSkillInput, options?: CreateSkillOptions): Promise<CreateSkillResult>;
42
+ export declare function createSkillTool(options?: ActorPathResolverOptions): ToolDefinition;
43
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoB,KAAK,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB;IACjE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAmB,SAAQ,wBAAwB;IAClE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAsBD,wBAAsB,UAAU,CAC9B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAyD3B;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,aAAa,EAAE,GAC/B,MAAM,GAAG,SAAS,CASpB;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,gBAAgB,EACvB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CA8C5B;AAED,wBAAgB,eAAe,CAC7B,OAAO,GAAE,wBAA6B,GACrC,cAAc,CAqChB"}