@agent-loom/loom 1.0.1 → 1.0.3
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/README.md +69 -0
- package/dist/acp/client.d.ts +182 -0
- package/dist/acp/client.d.ts.map +1 -0
- package/dist/acp/client.js +432 -0
- package/dist/acp/client.js.map +1 -0
- package/dist/acp/index.d.ts +5 -0
- package/dist/acp/index.d.ts.map +1 -0
- package/dist/acp/index.js +3 -0
- package/dist/acp/index.js.map +1 -0
- package/dist/acp/run.d.ts +41 -0
- package/dist/acp/run.d.ts.map +1 -0
- package/dist/acp/run.js +32 -0
- package/dist/acp/run.js.map +1 -0
- package/dist/apply.d.ts +17 -6
- package/dist/apply.d.ts.map +1 -1
- package/dist/apply.js +85 -47
- package/dist/apply.js.map +1 -1
- package/dist/chat/chat.d.ts +108 -0
- package/dist/chat/chat.d.ts.map +1 -0
- package/dist/chat/chat.js +221 -0
- package/dist/chat/chat.js.map +1 -0
- package/dist/chat/discovery.d.ts +30 -0
- package/dist/chat/discovery.d.ts.map +1 -0
- package/dist/chat/discovery.js +68 -0
- package/dist/chat/discovery.js.map +1 -0
- package/dist/chat/frontmatter.d.ts +12 -0
- package/dist/chat/frontmatter.d.ts.map +1 -0
- package/dist/chat/frontmatter.js +11 -0
- package/dist/chat/frontmatter.js.map +1 -0
- package/dist/chat/index.d.ts +16 -0
- package/dist/chat/index.d.ts.map +1 -0
- package/dist/chat/index.js +11 -0
- package/dist/chat/index.js.map +1 -0
- package/dist/chat/registry.d.ts +73 -0
- package/dist/chat/registry.d.ts.map +1 -0
- package/dist/chat/registry.js +118 -0
- package/dist/chat/registry.js.map +1 -0
- package/dist/chat/resolve-agent.d.ts +39 -0
- package/dist/chat/resolve-agent.d.ts.map +1 -0
- package/dist/chat/resolve-agent.js +36 -0
- package/dist/chat/resolve-agent.js.map +1 -0
- package/dist/chat/suggest.d.ts +20 -0
- package/dist/chat/suggest.d.ts.map +1 -0
- package/dist/chat/suggest.js +55 -0
- package/dist/chat/suggest.js.map +1 -0
- package/dist/cli.js +628 -75
- package/dist/cli.js.map +1 -1
- package/dist/clone.d.ts +21 -3
- package/dist/clone.d.ts.map +1 -1
- package/dist/clone.js +240 -12
- package/dist/clone.js.map +1 -1
- package/dist/copilot/mcp.d.ts +48 -0
- package/dist/copilot/mcp.d.ts.map +1 -0
- package/dist/copilot/mcp.js +146 -0
- package/dist/copilot/mcp.js.map +1 -0
- package/dist/copilot/resolve.d.ts +33 -0
- package/dist/copilot/resolve.d.ts.map +1 -0
- package/dist/copilot/resolve.js +96 -0
- package/dist/copilot/resolve.js.map +1 -0
- package/dist/copilot/spawn.d.ts +51 -0
- package/dist/copilot/spawn.d.ts.map +1 -0
- package/dist/copilot/spawn.js +132 -0
- package/dist/copilot/spawn.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/launch/index.d.ts +10 -0
- package/dist/launch/index.d.ts.map +1 -0
- package/dist/launch/index.js +9 -0
- package/dist/launch/index.js.map +1 -0
- package/dist/launch/stage.d.ts +62 -0
- package/dist/launch/stage.d.ts.map +1 -0
- package/dist/launch/stage.js +108 -0
- package/dist/launch/stage.js.map +1 -0
- package/dist/manifest.d.ts +165 -18
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +980 -225
- package/dist/manifest.js.map +1 -1
- package/dist/renderers/claude.d.ts +5 -0
- package/dist/renderers/claude.d.ts.map +1 -1
- package/dist/renderers/claude.js +17 -3
- package/dist/renderers/claude.js.map +1 -1
- package/dist/renderers/copilot.d.ts +1 -1
- package/dist/renderers/copilot.d.ts.map +1 -1
- package/dist/renderers/copilot.js +205 -22
- package/dist/renderers/copilot.js.map +1 -1
- package/dist/repo-clone.js +17 -11
- package/dist/repo-clone.js.map +1 -1
- package/dist/resolve-template.d.ts +12 -4
- package/dist/resolve-template.d.ts.map +1 -1
- package/dist/resolve-template.js +39 -8
- package/dist/resolve-template.js.map +1 -1
- package/dist/run/index.d.ts +4 -0
- package/dist/run/index.d.ts.map +1 -0
- package/dist/run/index.js +2 -0
- package/dist/run/index.js.map +1 -0
- package/dist/run/run.d.ts +143 -0
- package/dist/run/run.d.ts.map +1 -0
- package/dist/run/run.js +406 -0
- package/dist/run/run.js.map +1 -0
- package/dist/search-registry.d.ts +10 -3
- package/dist/search-registry.d.ts.map +1 -1
- package/dist/search-registry.js +16 -16
- package/dist/search-registry.js.map +1 -1
- package/dist/sessions/index.d.ts +16 -0
- package/dist/sessions/index.d.ts.map +1 -0
- package/dist/sessions/index.js +15 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/store.d.ts +56 -0
- package/dist/sessions/store.d.ts.map +1 -0
- package/dist/sessions/store.js +220 -0
- package/dist/sessions/store.js.map +1 -0
- package/dist/sessions/types.d.ts +62 -0
- package/dist/sessions/types.d.ts.map +1 -0
- package/dist/sessions/types.js +5 -0
- package/dist/sessions/types.js.map +1 -0
- package/dist/skill-fetcher.d.ts.map +1 -1
- package/dist/skill-fetcher.js +5 -6
- package/dist/skill-fetcher.js.map +1 -1
- package/dist/types.d.ts +123 -41
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +12 -0
- package/dist/types.js.map +1 -1
- package/dist/util/binary-cache.d.ts +53 -0
- package/dist/util/binary-cache.d.ts.map +1 -0
- package/dist/util/binary-cache.js +211 -0
- package/dist/util/binary-cache.js.map +1 -0
- package/dist/util/frontmatter.d.ts +53 -0
- package/dist/util/frontmatter.d.ts.map +1 -0
- package/dist/util/frontmatter.js +85 -0
- package/dist/util/frontmatter.js.map +1 -0
- package/dist/util/loom-home.d.ts +19 -0
- package/dist/util/loom-home.d.ts.map +1 -0
- package/dist/util/loom-home.js +37 -0
- package/dist/util/loom-home.js.map +1 -0
- package/dist/util/workspace-folder.d.ts +29 -0
- package/dist/util/workspace-folder.d.ts.map +1 -0
- package/dist/util/workspace-folder.js +43 -0
- package/dist/util/workspace-folder.js.map +1 -0
- package/dist/validate.d.ts +7 -1
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +90 -17
- package/dist/validate.js.map +1 -1
- package/package.json +31 -2
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session store — filesystem CRUD for session directories.
|
|
3
|
+
*/
|
|
4
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync, } from 'node:fs';
|
|
5
|
+
import { homedir } from 'node:os';
|
|
6
|
+
import { join, resolve } from 'node:path';
|
|
7
|
+
import { env } from 'node:process';
|
|
8
|
+
import yaml from 'js-yaml';
|
|
9
|
+
const SLUG_RE = /^[a-zA-Z0-9][a-zA-Z0-9._-]*$/;
|
|
10
|
+
const ID_SANITIZE_RE = /[^a-zA-Z0-9._-]+/g;
|
|
11
|
+
/**
|
|
12
|
+
* Resolve `$LOOM_HOME`. Honors `LOOM_HOME`, else `~/.loom`.
|
|
13
|
+
*/
|
|
14
|
+
export function loomHome() {
|
|
15
|
+
const override = env.LOOM_HOME;
|
|
16
|
+
if (override && override.trim())
|
|
17
|
+
return resolve(override);
|
|
18
|
+
return join(homedir(), '.loom');
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Directory containing all sessions. Created lazily by callers.
|
|
22
|
+
*/
|
|
23
|
+
export function sessionsRoot() {
|
|
24
|
+
return join(loomHome(), 'sessions');
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Session workspace dir — for staged sessions this is populated by the
|
|
28
|
+
* staging code before `chat()` runs.
|
|
29
|
+
*/
|
|
30
|
+
export function sessionWorkspaceDir(sessionDir) {
|
|
31
|
+
return join(sessionDir, 'workspace');
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Generate an id of the form `YYYYMMDD-HHMMSS-<agentId>[-<slug>]-<rand4>`.
|
|
35
|
+
* Uses UTC to keep comparisons deterministic across TZ changes.
|
|
36
|
+
*
|
|
37
|
+
* The trailing 4-char random suffix prevents collisions when two sessions
|
|
38
|
+
* are created within the same second (the timestamp resolution). Without
|
|
39
|
+
* it, parallel `loom <agent>` invocations could overwrite each other's
|
|
40
|
+
* `meta.yaml`. Callers that supply their own `id` (tests, replays) bypass
|
|
41
|
+
* this entirely.
|
|
42
|
+
*/
|
|
43
|
+
export function generateSessionId(agentId, options = {}) {
|
|
44
|
+
const now = options.now ?? new Date();
|
|
45
|
+
const yyyy = now.getUTCFullYear().toString();
|
|
46
|
+
const mm = String(now.getUTCMonth() + 1).padStart(2, '0');
|
|
47
|
+
const dd = String(now.getUTCDate()).padStart(2, '0');
|
|
48
|
+
const hh = String(now.getUTCHours()).padStart(2, '0');
|
|
49
|
+
const mi = String(now.getUTCMinutes()).padStart(2, '0');
|
|
50
|
+
const ss = String(now.getUTCSeconds()).padStart(2, '0');
|
|
51
|
+
const stamp = `${yyyy}${mm}${dd}-${hh}${mi}${ss}`;
|
|
52
|
+
const safeAgent = agentId.replace(ID_SANITIZE_RE, '-').replace(/^-+|-+$/g, '') || 'agent';
|
|
53
|
+
const parts = [stamp, safeAgent];
|
|
54
|
+
if (options.slug) {
|
|
55
|
+
const safeSlug = options.slug.replace(ID_SANITIZE_RE, '-').replace(/^-+|-+$/g, '');
|
|
56
|
+
if (safeSlug)
|
|
57
|
+
parts.push(safeSlug);
|
|
58
|
+
}
|
|
59
|
+
const rand = (options.rand ?? defaultRand4)();
|
|
60
|
+
parts.push(rand);
|
|
61
|
+
return parts.join('-');
|
|
62
|
+
}
|
|
63
|
+
/** 4-char [a-z0-9] suffix. Uses Math.random — collision-resistance is the goal, not crypto. */
|
|
64
|
+
function defaultRand4() {
|
|
65
|
+
return Math.random().toString(36).slice(2, 6).padEnd(4, '0');
|
|
66
|
+
}
|
|
67
|
+
function metaPath(sessionDir) {
|
|
68
|
+
return join(sessionDir, 'meta.yaml');
|
|
69
|
+
}
|
|
70
|
+
function writeMeta(sessionDir, meta) {
|
|
71
|
+
writeFileSync(metaPath(sessionDir), yaml.dump(meta, { lineWidth: 120 }), 'utf-8');
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Validate the shape of a parsed `meta.yaml`. Returns the meta when all
|
|
75
|
+
* required fields look right, otherwise `null` so callers can silently
|
|
76
|
+
* skip a partially-written or hand-edited record (`listSessions` advertises
|
|
77
|
+
* this, and downstream consumers like `cli sessions list` blindly call
|
|
78
|
+
* `meta.id.padEnd(...)` / `meta.startedAt.slice(...)` — a missing field
|
|
79
|
+
* here would crash them).
|
|
80
|
+
*/
|
|
81
|
+
function isValidMeta(value) {
|
|
82
|
+
if (!value || typeof value !== 'object')
|
|
83
|
+
return false;
|
|
84
|
+
const m = value;
|
|
85
|
+
return (typeof m.schemaVersion === 'number' &&
|
|
86
|
+
typeof m.id === 'string' && m.id.length > 0 &&
|
|
87
|
+
typeof m.agentId === 'string' && m.agentId.length > 0 &&
|
|
88
|
+
typeof m.startedAt === 'string' && m.startedAt.length > 0 &&
|
|
89
|
+
typeof m.status === 'string' && m.status.length > 0);
|
|
90
|
+
}
|
|
91
|
+
function readMeta(sessionDir) {
|
|
92
|
+
const p = metaPath(sessionDir);
|
|
93
|
+
if (!existsSync(p))
|
|
94
|
+
return null;
|
|
95
|
+
try {
|
|
96
|
+
const raw = readFileSync(p, 'utf-8');
|
|
97
|
+
const parsed = yaml.load(raw);
|
|
98
|
+
if (!isValidMeta(parsed))
|
|
99
|
+
return null;
|
|
100
|
+
return parsed;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Create a new session on disk. Returns the handle.
|
|
108
|
+
*/
|
|
109
|
+
export function createSession(input) {
|
|
110
|
+
if (!input.agentId || !SLUG_RE.test(input.agentId)) {
|
|
111
|
+
throw new Error(`Invalid agent id for session: "${input.agentId}"`);
|
|
112
|
+
}
|
|
113
|
+
const id = input.id ?? generateSessionId(input.agentId);
|
|
114
|
+
if (!SLUG_RE.test(id)) {
|
|
115
|
+
throw new Error(`Invalid session id: "${id}"`);
|
|
116
|
+
}
|
|
117
|
+
const root = sessionsRoot();
|
|
118
|
+
if (!existsSync(root))
|
|
119
|
+
mkdirSync(root, { recursive: true });
|
|
120
|
+
const dir = join(root, id);
|
|
121
|
+
if (existsSync(dir)) {
|
|
122
|
+
throw new Error(`Session dir already exists: ${dir}`);
|
|
123
|
+
}
|
|
124
|
+
mkdirSync(dir, { recursive: true });
|
|
125
|
+
const meta = {
|
|
126
|
+
id,
|
|
127
|
+
name: input.name,
|
|
128
|
+
agentId: input.agentId,
|
|
129
|
+
agentName: input.agentName,
|
|
130
|
+
runtime: input.runtime,
|
|
131
|
+
workspaceDir: resolve(input.workspaceDir),
|
|
132
|
+
origin: input.origin,
|
|
133
|
+
startedAt: new Date().toISOString(),
|
|
134
|
+
status: 'running',
|
|
135
|
+
tags: input.tags,
|
|
136
|
+
note: input.note,
|
|
137
|
+
schemaVersion: 1,
|
|
138
|
+
};
|
|
139
|
+
writeMeta(dir, meta);
|
|
140
|
+
// Touch transcript.jsonl so consumers can append without checking.
|
|
141
|
+
const tx = join(dir, 'transcript.jsonl');
|
|
142
|
+
if (!existsSync(tx))
|
|
143
|
+
writeFileSync(tx, '', 'utf-8');
|
|
144
|
+
return { dir, meta };
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Stamp a session as finished. Idempotent — calling twice overwrites with
|
|
148
|
+
* the latest values.
|
|
149
|
+
*/
|
|
150
|
+
export function finalizeSession(session, input) {
|
|
151
|
+
const updated = {
|
|
152
|
+
...session.meta,
|
|
153
|
+
endedAt: new Date().toISOString(),
|
|
154
|
+
exitCode: input.exitCode,
|
|
155
|
+
durationMs: input.durationMs,
|
|
156
|
+
status: input.status ?? (input.exitCode === 0 ? 'exited' : 'errored'),
|
|
157
|
+
};
|
|
158
|
+
writeMeta(session.dir, updated);
|
|
159
|
+
return { dir: session.dir, meta: updated };
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Update a subset of a session's mutable meta fields.
|
|
163
|
+
* Returns null if the session doesn't exist / is unreadable.
|
|
164
|
+
*/
|
|
165
|
+
export function updateSessionMeta(id, patch) {
|
|
166
|
+
const s = readSession(id);
|
|
167
|
+
if (!s)
|
|
168
|
+
return null;
|
|
169
|
+
const merged = { ...s.meta, ...patch };
|
|
170
|
+
writeMeta(s.dir, merged);
|
|
171
|
+
return { dir: s.dir, meta: merged };
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Read a single session by id. Returns null if the dir or meta is missing.
|
|
175
|
+
*/
|
|
176
|
+
export function readSession(id) {
|
|
177
|
+
if (!SLUG_RE.test(id))
|
|
178
|
+
return null;
|
|
179
|
+
const dir = join(sessionsRoot(), id);
|
|
180
|
+
if (!existsSync(dir))
|
|
181
|
+
return null;
|
|
182
|
+
const meta = readMeta(dir);
|
|
183
|
+
if (!meta)
|
|
184
|
+
return null;
|
|
185
|
+
return { dir, meta };
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* List all sessions, sorted by startedAt descending (newest first).
|
|
189
|
+
* Silently skips malformed session dirs.
|
|
190
|
+
*/
|
|
191
|
+
export function listSessions() {
|
|
192
|
+
const root = sessionsRoot();
|
|
193
|
+
if (!existsSync(root))
|
|
194
|
+
return [];
|
|
195
|
+
const out = [];
|
|
196
|
+
let entries = [];
|
|
197
|
+
try {
|
|
198
|
+
entries = readdirSync(root);
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
return [];
|
|
202
|
+
}
|
|
203
|
+
for (const entry of entries) {
|
|
204
|
+
const dir = join(root, entry);
|
|
205
|
+
try {
|
|
206
|
+
if (!statSync(dir).isDirectory())
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
const meta = readMeta(dir);
|
|
213
|
+
if (!meta)
|
|
214
|
+
continue;
|
|
215
|
+
out.push({ dir, meta });
|
|
216
|
+
}
|
|
217
|
+
out.sort((a, b) => (a.meta.startedAt < b.meta.startedAt ? 1 : -1));
|
|
218
|
+
return out;
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/sessions/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session types — the on-disk shape of meta.yaml and the in-memory handle.
|
|
3
|
+
*/
|
|
4
|
+
export type SessionStatus = 'running' | 'exited' | 'errored';
|
|
5
|
+
export type SessionRuntime = 'copilot' | 'claude';
|
|
6
|
+
export interface SessionMeta {
|
|
7
|
+
/** Session id = directory name. Immutable. */
|
|
8
|
+
id: string;
|
|
9
|
+
/** Optional human-friendly label supplied at creation. */
|
|
10
|
+
name?: string;
|
|
11
|
+
/** Agent id that was launched. */
|
|
12
|
+
agentId: string;
|
|
13
|
+
/** Pretty agent name from frontmatter, if known at creation time. */
|
|
14
|
+
agentName?: string;
|
|
15
|
+
/** Runtime used. */
|
|
16
|
+
runtime: SessionRuntime;
|
|
17
|
+
/** Workspace the runtime was pointed at (absolute). */
|
|
18
|
+
workspaceDir: string;
|
|
19
|
+
/** Origin of the agent — in-tree workspace or staged from a registry. */
|
|
20
|
+
origin: 'workspace' | 'staged';
|
|
21
|
+
/** When the session dir was created (ISO 8601). */
|
|
22
|
+
startedAt: string;
|
|
23
|
+
/** When the runtime exited (ISO 8601). Absent while running. */
|
|
24
|
+
endedAt?: string;
|
|
25
|
+
/** Status of the session. */
|
|
26
|
+
status: SessionStatus;
|
|
27
|
+
/** Runtime process exit code, if known. */
|
|
28
|
+
exitCode?: number | null;
|
|
29
|
+
/** Total duration in ms, if known. */
|
|
30
|
+
durationMs?: number;
|
|
31
|
+
/** Free-form tags for the user. */
|
|
32
|
+
tags?: string[];
|
|
33
|
+
/** Free-form single-line note. */
|
|
34
|
+
note?: string;
|
|
35
|
+
/** Schema version for future migrations. */
|
|
36
|
+
schemaVersion: 1;
|
|
37
|
+
}
|
|
38
|
+
export interface CreateSessionInput {
|
|
39
|
+
agentId: string;
|
|
40
|
+
agentName?: string;
|
|
41
|
+
runtime: SessionRuntime;
|
|
42
|
+
workspaceDir: string;
|
|
43
|
+
origin: 'workspace' | 'staged';
|
|
44
|
+
/** Optional override for the session id; otherwise auto-generated. */
|
|
45
|
+
id?: string;
|
|
46
|
+
/** Friendly label stored on the session. */
|
|
47
|
+
name?: string;
|
|
48
|
+
tags?: string[];
|
|
49
|
+
note?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface FinalizeSessionInput {
|
|
52
|
+
exitCode: number | null;
|
|
53
|
+
durationMs: number;
|
|
54
|
+
status?: SessionStatus;
|
|
55
|
+
}
|
|
56
|
+
export interface Session {
|
|
57
|
+
/** Absolute path to the session directory. */
|
|
58
|
+
dir: string;
|
|
59
|
+
/** Parsed meta.yaml. */
|
|
60
|
+
meta: SessionMeta;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sessions/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,aAAa,EAAE,CAAC,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B,sEAAsE;IACtE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,OAAO;IACtB,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,wBAAwB;IACxB,IAAI,EAAE,WAAW,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sessions/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-fetcher.d.ts","sourceRoot":"","sources":["../src/skill-fetcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE9E;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,YAAY,CAQd;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACnC,GACA,YAAY,CA0Bd;AAkBD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EAAE,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"skill-fetcher.d.ts","sourceRoot":"","sources":["../src/skill-fetcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE9E;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,YAAY,CAQd;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACnC,GACA,YAAY,CA0Bd;AAkBD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EAAE,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,EAAE,CAAC,CAoB1B"}
|
package/dist/skill-fetcher.js
CHANGED
|
@@ -78,17 +78,16 @@ export async function resolveRegistrySkills(skills, fetcher) {
|
|
|
78
78
|
if (!fetcher)
|
|
79
79
|
return skills;
|
|
80
80
|
return Promise.all(skills.map(async (skill) => {
|
|
81
|
-
|
|
81
|
+
// Registry skills are identified by having both registry + ref set.
|
|
82
|
+
// Skills with content already fetched (or local-only) pass through.
|
|
83
|
+
if (!skill.registry || !skill.ref || skill.content) {
|
|
82
84
|
return skill;
|
|
83
85
|
}
|
|
84
86
|
const content = await fetcher(skill.registry, skill.ref);
|
|
85
87
|
return {
|
|
86
|
-
|
|
87
|
-
name: skill.ref,
|
|
88
|
+
...skill,
|
|
88
89
|
content,
|
|
89
|
-
sourcePath: `${skill.registry}:${skill.ref}`,
|
|
90
|
-
originalRegistry: skill.registry,
|
|
91
|
-
originalRef: skill.ref,
|
|
90
|
+
sourcePath: skill.sourcePath ?? `${skill.registry}:${skill.ref}`,
|
|
92
91
|
};
|
|
93
92
|
}));
|
|
94
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-fetcher.js","sourceRoot":"","sources":["../src/skill-fetcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAQzD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAA8B;IAE9B,OAAO,KAAK,EAAE,SAAiB,EAAE,GAAW,EAAmB,EAAE;QAC/D,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,+BAA+B,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAGC;IAED,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO;WAC3B,OAAO,CAAC,GAAG,CAAC,qBAAqB;WACjC,uFAAuF,CAAC;IAC7F,MAAM,SAAS,GAAG,OAAO,EAAE,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC;IAEvD,OAAO,KAAK,EAAE,QAAgB,EAAE,GAAW,EAAmB,EAAE;QAC9D,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,OAAO,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,GAAG,WAAW,CAAC;QAEzC,IAAI,CAAC;YACH,iEAAiE;YACjE,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC7D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,8BAA8B,GAAG,UAAU,GAAG,KAAK,QAAQ,CAAC,MAAM,gBAAgB,CAAC,CAAC;gBACjG,OAAO,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,qCAAqC,GAAG,gBAAgB,CAAC,CAAC;YACvE,OAAO,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,QAAgB,EAAE,GAAW;IACpD,OAAO;QACD,GAAG;2BACgB,QAAQ,IAAI,GAAG;;;IAGtC,GAAG;;6DAEsD,QAAQ,IAAI,GAAG;;CAE3E,CAAC;AACF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAuB,EACvB,OAAsB;IAEtB,IAAI,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC;IAE5B,OAAO,OAAO,CAAC,GAAG,CAChB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAA0B,EAAE;QACjD,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"skill-fetcher.js","sourceRoot":"","sources":["../src/skill-fetcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAQzD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAA8B;IAE9B,OAAO,KAAK,EAAE,SAAiB,EAAE,GAAW,EAAmB,EAAE;QAC/D,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,+BAA+B,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAGC;IAED,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO;WAC3B,OAAO,CAAC,GAAG,CAAC,qBAAqB;WACjC,uFAAuF,CAAC;IAC7F,MAAM,SAAS,GAAG,OAAO,EAAE,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC;IAEvD,OAAO,KAAK,EAAE,QAAgB,EAAE,GAAW,EAAmB,EAAE;QAC9D,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,OAAO,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,GAAG,WAAW,CAAC;QAEzC,IAAI,CAAC;YACH,iEAAiE;YACjE,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC7D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,8BAA8B,GAAG,UAAU,GAAG,KAAK,QAAQ,CAAC,MAAM,gBAAgB,CAAC,CAAC;gBACjG,OAAO,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,qCAAqC,GAAG,gBAAgB,CAAC,CAAC;YACvE,OAAO,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,QAAgB,EAAE,GAAW;IACpD,OAAO;QACD,GAAG;2BACgB,QAAQ,IAAI,GAAG;;;IAGtC,GAAG;;6DAEsD,QAAQ,IAAI,GAAG;;CAE3E,CAAC;AACF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAuB,EACvB,OAAsB;IAEtB,IAAI,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC;IAE5B,OAAO,OAAO,CAAC,GAAG,CAChB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAA0B,EAAE;QACjD,oEAAoE;QACpE,oEAAoE;QACpE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAEzD,OAAO;YACL,GAAG,KAAK;YACR,OAAO;YACP,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,GAAG,EAAE;SACjE,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Core types for manifest.yaml schema, config, workspaces, and registry.
|
|
5
5
|
*/
|
|
6
|
+
import type { BinarySpec } from './util/binary-cache.js';
|
|
7
|
+
export type { BinarySpec } from './util/binary-cache.js';
|
|
6
8
|
/** Top-level manifest.yaml structure */
|
|
7
9
|
export interface Manifest {
|
|
8
10
|
version: string;
|
|
@@ -45,16 +47,63 @@ export interface RegistrySkillRef {
|
|
|
45
47
|
ref: string;
|
|
46
48
|
}
|
|
47
49
|
export declare function isRegistrySkillRef(entry: unknown): entry is RegistrySkillRef;
|
|
50
|
+
/**
|
|
51
|
+
* Filesystem skill discovery: walk the listed directories and treat every
|
|
52
|
+
* immediate subdirectory containing a SKILL.md as a discovered skill.
|
|
53
|
+
*
|
|
54
|
+
* Order matters -- later paths in the array override earlier ones on
|
|
55
|
+
* duplicate skill names. This preserves dobby's "team skills override
|
|
56
|
+
* shared skills" semantics: pass `[<shared>/skills, <team>/skills]` and
|
|
57
|
+
* team-local skills win.
|
|
58
|
+
*
|
|
59
|
+
* Each path may be absolute or relative; relative paths are resolved
|
|
60
|
+
* against the templateDir passed to the resolver.
|
|
61
|
+
*/
|
|
62
|
+
export interface DiscoverSkillsRef {
|
|
63
|
+
discover: string[];
|
|
64
|
+
}
|
|
65
|
+
export declare function isDiscoverSkillsRef(entry: unknown): entry is DiscoverSkillsRef;
|
|
66
|
+
/**
|
|
67
|
+
* Filesystem agent discovery: walk the listed directories and treat every
|
|
68
|
+
* immediate subdirectory containing an `*.agent.md` file as a discovered
|
|
69
|
+
* agent. The subdir name becomes the agent id; metadata (name,
|
|
70
|
+
* description, model, tools) is parsed from the agent file's YAML
|
|
71
|
+
* frontmatter.
|
|
72
|
+
*
|
|
73
|
+
* Order matters -- later paths in the array override earlier ones on
|
|
74
|
+
* duplicate agent ids. This preserves the same precedence rule as
|
|
75
|
+
* skill discovery (U2): pass `[<shared>, <team>]` and team-local agents
|
|
76
|
+
* win.
|
|
77
|
+
*
|
|
78
|
+
* Filename resolution within an agent dir:
|
|
79
|
+
* - If exactly one `*.agent.md` file exists, use it (loom convention).
|
|
80
|
+
* - If `<id>.agent.md` exists, prefer it (dobby convention).
|
|
81
|
+
* - Otherwise fall back to first alphabetically and emit a warning
|
|
82
|
+
* because the layout is ambiguous.
|
|
83
|
+
*
|
|
84
|
+
* Each path may be absolute or relative; relative paths are resolved
|
|
85
|
+
* against the templateDir passed to the resolver.
|
|
86
|
+
*/
|
|
87
|
+
export interface DiscoverAgentsRef {
|
|
88
|
+
discover: string[];
|
|
89
|
+
}
|
|
90
|
+
export declare function isDiscoverAgentRef(entry: unknown): entry is DiscoverAgentsRef;
|
|
48
91
|
export type InstructionEntry = (SharedRef | LocalFileRef) & {
|
|
49
92
|
scope: string;
|
|
50
93
|
};
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
94
|
+
/**
|
|
95
|
+
* Skill entry (manifest contents). Per U4, manifest entries declare
|
|
96
|
+
* routing or membership only -- skill metadata (name, description, etc.)
|
|
97
|
+
* lives in the SKILL.md frontmatter, not on the entry.
|
|
98
|
+
*/
|
|
99
|
+
export type SkillEntry = RegistrySkillRef | DiscoverSkillsRef | LocalFileRef;
|
|
100
|
+
/**
|
|
101
|
+
* Agent entry (manifest contents). Per U4, manifest entries declare
|
|
102
|
+
* routing or membership only -- agent metadata (name, description,
|
|
103
|
+
* model, tools, etc.) lives in the .agent.md frontmatter, not on the
|
|
104
|
+
* entry.
|
|
105
|
+
*/
|
|
106
|
+
export type AgentEntry = LocalFileRef | DiscoverAgentsRef;
|
|
58
107
|
export type McpEntry = SharedRef | McpInlineDef;
|
|
59
108
|
export interface McpInlineDef {
|
|
60
109
|
id: string;
|
|
@@ -63,19 +112,37 @@ export interface McpInlineDef {
|
|
|
63
112
|
type: 'stdio' | 'http';
|
|
64
113
|
command?: string;
|
|
65
114
|
args?: string[];
|
|
115
|
+
cwd?: string;
|
|
66
116
|
url?: string;
|
|
67
117
|
authType?: string;
|
|
118
|
+
/**
|
|
119
|
+
* Static HTTP headers for type:http servers. Useful for MCP endpoints
|
|
120
|
+
* that need a fixed bearer/api-key alongside dynamic auth (or none at
|
|
121
|
+
* all). Passed straight through to ResolvedMcp and from there into
|
|
122
|
+
* the rendered MCP config.
|
|
123
|
+
*/
|
|
124
|
+
headers?: Record<string, string>;
|
|
68
125
|
env?: Record<string, string>;
|
|
126
|
+
/**
|
|
127
|
+
* Auto-download spec for stdio MCP servers shipped as a release asset.
|
|
128
|
+
* When set (and `command` is empty), the resolver downloads the asset
|
|
129
|
+
* into ~/.loom/mcp-binaries/<repo>/<version>/ on first use and emits the
|
|
130
|
+
* absolute cache path as `command`. See src/util/binary-cache.ts.
|
|
131
|
+
*/
|
|
132
|
+
binary?: BinarySpec;
|
|
69
133
|
}
|
|
70
134
|
export declare function isMcpInlineDef(entry: unknown): entry is McpInlineDef;
|
|
135
|
+
/**
|
|
136
|
+
* Prompt entry (manifest contents). Per U4, manifest entries declare
|
|
137
|
+
* routing or membership only -- prompt metadata (name, description,
|
|
138
|
+
* agent, model, tools) lives in the .prompt.md frontmatter, not on the
|
|
139
|
+
* entry. The `shared` and `disableAutoInvoke` flags remain entry-level
|
|
140
|
+
* because they are loom-side routing/behavior decisions about how the
|
|
141
|
+
* prompt is mounted, not metadata about the prompt itself.
|
|
142
|
+
*/
|
|
71
143
|
export type PromptEntry = SharedRef | PromptLocalRef;
|
|
72
144
|
export interface PromptLocalRef {
|
|
73
145
|
file: string;
|
|
74
|
-
name?: string;
|
|
75
|
-
description?: string;
|
|
76
|
-
agent?: string;
|
|
77
|
-
model?: string;
|
|
78
|
-
tools?: string[];
|
|
79
146
|
shared?: boolean;
|
|
80
147
|
disableAutoInvoke?: boolean;
|
|
81
148
|
}
|
|
@@ -123,33 +190,60 @@ export interface ResolvedInstruction {
|
|
|
123
190
|
sourcePath: string;
|
|
124
191
|
}
|
|
125
192
|
export interface ResolvedSkill {
|
|
126
|
-
|
|
193
|
+
/**
|
|
194
|
+
* Registry-rooted skills carry these so callers (apply.ts) can list
|
|
195
|
+
* them as "needs external install" or "fetched and localized".
|
|
196
|
+
* Local-only skills omit them.
|
|
197
|
+
*/
|
|
127
198
|
registry?: string;
|
|
128
199
|
ref?: string;
|
|
200
|
+
/**
|
|
201
|
+
* Display name. For registry skills, often equals `ref`. For local
|
|
202
|
+
* skills, comes from frontmatter or the manifest entry.
|
|
203
|
+
*/
|
|
129
204
|
name?: string;
|
|
205
|
+
/**
|
|
206
|
+
* SKILL.md content. Present for fetched registry skills and
|
|
207
|
+
* file-resolved local skills. When absent, the skill is registry-only
|
|
208
|
+
* (caller must install separately).
|
|
209
|
+
*/
|
|
130
210
|
content?: string;
|
|
131
211
|
sourcePath?: string;
|
|
132
212
|
/** Extra files alongside SKILL.md (e.g. references/) */
|
|
133
213
|
extraFiles?: SkillExtraFile[];
|
|
134
|
-
/** Original registry name (set when a registry skill is fetched and converted to local) */
|
|
135
|
-
originalRegistry?: string;
|
|
136
|
-
/** Original ref/ID (set when a registry skill is fetched and converted to local) */
|
|
137
|
-
originalRef?: string;
|
|
138
214
|
}
|
|
139
215
|
/** An extra file bundled with a local skill */
|
|
140
216
|
export interface SkillExtraFile {
|
|
141
|
-
/** Path relative to the skill directory (e.g. "references/
|
|
217
|
+
/** Path relative to the skill directory (e.g. "references/usage-guide.md") */
|
|
142
218
|
relativePath: string;
|
|
143
219
|
/** File content (UTF-8 text) */
|
|
144
220
|
content: string;
|
|
145
221
|
}
|
|
146
222
|
export interface ResolvedAgent {
|
|
223
|
+
/**
|
|
224
|
+
* Stable identifier used by callers (the slug that appears as the
|
|
225
|
+
* filename stem of the rendered `.agent.md`). For loom-template
|
|
226
|
+
* nested layouts this is the agents/<id>/agent.md directory name;
|
|
227
|
+
* for dobby-source layouts it's the file basename.
|
|
228
|
+
*/
|
|
229
|
+
agentId: string;
|
|
147
230
|
name: string;
|
|
148
231
|
description: string;
|
|
149
232
|
model?: string;
|
|
150
|
-
tools
|
|
233
|
+
tools?: string[];
|
|
151
234
|
content: string;
|
|
152
235
|
sourcePath: string;
|
|
236
|
+
/**
|
|
237
|
+
* MCPs declared in this agent's frontmatter `mcp-servers:` block
|
|
238
|
+
* (per-agent scope). Per U4.5, the agent file's frontmatter is the
|
|
239
|
+
* single source of per-agent MCP declarations -- the legacy
|
|
240
|
+
* `agents/<id>/manifest.yaml` sibling YAML is gone. The copilot
|
|
241
|
+
* renderer emits these into the agent's frontmatter as a
|
|
242
|
+
* `mcp-servers:` block so Copilot CLI 1.0.40 can lazy-spawn them at
|
|
243
|
+
* agent activation. Team-level MCPs live on `ResolvedManifest.mcp`
|
|
244
|
+
* instead. See loom#122 / loom#127 and docs/mcp-scoping.md.
|
|
245
|
+
*/
|
|
246
|
+
mcp?: ResolvedMcp[];
|
|
153
247
|
}
|
|
154
248
|
export interface ResolvedMcp {
|
|
155
249
|
id: string;
|
|
@@ -158,8 +252,10 @@ export interface ResolvedMcp {
|
|
|
158
252
|
type: 'stdio' | 'http';
|
|
159
253
|
command?: string;
|
|
160
254
|
args?: string[];
|
|
255
|
+
cwd?: string;
|
|
161
256
|
url?: string;
|
|
162
257
|
authType?: string;
|
|
258
|
+
headers?: Record<string, string>;
|
|
163
259
|
env?: Record<string, string>;
|
|
164
260
|
}
|
|
165
261
|
export interface ResolvedPrompt {
|
|
@@ -241,28 +337,6 @@ export interface AgentRegistryEntry {
|
|
|
241
337
|
tags: string[];
|
|
242
338
|
path: string;
|
|
243
339
|
}
|
|
244
|
-
/** Per-agent manifest.yaml (lives in templates/<team>/agents/<id>/manifest.yaml) */
|
|
245
|
-
export interface AgentManifest {
|
|
246
|
-
agent: AgentManifestMeta;
|
|
247
|
-
contents?: AgentManifestContents;
|
|
248
|
-
prerequisites?: ResourceRef[];
|
|
249
|
-
}
|
|
250
|
-
export interface AgentManifestMeta {
|
|
251
|
-
id: string;
|
|
252
|
-
name: string;
|
|
253
|
-
description: string;
|
|
254
|
-
model?: string;
|
|
255
|
-
tags?: string[];
|
|
256
|
-
tools?: string[];
|
|
257
|
-
}
|
|
258
|
-
/** Agent-specific content additions (merged with team manifest) */
|
|
259
|
-
export interface AgentManifestContents {
|
|
260
|
-
instructions?: InstructionEntry[];
|
|
261
|
-
mcp?: McpEntry[];
|
|
262
|
-
repos?: RepoEntry[];
|
|
263
|
-
skills?: SkillEntry[];
|
|
264
|
-
prompts?: PromptEntry[];
|
|
265
|
-
}
|
|
266
340
|
export interface SharedMcpFile {
|
|
267
341
|
id: string;
|
|
268
342
|
name: string;
|
|
@@ -270,9 +344,17 @@ export interface SharedMcpFile {
|
|
|
270
344
|
type: 'stdio' | 'http';
|
|
271
345
|
command?: string;
|
|
272
346
|
args?: string[];
|
|
347
|
+
cwd?: string;
|
|
273
348
|
url?: string;
|
|
274
349
|
authType?: string;
|
|
275
350
|
env?: Record<string, string>;
|
|
351
|
+
/**
|
|
352
|
+
* Static auth headers for HTTP/SSE servers (e.g. bearer token).
|
|
353
|
+
* Forwarded verbatim to the rendered MCP config so a manifest
|
|
354
|
+
* referencing a shared MCP file with required headers ends up with
|
|
355
|
+
* a working server definition.
|
|
356
|
+
*/
|
|
357
|
+
headers?: Record<string, string>;
|
|
276
358
|
}
|
|
277
359
|
export interface SharedRepoFile {
|
|
278
360
|
id: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -12,6 +12,18 @@ export function isLocalFileRef(entry) {
|
|
|
12
12
|
export function isRegistrySkillRef(entry) {
|
|
13
13
|
return typeof entry === 'object' && entry !== null && 'registry' in entry;
|
|
14
14
|
}
|
|
15
|
+
export function isDiscoverSkillsRef(entry) {
|
|
16
|
+
return (typeof entry === 'object' &&
|
|
17
|
+
entry !== null &&
|
|
18
|
+
'discover' in entry &&
|
|
19
|
+
Array.isArray(entry.discover));
|
|
20
|
+
}
|
|
21
|
+
export function isDiscoverAgentRef(entry) {
|
|
22
|
+
return (typeof entry === 'object' &&
|
|
23
|
+
entry !== null &&
|
|
24
|
+
'discover' in entry &&
|
|
25
|
+
Array.isArray(entry.discover));
|
|
26
|
+
}
|
|
15
27
|
export function isMcpInlineDef(entry) {
|
|
16
28
|
return typeof entry === 'object' && entry !== null && 'id' in entry && 'type' in entry;
|
|
17
29
|
}
|