nomoreide 0.1.96 → 0.1.97
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/cli/profile.js +12 -8
- package/dist/cli/profile.js.map +1 -1
- package/dist/core/agent-env/claude-reader.js +12 -4
- package/dist/core/agent-env/claude-reader.js.map +1 -1
- package/dist/core/agent-env/codex-reader.js +5 -4
- package/dist/core/agent-env/codex-reader.js.map +1 -1
- package/dist/core/agent-env/managed-plugins.d.ts +5 -0
- package/dist/core/agent-env/managed-plugins.js +43 -11
- package/dist/core/agent-env/managed-plugins.js.map +1 -1
- package/dist/core/agent-env-plugin-uninstall.js +36 -19
- package/dist/core/agent-env-plugin-uninstall.js.map +1 -1
- package/dist/core/agent-profiles/apply.d.ts +6 -1
- package/dist/core/agent-profiles/apply.js +37 -1
- package/dist/core/agent-profiles/apply.js.map +1 -1
- package/dist/core/agent-profiles/index.d.ts +3 -2
- package/dist/core/agent-profiles/index.js +3 -2
- package/dist/core/agent-profiles/index.js.map +1 -1
- package/dist/core/agent-profiles/plugin-apply.d.ts +16 -0
- package/dist/core/agent-profiles/plugin-apply.js +383 -0
- package/dist/core/agent-profiles/plugin-apply.js.map +1 -0
- package/dist/core/agent-profiles/plugin-bundle.d.ts +6 -0
- package/dist/core/agent-profiles/plugin-bundle.js +32 -0
- package/dist/core/agent-profiles/plugin-bundle.js.map +1 -0
- package/dist/core/agent-profiles/registry-transfer.js +6 -1
- package/dist/core/agent-profiles/registry-transfer.js.map +1 -1
- package/dist/core/agent-profiles/store.d.ts +3 -1
- package/dist/core/agent-profiles/store.js +92 -5
- package/dist/core/agent-profiles/store.js.map +1 -1
- package/dist/core/agent-profiles/transfer.d.ts +1 -0
- package/dist/core/agent-profiles/transfer.js +183 -5
- package/dist/core/agent-profiles/transfer.js.map +1 -1
- package/dist/core/agent-profiles/types.d.ts +105 -3
- package/dist/core/agent-profiles/types.js +15 -1
- package/dist/core/agent-profiles/types.js.map +1 -1
- package/dist/core/agent-transcripts.d.ts +6 -4
- package/dist/core/agent-transcripts.js +20 -12
- package/dist/core/agent-transcripts.js.map +1 -1
- package/dist/core/docker-stats.d.ts +2 -0
- package/dist/core/docker-stats.js +24 -0
- package/dist/core/docker-stats.js.map +1 -1
- package/dist/core/metrics-store.d.ts +11 -1
- package/dist/core/metrics-store.js +63 -5
- package/dist/core/metrics-store.js.map +1 -1
- package/dist/core/one-time-skills.d.ts +27 -0
- package/dist/core/one-time-skills.js +185 -0
- package/dist/core/one-time-skills.js.map +1 -0
- package/dist/core/system-processes.d.ts +29 -0
- package/dist/core/system-processes.js +119 -0
- package/dist/core/system-processes.js.map +1 -0
- package/dist/mcp/tools/agent-profiles.js +42 -10
- package/dist/mcp/tools/agent-profiles.js.map +1 -1
- package/dist/web/client/assets/{code-editor-0KKgooZa.js → code-editor-Bv3tCQrj.js} +1 -1
- package/dist/web/client/assets/index-BeJHDwLO.css +1 -0
- package/dist/web/client/assets/index-zb3rhV5y.js +308 -0
- package/dist/web/client/assets/system-process-table-q3WxburN.js +1 -0
- package/dist/web/client/index.html +2 -2
- package/dist/web/routes/agent-profile-routes.js +2 -1
- package/dist/web/routes/agent-profile-routes.js.map +1 -1
- package/dist/web/routes/git-routes.js +5 -0
- package/dist/web/routes/git-routes.js.map +1 -1
- package/dist/web/routes/index.js +2 -0
- package/dist/web/routes/index.js.map +1 -1
- package/dist/web/routes/metrics-routes.js +30 -4
- package/dist/web/routes/metrics-routes.js.map +1 -1
- package/dist/web/routes/skills-routes.d.ts +2 -0
- package/dist/web/routes/skills-routes.js +49 -0
- package/dist/web/routes/skills-routes.js.map +1 -0
- package/dist/web/routes/terminal-routes.js +28 -3
- package/dist/web/routes/terminal-routes.js.map +1 -1
- package/package.json +2 -1
- package/dist/web/client/assets/index-BT_kqOsy.css +0 -1
- package/dist/web/client/assets/index-CWkw1l1F.js +0 -242
|
@@ -89,6 +89,44 @@ export declare const profileSkillSchema: z.ZodObject<{
|
|
|
89
89
|
}, {
|
|
90
90
|
name: string;
|
|
91
91
|
}>;
|
|
92
|
+
export declare const profilePluginSchema: z.ZodObject<{
|
|
93
|
+
name: z.ZodString;
|
|
94
|
+
sourceAgent: z.ZodEnum<["claude", "codex", "antigravity"]>;
|
|
95
|
+
source: z.ZodOptional<z.ZodString>;
|
|
96
|
+
version: z.ZodOptional<z.ZodString>;
|
|
97
|
+
managed: z.ZodOptional<z.ZodBoolean>;
|
|
98
|
+
digest: z.ZodOptional<z.ZodString>;
|
|
99
|
+
bundleKey: z.ZodString;
|
|
100
|
+
pluginSkills: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
101
|
+
pluginMcps: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
102
|
+
pluginAgents: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
103
|
+
pluginCommands: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
104
|
+
}, "strip", z.ZodTypeAny, {
|
|
105
|
+
name: string;
|
|
106
|
+
sourceAgent: "claude" | "codex" | "antigravity";
|
|
107
|
+
bundleKey: string;
|
|
108
|
+
version?: string | undefined;
|
|
109
|
+
pluginMcps?: string[] | undefined;
|
|
110
|
+
pluginAgents?: string[] | undefined;
|
|
111
|
+
pluginCommands?: string[] | undefined;
|
|
112
|
+
pluginSkills?: string[] | undefined;
|
|
113
|
+
source?: string | undefined;
|
|
114
|
+
managed?: boolean | undefined;
|
|
115
|
+
digest?: string | undefined;
|
|
116
|
+
}, {
|
|
117
|
+
name: string;
|
|
118
|
+
sourceAgent: "claude" | "codex" | "antigravity";
|
|
119
|
+
bundleKey: string;
|
|
120
|
+
version?: string | undefined;
|
|
121
|
+
pluginMcps?: string[] | undefined;
|
|
122
|
+
pluginAgents?: string[] | undefined;
|
|
123
|
+
pluginCommands?: string[] | undefined;
|
|
124
|
+
pluginSkills?: string[] | undefined;
|
|
125
|
+
source?: string | undefined;
|
|
126
|
+
managed?: boolean | undefined;
|
|
127
|
+
digest?: string | undefined;
|
|
128
|
+
}>;
|
|
129
|
+
export type ProfilePlugin = z.infer<typeof profilePluginSchema>;
|
|
92
130
|
export declare const PROFILE_NAME_PATTERN: RegExp;
|
|
93
131
|
export declare const profileSchema: z.ZodObject<{
|
|
94
132
|
name: z.ZodString;
|
|
@@ -136,10 +174,60 @@ export declare const profileSchema: z.ZodObject<{
|
|
|
136
174
|
}, {
|
|
137
175
|
name: string;
|
|
138
176
|
}>, "many">>;
|
|
177
|
+
plugins: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
178
|
+
name: z.ZodString;
|
|
179
|
+
sourceAgent: z.ZodEnum<["claude", "codex", "antigravity"]>;
|
|
180
|
+
source: z.ZodOptional<z.ZodString>;
|
|
181
|
+
version: z.ZodOptional<z.ZodString>;
|
|
182
|
+
managed: z.ZodOptional<z.ZodBoolean>;
|
|
183
|
+
digest: z.ZodOptional<z.ZodString>;
|
|
184
|
+
bundleKey: z.ZodString;
|
|
185
|
+
pluginSkills: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
186
|
+
pluginMcps: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
187
|
+
pluginAgents: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
188
|
+
pluginCommands: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
189
|
+
}, "strip", z.ZodTypeAny, {
|
|
190
|
+
name: string;
|
|
191
|
+
sourceAgent: "claude" | "codex" | "antigravity";
|
|
192
|
+
bundleKey: string;
|
|
193
|
+
version?: string | undefined;
|
|
194
|
+
pluginMcps?: string[] | undefined;
|
|
195
|
+
pluginAgents?: string[] | undefined;
|
|
196
|
+
pluginCommands?: string[] | undefined;
|
|
197
|
+
pluginSkills?: string[] | undefined;
|
|
198
|
+
source?: string | undefined;
|
|
199
|
+
managed?: boolean | undefined;
|
|
200
|
+
digest?: string | undefined;
|
|
201
|
+
}, {
|
|
202
|
+
name: string;
|
|
203
|
+
sourceAgent: "claude" | "codex" | "antigravity";
|
|
204
|
+
bundleKey: string;
|
|
205
|
+
version?: string | undefined;
|
|
206
|
+
pluginMcps?: string[] | undefined;
|
|
207
|
+
pluginAgents?: string[] | undefined;
|
|
208
|
+
pluginCommands?: string[] | undefined;
|
|
209
|
+
pluginSkills?: string[] | undefined;
|
|
210
|
+
source?: string | undefined;
|
|
211
|
+
managed?: boolean | undefined;
|
|
212
|
+
digest?: string | undefined;
|
|
213
|
+
}>, "many">>;
|
|
139
214
|
}, "strip", z.ZodTypeAny, {
|
|
140
215
|
skills: {
|
|
141
216
|
name: string;
|
|
142
217
|
}[];
|
|
218
|
+
plugins: {
|
|
219
|
+
name: string;
|
|
220
|
+
sourceAgent: "claude" | "codex" | "antigravity";
|
|
221
|
+
bundleKey: string;
|
|
222
|
+
version?: string | undefined;
|
|
223
|
+
pluginMcps?: string[] | undefined;
|
|
224
|
+
pluginAgents?: string[] | undefined;
|
|
225
|
+
pluginCommands?: string[] | undefined;
|
|
226
|
+
pluginSkills?: string[] | undefined;
|
|
227
|
+
source?: string | undefined;
|
|
228
|
+
managed?: boolean | undefined;
|
|
229
|
+
digest?: string | undefined;
|
|
230
|
+
}[];
|
|
143
231
|
name: string;
|
|
144
232
|
mcps: Record<string, {
|
|
145
233
|
command: string;
|
|
@@ -160,6 +248,19 @@ export declare const profileSchema: z.ZodObject<{
|
|
|
160
248
|
skills?: {
|
|
161
249
|
name: string;
|
|
162
250
|
}[] | undefined;
|
|
251
|
+
plugins?: {
|
|
252
|
+
name: string;
|
|
253
|
+
sourceAgent: "claude" | "codex" | "antigravity";
|
|
254
|
+
bundleKey: string;
|
|
255
|
+
version?: string | undefined;
|
|
256
|
+
pluginMcps?: string[] | undefined;
|
|
257
|
+
pluginAgents?: string[] | undefined;
|
|
258
|
+
pluginCommands?: string[] | undefined;
|
|
259
|
+
pluginSkills?: string[] | undefined;
|
|
260
|
+
source?: string | undefined;
|
|
261
|
+
managed?: boolean | undefined;
|
|
262
|
+
digest?: string | undefined;
|
|
263
|
+
}[] | undefined;
|
|
163
264
|
description?: string | undefined;
|
|
164
265
|
sourceAgent?: "claude" | "codex" | "antigravity" | undefined;
|
|
165
266
|
mcps?: Record<string, {
|
|
@@ -193,7 +294,7 @@ export declare const credentialSpecSchema: z.ZodObject<{
|
|
|
193
294
|
export type CredentialSpec = z.infer<typeof credentialSpecSchema>;
|
|
194
295
|
/** `manifest.json` inside a portable archive. */
|
|
195
296
|
export declare const profileManifestSchema: z.ZodObject<{
|
|
196
|
-
schemaVersion: z.ZodLiteral<1>;
|
|
297
|
+
schemaVersion: z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>]>;
|
|
197
298
|
profileName: z.ZodString;
|
|
198
299
|
createdBy: z.ZodOptional<z.ZodObject<{
|
|
199
300
|
tool: z.ZodString;
|
|
@@ -219,7 +320,7 @@ export declare const profileManifestSchema: z.ZodObject<{
|
|
|
219
320
|
required?: boolean | undefined;
|
|
220
321
|
}>, "many">>;
|
|
221
322
|
}, "strip", z.ZodTypeAny, {
|
|
222
|
-
schemaVersion: 1;
|
|
323
|
+
schemaVersion: 1 | 2;
|
|
223
324
|
profileName: string;
|
|
224
325
|
createdBy?: {
|
|
225
326
|
version: string;
|
|
@@ -231,7 +332,7 @@ export declare const profileManifestSchema: z.ZodObject<{
|
|
|
231
332
|
description?: string | undefined;
|
|
232
333
|
}[] | undefined;
|
|
233
334
|
}, {
|
|
234
|
-
schemaVersion: 1;
|
|
335
|
+
schemaVersion: 1 | 2;
|
|
235
336
|
profileName: string;
|
|
236
337
|
createdBy?: {
|
|
237
338
|
version: string;
|
|
@@ -250,6 +351,7 @@ export interface ProfileSummary {
|
|
|
250
351
|
sourceAgent?: Profile["sourceAgent"];
|
|
251
352
|
mcpCount: number;
|
|
252
353
|
skillCount: number;
|
|
354
|
+
pluginCount: number;
|
|
253
355
|
updatedAt: string;
|
|
254
356
|
}
|
|
255
357
|
export declare function slugifyProfileName(input: string): string;
|
|
@@ -31,6 +31,19 @@ export const profileMcpSchema = z.discriminatedUnion("kind", [
|
|
|
31
31
|
export const profileSkillSchema = z.object({
|
|
32
32
|
name: z.string().min(1),
|
|
33
33
|
});
|
|
34
|
+
export const profilePluginSchema = z.object({
|
|
35
|
+
name: z.string().min(1),
|
|
36
|
+
sourceAgent: z.enum(["claude", "codex", "antigravity"]),
|
|
37
|
+
source: z.string().optional(),
|
|
38
|
+
version: z.string().optional(),
|
|
39
|
+
managed: z.boolean().optional(),
|
|
40
|
+
digest: z.string().regex(/^[a-f0-9]{64}$/).optional(),
|
|
41
|
+
bundleKey: z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/),
|
|
42
|
+
pluginSkills: z.array(z.string()).optional(),
|
|
43
|
+
pluginMcps: z.array(z.string()).optional(),
|
|
44
|
+
pluginAgents: z.array(z.string()).optional(),
|
|
45
|
+
pluginCommands: z.array(z.string()).optional(),
|
|
46
|
+
});
|
|
34
47
|
export const PROFILE_NAME_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;
|
|
35
48
|
export const profileSchema = z.object({
|
|
36
49
|
name: z.string().regex(PROFILE_NAME_PATTERN),
|
|
@@ -39,6 +52,7 @@ export const profileSchema = z.object({
|
|
|
39
52
|
sourceAgent: z.enum(["claude", "codex", "antigravity"]).optional(),
|
|
40
53
|
mcps: z.record(profileMcpSchema).default({}),
|
|
41
54
|
skills: z.array(profileSkillSchema).default([]),
|
|
55
|
+
plugins: z.array(profilePluginSchema).default([]),
|
|
42
56
|
});
|
|
43
57
|
/** Credential a portable archive needs filled in at import time. */
|
|
44
58
|
export const credentialSpecSchema = z.object({
|
|
@@ -48,7 +62,7 @@ export const credentialSpecSchema = z.object({
|
|
|
48
62
|
});
|
|
49
63
|
/** `manifest.json` inside a portable archive. */
|
|
50
64
|
export const profileManifestSchema = z.object({
|
|
51
|
-
schemaVersion: z.literal(1),
|
|
65
|
+
schemaVersion: z.union([z.literal(1), z.literal(2)]),
|
|
52
66
|
profileName: z.string().min(1),
|
|
53
67
|
createdBy: z.object({ tool: z.string(), version: z.string() }).optional(),
|
|
54
68
|
credentials: z.array(credentialSpecSchema).optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/agent-profiles/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,GAAG,EAAE,eAAe,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,OAAO,EAAE,eAAe,CAAC,QAAQ,EAAE;IACnC,GAAG,EAAE,eAAe,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC3D,qBAAqB;IACrB,sBAAsB;CACvB,CAAC,CAAC;AAMH,sFAAsF;AACtF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,8BAA8B,CAAC;AAEnE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,kFAAkF;IAClF,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/agent-profiles/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,8 @@ export interface AgentTranscript {
|
|
|
12
12
|
updatedAt: string;
|
|
13
13
|
}
|
|
14
14
|
export interface ListAgentTranscriptsOptions {
|
|
15
|
-
|
|
15
|
+
/** Omit to list recent sessions across every project. */
|
|
16
|
+
repoPath?: string;
|
|
16
17
|
limit?: number;
|
|
17
18
|
/** Overridable for tests; defaults to the real home directory. */
|
|
18
19
|
homeDir?: string;
|
|
@@ -20,8 +21,9 @@ export interface ListAgentTranscriptsOptions {
|
|
|
20
21
|
codexHome?: string;
|
|
21
22
|
}
|
|
22
23
|
/**
|
|
23
|
-
* Prior Claude and Codex sessions
|
|
24
|
-
* written first. Metadata only — the
|
|
25
|
-
* because resuming hands the conversation
|
|
24
|
+
* Prior Claude and Codex sessions for one repository, or every project when
|
|
25
|
+
* `repoPath` is omitted, most recently written first. Metadata only — the
|
|
26
|
+
* transcript bodies are never surfaced because resuming hands the conversation
|
|
27
|
+
* back to the CLI that rendered it.
|
|
26
28
|
*/
|
|
27
29
|
export declare function listAgentTranscripts(options: ListAgentTranscriptsOptions): Promise<AgentTranscript[]>;
|
|
@@ -12,7 +12,7 @@ import { createInterface } from "node:readline";
|
|
|
12
12
|
const MAX_HEAD_LINES = 500;
|
|
13
13
|
/** Upper bound on Codex rollout files opened per listing (they carry no path index). */
|
|
14
14
|
const MAX_CODEX_SCAN = 400;
|
|
15
|
-
/** Enough history for the dock picker
|
|
15
|
+
/** Enough history per provider for the dock picker without letting one crowd out the other. */
|
|
16
16
|
const DEFAULT_TRANSCRIPT_LIMIT = 100;
|
|
17
17
|
const MAX_TITLE = 200;
|
|
18
18
|
/**
|
|
@@ -144,7 +144,7 @@ async function readCodexTranscript(filePath, expectedCwd) {
|
|
|
144
144
|
cwd = body.cwd;
|
|
145
145
|
if (typeof body.timestamp === "string")
|
|
146
146
|
startedAt = body.timestamp;
|
|
147
|
-
return cwd !== expectedCwd;
|
|
147
|
+
return Boolean(expectedCwd && cwd !== expectedCwd);
|
|
148
148
|
}
|
|
149
149
|
if (!title && body.type === "message" && body.role === "user") {
|
|
150
150
|
const text = codexText(body.content);
|
|
@@ -153,7 +153,7 @@ async function readCodexTranscript(filePath, expectedCwd) {
|
|
|
153
153
|
}
|
|
154
154
|
return Boolean(title);
|
|
155
155
|
});
|
|
156
|
-
if (!id || cwd !== expectedCwd)
|
|
156
|
+
if (!id || !cwd || (expectedCwd && cwd !== expectedCwd))
|
|
157
157
|
return null;
|
|
158
158
|
const { mtime } = await stat(filePath);
|
|
159
159
|
return {
|
|
@@ -175,15 +175,16 @@ async function listDir(path) {
|
|
|
175
175
|
}
|
|
176
176
|
async function claudeTranscripts(homeDir, repoPath) {
|
|
177
177
|
const root = join(homeDir, ".claude", "projects");
|
|
178
|
-
const key = pathKey(repoPath);
|
|
179
|
-
const dirs = (await listDir(root)).filter((name) => pathKey(name) === key);
|
|
178
|
+
const key = repoPath ? pathKey(repoPath) : null;
|
|
179
|
+
const dirs = (await listDir(root)).filter((name) => !key || pathKey(name) === key);
|
|
180
180
|
const results = [];
|
|
181
181
|
for (const dir of dirs) {
|
|
182
182
|
const files = (await listDir(join(root, dir))).filter((name) => name.endsWith(".jsonl"));
|
|
183
183
|
for (const file of files) {
|
|
184
184
|
const transcript = await readClaudeTranscript(join(root, dir, file), file.replace(/\.jsonl$/, ""));
|
|
185
|
-
if (transcript && transcript.cwd === repoPath)
|
|
185
|
+
if (transcript && (!repoPath || transcript.cwd === repoPath)) {
|
|
186
186
|
results.push(transcript);
|
|
187
|
+
}
|
|
187
188
|
}
|
|
188
189
|
}
|
|
189
190
|
return results;
|
|
@@ -218,9 +219,10 @@ async function codexTranscripts(codexHome, repoPath) {
|
|
|
218
219
|
return results;
|
|
219
220
|
}
|
|
220
221
|
/**
|
|
221
|
-
* Prior Claude and Codex sessions
|
|
222
|
-
* written first. Metadata only — the
|
|
223
|
-
* because resuming hands the conversation
|
|
222
|
+
* Prior Claude and Codex sessions for one repository, or every project when
|
|
223
|
+
* `repoPath` is omitted, most recently written first. Metadata only — the
|
|
224
|
+
* transcript bodies are never surfaced because resuming hands the conversation
|
|
225
|
+
* back to the CLI that rendered it.
|
|
224
226
|
*/
|
|
225
227
|
export async function listAgentTranscripts(options) {
|
|
226
228
|
const { repoPath, limit = DEFAULT_TRANSCRIPT_LIMIT } = options;
|
|
@@ -232,9 +234,15 @@ export async function listAgentTranscripts(options) {
|
|
|
232
234
|
claudeTranscripts(homeDir, repoPath),
|
|
233
235
|
codexTranscripts(codexHome, repoPath),
|
|
234
236
|
]);
|
|
235
|
-
|
|
237
|
+
const newest = (transcripts) => transcripts
|
|
236
238
|
.filter((transcript) => transcript.title)
|
|
237
|
-
.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt))
|
|
238
|
-
|
|
239
|
+
.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
|
|
240
|
+
if (options.limit !== undefined) {
|
|
241
|
+
return newest([...claude, ...codex]).slice(0, limit);
|
|
242
|
+
}
|
|
243
|
+
return newest([
|
|
244
|
+
...newest(claude).slice(0, DEFAULT_TRANSCRIPT_LIMIT),
|
|
245
|
+
...newest(codex).slice(0, DEFAULT_TRANSCRIPT_LIMIT),
|
|
246
|
+
]);
|
|
239
247
|
}
|
|
240
248
|
//# sourceMappingURL=agent-transcripts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-transcripts.js","sourceRoot":"","sources":["../../src/core/agent-transcripts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAiBhD;;;;;GAKG;AACH,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,wFAAwF;AACxF,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B
|
|
1
|
+
{"version":3,"file":"agent-transcripts.js","sourceRoot":"","sources":["../../src/core/agent-transcripts.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,8 @@ export declare function listDockerStats(): Promise<DockerContainerStats[]>;
|
|
|
13
13
|
export declare function parseDockerStatsLines(stdout: string): DockerContainerStats[];
|
|
14
14
|
/** Docker formats percentages as "2.43%", or "--" when it has no sample. */
|
|
15
15
|
export declare function parsePercent(value: string): number | null;
|
|
16
|
+
/** Parse the used side of Docker's "184MiB / 2GiB" memory value into MiB. */
|
|
17
|
+
export declare function parseDockerMemoryUsageMb(value: string): number | null;
|
|
16
18
|
/**
|
|
17
19
|
* `docker stats` keys rows by the short (12-char) ID while `docker ps` reports
|
|
18
20
|
* the same short form — but callers may hold either, so match on prefix in
|
|
@@ -28,6 +28,30 @@ export function parsePercent(value) {
|
|
|
28
28
|
const parsed = Number.parseFloat(value.replace("%", "").trim());
|
|
29
29
|
return Number.isFinite(parsed) ? parsed : null;
|
|
30
30
|
}
|
|
31
|
+
/** Parse the used side of Docker's "184MiB / 2GiB" memory value into MiB. */
|
|
32
|
+
export function parseDockerMemoryUsageMb(value) {
|
|
33
|
+
const used = value.split("/", 1)[0]?.trim() ?? "";
|
|
34
|
+
const matched = /^(\d+(?:\.\d+)?)\s*([kmgt]?i?b)$/i.exec(used);
|
|
35
|
+
if (!matched)
|
|
36
|
+
return null;
|
|
37
|
+
const amount = Number.parseFloat(matched[1]);
|
|
38
|
+
if (!Number.isFinite(amount))
|
|
39
|
+
return null;
|
|
40
|
+
const unit = matched[2].toLowerCase();
|
|
41
|
+
const bytesPerUnit = {
|
|
42
|
+
b: 1,
|
|
43
|
+
kb: 1_000,
|
|
44
|
+
kib: 1024,
|
|
45
|
+
mb: 1_000_000,
|
|
46
|
+
mib: 1024 ** 2,
|
|
47
|
+
gb: 1_000_000_000,
|
|
48
|
+
gib: 1024 ** 3,
|
|
49
|
+
tb: 1_000_000_000_000,
|
|
50
|
+
tib: 1024 ** 4,
|
|
51
|
+
};
|
|
52
|
+
const bytes = amount * (bytesPerUnit[unit] ?? 0);
|
|
53
|
+
return bytes > 0 ? bytes / 1024 ** 2 : 0;
|
|
54
|
+
}
|
|
31
55
|
/**
|
|
32
56
|
* `docker stats` keys rows by the short (12-char) ID while `docker ps` reports
|
|
33
57
|
* the same short form — but callers may hold either, so match on prefix in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker-stats.js","sourceRoot":"","sources":["../../src/core/docker-stats.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAc3E,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO,qBAAqB,CAC1B,MAAM,UAAU,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CACrE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,oBAAoB,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;QAC1C,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACjE,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACrB,OAAO;YACL,EAAE;YACF,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACpD,aAAa,EAAE,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvD,WAAW,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC;YACxC,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;YAC/B,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC;SACpC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,KAA6B;IAE7B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgC,CAAC;IACtD,KAAK,MAAM,KAAK,IAAI,KAAK;QAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACtD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,KAAwC,EACxC,WAAmB;IAEnB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACrC,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;IAC7E,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"docker-stats.js","sourceRoot":"","sources":["../../src/core/docker-stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { ProcessManager } from "./process-manager.js";
|
|
2
|
+
import { type DockerContainerStats } from "./docker-stats.js";
|
|
2
3
|
import { HostMetricsCollector, type HostMetricSample } from "./host-metrics.js";
|
|
3
4
|
import { type ProcessTreeSummary } from "./process-tree.js";
|
|
5
|
+
import { type SystemProcess } from "./system-processes.js";
|
|
4
6
|
export interface MetricSample {
|
|
5
7
|
t: number;
|
|
6
8
|
cpu: number;
|
|
@@ -18,7 +20,9 @@ export interface ServiceActivityMetric {
|
|
|
18
20
|
sampledAt: number;
|
|
19
21
|
cpuPercent: number;
|
|
20
22
|
rssMb: number;
|
|
21
|
-
processCount
|
|
23
|
+
processCount?: number;
|
|
24
|
+
memoryPercent?: number;
|
|
25
|
+
source: "local" | "docker";
|
|
22
26
|
}
|
|
23
27
|
export interface ActivityMetrics {
|
|
24
28
|
sampleIntervalMs: number;
|
|
@@ -27,6 +31,7 @@ export interface ActivityMetrics {
|
|
|
27
31
|
samples: HostMetricSample[];
|
|
28
32
|
};
|
|
29
33
|
services: Record<string, ServiceActivityMetric>;
|
|
34
|
+
systemProcesses: SystemProcess[];
|
|
30
35
|
}
|
|
31
36
|
export interface MetricsStoreOptions {
|
|
32
37
|
manager: ProcessManager;
|
|
@@ -37,6 +42,8 @@ export interface MetricsStoreOptions {
|
|
|
37
42
|
cwd?: string;
|
|
38
43
|
hostCollector?: Pick<HostMetricsCollector, "sample">;
|
|
39
44
|
processTreeReader?: (rootPid: number) => Promise<ProcessTreeSummary>;
|
|
45
|
+
systemProcessReader?: () => Promise<SystemProcess[]>;
|
|
46
|
+
dockerStatsReader?: () => Promise<DockerContainerStats[]>;
|
|
40
47
|
now?: () => number;
|
|
41
48
|
}
|
|
42
49
|
/**
|
|
@@ -50,9 +57,12 @@ export declare class MetricsStore {
|
|
|
50
57
|
private readonly capacity;
|
|
51
58
|
private readonly hostCollector;
|
|
52
59
|
private readonly processTreeReader;
|
|
60
|
+
private readonly systemProcessReader;
|
|
61
|
+
private readonly dockerStatsReader;
|
|
53
62
|
private readonly now;
|
|
54
63
|
private readonly buffers;
|
|
55
64
|
private readonly hostSamples;
|
|
65
|
+
private systemProcesses;
|
|
56
66
|
private timer?;
|
|
57
67
|
private sampling;
|
|
58
68
|
constructor(options: MetricsStoreOptions);
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { findStatsFor, indexStatsById, listDockerStats, parseDockerMemoryUsageMb, } from "./docker-stats.js";
|
|
1
2
|
import { HostMetricsCollector, } from "./host-metrics.js";
|
|
2
3
|
import { readProcessTree, } from "./process-tree.js";
|
|
4
|
+
import { classifySystemProcesses, readSystemProcesses, } from "./system-processes.js";
|
|
3
5
|
/**
|
|
4
6
|
* In-memory CPU/RSS time series for managed services. Polls process trees on a
|
|
5
7
|
* fixed cadence; PIDs that disappear are kept in the buffer so the chart can
|
|
@@ -11,9 +13,12 @@ export class MetricsStore {
|
|
|
11
13
|
capacity;
|
|
12
14
|
hostCollector;
|
|
13
15
|
processTreeReader;
|
|
16
|
+
systemProcessReader;
|
|
17
|
+
dockerStatsReader;
|
|
14
18
|
now;
|
|
15
19
|
buffers = new Map();
|
|
16
20
|
hostSamples = [];
|
|
21
|
+
systemProcesses = [];
|
|
17
22
|
timer;
|
|
18
23
|
sampling = false;
|
|
19
24
|
constructor(options) {
|
|
@@ -23,6 +28,8 @@ export class MetricsStore {
|
|
|
23
28
|
this.hostCollector =
|
|
24
29
|
options.hostCollector ?? new HostMetricsCollector(options.cwd ?? process.cwd());
|
|
25
30
|
this.processTreeReader = options.processTreeReader ?? readProcessTree;
|
|
31
|
+
this.systemProcessReader = options.systemProcessReader ?? readSystemProcesses;
|
|
32
|
+
this.dockerStatsReader = options.dockerStatsReader ?? listDockerStats;
|
|
26
33
|
this.now = options.now ?? Date.now;
|
|
27
34
|
}
|
|
28
35
|
start() {
|
|
@@ -63,9 +70,11 @@ export class MetricsStore {
|
|
|
63
70
|
service: name,
|
|
64
71
|
startedAt: buffer.startedAt,
|
|
65
72
|
sampledAt: buffer.latest.sampledAt,
|
|
66
|
-
cpuPercent: buffer.latest.
|
|
67
|
-
rssMb: buffer.latest.
|
|
68
|
-
processCount: buffer.latest.
|
|
73
|
+
cpuPercent: buffer.latest.cpuPercent,
|
|
74
|
+
rssMb: buffer.latest.rssMb,
|
|
75
|
+
processCount: buffer.latest.processCount,
|
|
76
|
+
memoryPercent: buffer.latest.memoryPercent,
|
|
77
|
+
source: buffer.latest.source,
|
|
69
78
|
};
|
|
70
79
|
}
|
|
71
80
|
return {
|
|
@@ -75,6 +84,9 @@ export class MetricsStore {
|
|
|
75
84
|
samples: this.hostSamples.map(cloneHostSample),
|
|
76
85
|
},
|
|
77
86
|
services,
|
|
87
|
+
systemProcesses: classifySystemProcesses(this.systemProcesses, Object.values(statuses)
|
|
88
|
+
.filter((status) => status.state === "running" && status.pid)
|
|
89
|
+
.map((status) => ({ pid: status.pid, service: status.name }))),
|
|
78
90
|
};
|
|
79
91
|
}
|
|
80
92
|
async sampleOnce() {
|
|
@@ -85,9 +97,20 @@ export class MetricsStore {
|
|
|
85
97
|
const { services } = this.manager.status();
|
|
86
98
|
const now = this.now();
|
|
87
99
|
const hostSample = this.hostCollector.sample(now).catch(() => undefined);
|
|
100
|
+
const systemProcesses = this.systemProcessReader().catch(() => undefined);
|
|
101
|
+
const dockerServices = Object.values(services).filter((status) => status.state === "running" &&
|
|
102
|
+
status.kind === "docker-compose" &&
|
|
103
|
+
status.containerId);
|
|
104
|
+
const dockerStats = dockerServices.length > 0
|
|
105
|
+
? this.dockerStatsReader().catch(() => undefined)
|
|
106
|
+
: Promise.resolve(undefined);
|
|
88
107
|
await Promise.all(Object.values(services).map(async (status) => {
|
|
89
|
-
if (status.state !== "running" ||
|
|
108
|
+
if (status.state !== "running" ||
|
|
109
|
+
!status.pid ||
|
|
110
|
+
status.kind === "docker-compose" ||
|
|
111
|
+
status.kind === "ssh") {
|
|
90
112
|
return;
|
|
113
|
+
}
|
|
91
114
|
let buffer = this.buffers.get(status.name);
|
|
92
115
|
// New run (or first sample) → reset the series so the chart starts at startedAt.
|
|
93
116
|
if (!buffer || buffer.startedAt !== status.startedAt) {
|
|
@@ -97,7 +120,13 @@ export class MetricsStore {
|
|
|
97
120
|
try {
|
|
98
121
|
const tree = await this.processTreeReader(status.pid);
|
|
99
122
|
buffer.samples.push({ t: now, cpu: tree.cpuPercent, rss: tree.rssMb });
|
|
100
|
-
buffer.latest = {
|
|
123
|
+
buffer.latest = {
|
|
124
|
+
sampledAt: now,
|
|
125
|
+
cpuPercent: tree.cpuPercent,
|
|
126
|
+
rssMb: tree.rssMb,
|
|
127
|
+
processCount: tree.processCount,
|
|
128
|
+
source: "local",
|
|
129
|
+
};
|
|
101
130
|
if (buffer.samples.length > this.capacity) {
|
|
102
131
|
buffer.samples.splice(0, buffer.samples.length - this.capacity);
|
|
103
132
|
}
|
|
@@ -106,6 +135,32 @@ export class MetricsStore {
|
|
|
106
135
|
// ps may briefly fail right after spawn / during exit — skip this tick.
|
|
107
136
|
}
|
|
108
137
|
}));
|
|
138
|
+
const nextDockerStats = await dockerStats;
|
|
139
|
+
if (nextDockerStats) {
|
|
140
|
+
const statsById = indexStatsById(nextDockerStats);
|
|
141
|
+
for (const status of dockerServices) {
|
|
142
|
+
const stats = findStatsFor(statsById, status.containerId);
|
|
143
|
+
const rssMb = stats ? parseDockerMemoryUsageMb(stats.memoryUsage) : null;
|
|
144
|
+
if (!stats || stats.cpuPercent === null || rssMb === null)
|
|
145
|
+
continue;
|
|
146
|
+
let buffer = this.buffers.get(status.name);
|
|
147
|
+
if (!buffer || buffer.startedAt !== status.startedAt) {
|
|
148
|
+
buffer = { startedAt: status.startedAt, samples: [] };
|
|
149
|
+
this.buffers.set(status.name, buffer);
|
|
150
|
+
}
|
|
151
|
+
buffer.samples.push({ t: now, cpu: stats.cpuPercent, rss: rssMb });
|
|
152
|
+
buffer.latest = {
|
|
153
|
+
sampledAt: now,
|
|
154
|
+
cpuPercent: stats.cpuPercent,
|
|
155
|
+
rssMb,
|
|
156
|
+
memoryPercent: stats.memoryPercent ?? undefined,
|
|
157
|
+
source: "docker",
|
|
158
|
+
};
|
|
159
|
+
if (buffer.samples.length > this.capacity) {
|
|
160
|
+
buffer.samples.splice(0, buffer.samples.length - this.capacity);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
109
164
|
const nextHostSample = await hostSample;
|
|
110
165
|
if (nextHostSample) {
|
|
111
166
|
this.hostSamples.push(nextHostSample);
|
|
@@ -113,6 +168,9 @@ export class MetricsStore {
|
|
|
113
168
|
this.hostSamples.splice(0, this.hostSamples.length - this.capacity);
|
|
114
169
|
}
|
|
115
170
|
}
|
|
171
|
+
const nextSystemProcesses = await systemProcesses;
|
|
172
|
+
if (nextSystemProcesses)
|
|
173
|
+
this.systemProcesses = nextSystemProcesses;
|
|
116
174
|
}
|
|
117
175
|
finally {
|
|
118
176
|
this.sampling = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-store.js","sourceRoot":"","sources":["../../src/core/metrics-store.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,GAErB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,GAEhB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"metrics-store.js","sourceRoot":"","sources":["../../src/core/metrics-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
export interface RemoteSkillResult {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
source: string;
|
|
6
|
+
useSource: string;
|
|
7
|
+
installs: number;
|
|
8
|
+
url: string;
|
|
9
|
+
}
|
|
10
|
+
export interface OneTimeSkillSelection {
|
|
11
|
+
name: string;
|
|
12
|
+
source: string;
|
|
13
|
+
}
|
|
14
|
+
export declare class OneTimeSkillError extends Error {
|
|
15
|
+
readonly code: "invalid_query" | "invalid_response" | "invalid_source" | "network" | "runtime_missing" | "skill_unavailable" | "timeout" | "too_large";
|
|
16
|
+
constructor(code: "invalid_query" | "invalid_response" | "invalid_source" | "network" | "runtime_missing" | "skill_unavailable" | "timeout" | "too_large", message: string);
|
|
17
|
+
}
|
|
18
|
+
export declare function searchRemoteSkills(rawQuery: string, options?: {
|
|
19
|
+
fetch?: typeof fetch;
|
|
20
|
+
signal?: AbortSignal;
|
|
21
|
+
}): Promise<RemoteSkillResult[]>;
|
|
22
|
+
export declare function validateOneTimeSkill(selection: OneTimeSkillSelection): void;
|
|
23
|
+
export declare function resolveOneTimeSkill(selection: OneTimeSkillSelection, options?: {
|
|
24
|
+
execFile?: typeof execFile;
|
|
25
|
+
platform?: NodeJS.Platform;
|
|
26
|
+
}): Promise<string>;
|
|
27
|
+
export declare function composeOneTimeSkillPrompt(skillPrompt: string, userPrompt: string): string;
|