@agent-loom/loom 1.0.2 → 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 +15 -6
- package/dist/apply.d.ts.map +1 -1
- package/dist/apply.js +78 -49
- 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 +627 -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
package/dist/validate.js
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Manifest validation
|
|
2
|
+
* Manifest validation -- schema, reference, and registry checks.
|
|
3
|
+
*
|
|
4
|
+
* Per U6, this validator probes both `manifest.yaml` (canonical) and
|
|
5
|
+
* `dobby.yaml` (legacy alias) inside the template dir, and runs the
|
|
6
|
+
* raw YAML through `normalizeManifestAliases` so dobby-style field
|
|
7
|
+
* names (`mcpServers:`, `sparseCheckout:`, `team:`) and flat layout
|
|
8
|
+
* are validated against the same schema as canonical manifests.
|
|
3
9
|
*/
|
|
4
10
|
import { readFile, stat } from 'node:fs/promises';
|
|
5
|
-
import { join
|
|
11
|
+
import { join } from 'node:path';
|
|
6
12
|
import yaml from 'js-yaml';
|
|
7
|
-
import { isSharedRef, isLocalFileRef } from './types.js';
|
|
13
|
+
import { isSharedRef, isLocalFileRef, isRegistrySkillRef } from './types.js';
|
|
14
|
+
import { normalizeManifestAliases, resolveManifestPath, safeJoinUnder } from './manifest.js';
|
|
8
15
|
// =============================================================================
|
|
9
16
|
// Validate Template
|
|
10
17
|
// =============================================================================
|
|
@@ -12,26 +19,39 @@ import { isSharedRef, isLocalFileRef } from './types.js';
|
|
|
12
19
|
* Validate a single template directory.
|
|
13
20
|
*/
|
|
14
21
|
export async function validateTemplate(templateDir, registryRoot) {
|
|
15
|
-
const manifestPath = join(templateDir, 'manifest.yaml');
|
|
16
22
|
const errors = [];
|
|
17
23
|
const warnings = [];
|
|
18
24
|
// --- Level 1: Schema validation ---
|
|
19
25
|
let manifest = null;
|
|
26
|
+
let manifestPath;
|
|
27
|
+
try {
|
|
28
|
+
manifestPath = await resolveManifestPath(templateDir);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
errors.push({
|
|
32
|
+
level: 'schema',
|
|
33
|
+
field: 'manifest',
|
|
34
|
+
message: 'No manifest.yaml or dobby.yaml found',
|
|
35
|
+
});
|
|
36
|
+
return buildResult('unknown', errors, warnings);
|
|
37
|
+
}
|
|
20
38
|
try {
|
|
21
39
|
const content = await readFile(manifestPath, 'utf-8');
|
|
22
40
|
const raw = yaml.load(content);
|
|
23
41
|
if (!raw || typeof raw !== 'object') {
|
|
24
|
-
errors.push({ level: 'schema', field: 'manifest', message:
|
|
42
|
+
errors.push({ level: 'schema', field: 'manifest', message: `${manifestPath} is not a valid YAML object` });
|
|
25
43
|
return buildResult('unknown', errors, warnings);
|
|
26
44
|
}
|
|
27
|
-
|
|
45
|
+
// Normalize dobby-style aliases (mcpServers/sparseCheckout/team/flat
|
|
46
|
+
// layout) so reference checks below operate on canonical shape.
|
|
47
|
+
manifest = normalizeManifestAliases(raw, manifestPath);
|
|
28
48
|
}
|
|
29
49
|
catch (err) {
|
|
30
50
|
if (err.code === 'ENOENT') {
|
|
31
|
-
errors.push({ level: 'schema', field: 'manifest', message:
|
|
51
|
+
errors.push({ level: 'schema', field: 'manifest', message: `${manifestPath} not found` });
|
|
32
52
|
}
|
|
33
53
|
else {
|
|
34
|
-
errors.push({ level: 'schema', field: 'manifest', message: `Failed to parse
|
|
54
|
+
errors.push({ level: 'schema', field: 'manifest', message: `Failed to parse ${manifestPath}: ${err.message}` });
|
|
35
55
|
}
|
|
36
56
|
return buildResult('unknown', errors, warnings);
|
|
37
57
|
}
|
|
@@ -69,41 +89,74 @@ export async function validateTemplate(templateDir, registryRoot) {
|
|
|
69
89
|
const repos = contents.repos ?? [];
|
|
70
90
|
const prompts = contents.prompts ?? [];
|
|
71
91
|
const prerequisites = manifest.prerequisites ?? [];
|
|
92
|
+
// Helper that wraps safeJoinUnder + checkFileExists. Path-safety
|
|
93
|
+
// rejection is reported as a validation error directly (without
|
|
94
|
+
// probing the filesystem -- a manifest like { file: '../../etc/passwd' }
|
|
95
|
+
// should not turn into a stat() that leaks file existence outside
|
|
96
|
+
// the template root). Recovered from PR #134 cycle 3.
|
|
97
|
+
async function checkRef(root, ref, section) {
|
|
98
|
+
let resolved;
|
|
99
|
+
try {
|
|
100
|
+
resolved = await safeJoinUnder(root, ref);
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
errors.push({
|
|
104
|
+
level: 'reference',
|
|
105
|
+
field: section,
|
|
106
|
+
message: `Path escapes ${section} root: ${err.message}`,
|
|
107
|
+
path: ref,
|
|
108
|
+
});
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
await checkFileExists(resolved, ref, section, errors);
|
|
112
|
+
}
|
|
72
113
|
// Check $ref and file references
|
|
73
114
|
for (const entry of instructions) {
|
|
74
115
|
if (isSharedRef(entry)) {
|
|
75
|
-
await
|
|
116
|
+
await checkRef(registryRoot, entry.$ref, 'instructions');
|
|
76
117
|
}
|
|
77
118
|
else if (isLocalFileRef(entry)) {
|
|
78
|
-
await
|
|
119
|
+
await checkRef(templateDir, entry.file, 'instructions');
|
|
79
120
|
}
|
|
80
121
|
}
|
|
81
122
|
for (const entry of agents) {
|
|
82
123
|
if (isLocalFileRef(entry)) {
|
|
83
|
-
await
|
|
124
|
+
await checkRef(templateDir, entry.file, 'agents');
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
for (const entry of skills) {
|
|
128
|
+
// Registry skills (e.g. `{ registry: 'craft', ref: 'investigation-plan' }`)
|
|
129
|
+
// resolve at runtime via SkillFetcher; nothing to file-check here.
|
|
130
|
+
if (isRegistrySkillRef(entry))
|
|
131
|
+
continue;
|
|
132
|
+
if (isSharedRef(entry)) {
|
|
133
|
+
await checkRef(registryRoot, entry.$ref, 'skills');
|
|
134
|
+
}
|
|
135
|
+
else if (isLocalFileRef(entry)) {
|
|
136
|
+
await checkRef(templateDir, entry.file, 'skills');
|
|
84
137
|
}
|
|
85
138
|
}
|
|
86
139
|
for (const entry of mcp) {
|
|
87
140
|
if (isSharedRef(entry)) {
|
|
88
|
-
await
|
|
141
|
+
await checkRef(registryRoot, entry.$ref, 'mcp');
|
|
89
142
|
}
|
|
90
143
|
}
|
|
91
144
|
for (const entry of repos) {
|
|
92
145
|
if (isSharedRef(entry)) {
|
|
93
|
-
await
|
|
146
|
+
await checkRef(registryRoot, entry.$ref, 'repos');
|
|
94
147
|
}
|
|
95
148
|
}
|
|
96
149
|
for (const entry of prompts) {
|
|
97
150
|
if (isSharedRef(entry)) {
|
|
98
|
-
await
|
|
151
|
+
await checkRef(registryRoot, entry.$ref, 'prompts');
|
|
99
152
|
}
|
|
100
153
|
else if (isLocalFileRef(entry)) {
|
|
101
|
-
await
|
|
154
|
+
await checkRef(templateDir, entry.file, 'prompts');
|
|
102
155
|
}
|
|
103
156
|
}
|
|
104
157
|
for (const entry of prerequisites) {
|
|
105
158
|
if (isSharedRef(entry)) {
|
|
106
|
-
await
|
|
159
|
+
await checkRef(registryRoot, entry.$ref, 'prerequisites');
|
|
107
160
|
}
|
|
108
161
|
}
|
|
109
162
|
return buildResult(templateId, errors, warnings, {
|
|
@@ -149,7 +202,27 @@ export async function validateRegistry(registryRoot) {
|
|
|
149
202
|
}
|
|
150
203
|
// Validate each template
|
|
151
204
|
for (const entry of index.templates) {
|
|
152
|
-
|
|
205
|
+
let templateDir;
|
|
206
|
+
try {
|
|
207
|
+
templateDir = await safeJoinUnder(registryRoot, entry.path);
|
|
208
|
+
}
|
|
209
|
+
catch (err) {
|
|
210
|
+
// Template path escapes the registry root -- record as a registry-
|
|
211
|
+
// level error and skip the template (don't probe the filesystem
|
|
212
|
+
// outside the registry, that's the whole point of this check).
|
|
213
|
+
results.push({
|
|
214
|
+
templateId: entry.id ?? entry.path,
|
|
215
|
+
errors: [{
|
|
216
|
+
level: 'registry',
|
|
217
|
+
field: 'path',
|
|
218
|
+
message: `Template path escapes registry root: ${err.message}`,
|
|
219
|
+
path: entry.path,
|
|
220
|
+
}],
|
|
221
|
+
warnings: [],
|
|
222
|
+
summary: { instructions: 0, skills: 0, agents: 0, mcp: 0, repos: 0, prompts: 0, prerequisites: 0 },
|
|
223
|
+
});
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
153
226
|
const result = await validateTemplate(templateDir, registryRoot);
|
|
154
227
|
results.push(result);
|
|
155
228
|
}
|
package/dist/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAiC7F,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAAmB,EACnB,YAAoB;IAEpB,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAwB,EAAE,CAAC;IAEzC,qCAAqC;IACrC,IAAI,QAAQ,GAAoB,IAAI,CAAC;IACrC,IAAI,YAAoB,CAAC;IACzB,IAAI,CAAC;QACH,YAAY,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,sCAAsC;SAChD,CAAC,CAAC;QACH,OAAO,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,YAAY,6BAA6B,EAAE,CAAC,CAAC;YAC3G,OAAO,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClD,CAAC;QACD,qEAAqE;QACrE,gEAAgE;QAChE,QAAQ,GAAG,wBAAwB,CAAC,GAAG,EAAE,YAAY,CAAwB,CAAC;IAChF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,YAAY,YAAY,EAAE,CAAC,CAAC;QAC5F,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,YAAY,KAAM,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC7H,CAAC;QACD,OAAO,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,kBAAkB;IAClB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAC;IACjG,CAAC;SAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,mBAAmB,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACrG,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC,CAAC;IAC7G,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3F,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC,CAAC;IAC1G,CAAC;SAAM,CAAC;QACN,MAAM,YAAY,GAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnE,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,mBAAmB,CAAC,EAAE,EAAE,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,SAAS,CAAC;IAEtD,wCAAwC;IACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;IACzC,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;IACrC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;IACvC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC;IAEnD,iEAAiE;IACjE,gEAAgE;IAChE,yEAAyE;IACzE,kEAAkE;IAClE,sDAAsD;IACtD,KAAK,UAAU,QAAQ,CACrB,IAAY,EACZ,GAAW,EACX,OAAe;QAEf,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,WAAW;gBAClB,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,gBAAgB,OAAO,UAAW,GAAa,CAAC,OAAO,EAAE;gBAClE,IAAI,EAAE,GAAG;aACV,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,iCAAiC;IACjC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC3D,CAAC;aAAM,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,4EAA4E;QAC5E,mEAAmE;QACnE,IAAI,kBAAkB,CAAC,KAAK,CAAC;YAAE,SAAS;QACxC,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE;QAC/C,YAAY,EAAE,YAAY,CAAC,MAAM;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,GAAG,EAAE,GAAG,CAAC,MAAM;QACf,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,aAAa,EAAE,aAAa,CAAC,MAAM;KACpC,CAAC,CAAC;AACL,CAAC;AAUD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,YAAoB;IAEpB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAkB,CAAC;IAElD,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC;gBACN,UAAU,EAAE,cAAc;gBAC1B,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC;gBAClG,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;aACnG,CAAC,CAAC;IACL,CAAC;IAED,0BAA0B;IAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEhE,MAAM,OAAO,GAAqB,EAAE,CAAC;IAErC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC;YACX,UAAU,EAAE,cAAc;YAC1B,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9B,KAAK,EAAE,UAAmB;gBAC1B,KAAK,EAAE,YAAY;gBACnB,OAAO,EAAE,0BAA0B,EAAE,EAAE;aACxC,CAAC,CAAC;YACH,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;SACnG,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB;IACzB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpC,IAAI,WAAmB,CAAC;QACxB,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,aAAa,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,mEAAmE;YACnE,gEAAgE;YAChE,+DAA+D;YAC/D,OAAO,CAAC,IAAI,CAAC;gBACX,UAAU,EAAE,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI;gBAClC,MAAM,EAAE,CAAC;wBACP,KAAK,EAAE,UAAU;wBACjB,KAAK,EAAE,MAAM;wBACb,OAAO,EAAE,wCAAyC,GAAa,CAAC,OAAO,EAAE;wBACzE,IAAI,EAAE,KAAK,CAAC,IAAI;qBACjB,CAAC;gBACF,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;aACnG,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,KAAK,UAAU,eAAe,CAC5B,YAAoB,EACpB,OAAe,EACf,KAAa,EACb,MAAyB;IAEzB,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,WAAW;YAClB,KAAK;YACL,OAAO,EAAE,sBAAsB,OAAO,EAAE;YACxC,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,UAAkB,EAClB,MAAyB,EACzB,QAA6B,EAC7B,OAA4C;IAE5C,OAAO;QACL,UAAU;QACV,MAAM;QACN,QAAQ;QACR,OAAO,EAAE;YACP,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,CAAC;YACT,GAAG,EAAE,CAAC;YACN,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,CAAC;YACV,aAAa,EAAE,CAAC;YAChB,GAAG,OAAO;SACX;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-loom/loom",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "CLI for sharing and applying coding agent workspace templates across Copilot, Claude Code, and more",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,16 +11,43 @@
|
|
|
11
11
|
"files": [
|
|
12
12
|
"dist"
|
|
13
13
|
],
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"default": "./dist/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./run": {
|
|
20
|
+
"types": "./dist/run/index.d.ts",
|
|
21
|
+
"default": "./dist/run/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./launch": {
|
|
24
|
+
"types": "./dist/launch/index.d.ts",
|
|
25
|
+
"default": "./dist/launch/index.js"
|
|
26
|
+
},
|
|
27
|
+
"./acp": {
|
|
28
|
+
"types": "./dist/acp/index.d.ts",
|
|
29
|
+
"default": "./dist/acp/index.js"
|
|
30
|
+
},
|
|
31
|
+
"./package.json": "./package.json"
|
|
32
|
+
},
|
|
14
33
|
"scripts": {
|
|
15
34
|
"build": "tsc",
|
|
16
35
|
"test": "vitest run",
|
|
17
36
|
"test:unit": "vitest run src/",
|
|
18
37
|
"test:e2e": "vitest run tests/",
|
|
19
38
|
"test:watch": "vitest",
|
|
39
|
+
"smoke": "npm run lint && npm run test:unit && npm run build",
|
|
20
40
|
"lint": "tsc --noEmit",
|
|
21
41
|
"prepublishOnly": "npm run build"
|
|
22
42
|
},
|
|
23
43
|
"homepage": "https://www.npmjs.com/package/@agent-loom/loom",
|
|
44
|
+
"repository": {
|
|
45
|
+
"type": "git",
|
|
46
|
+
"url": "git+https://github.com/serverless-paas-balam/loom.git"
|
|
47
|
+
},
|
|
48
|
+
"bugs": {
|
|
49
|
+
"url": "https://github.com/serverless-paas-balam/loom/issues"
|
|
50
|
+
},
|
|
24
51
|
"keywords": [],
|
|
25
52
|
"author": "",
|
|
26
53
|
"license": "ISC",
|
|
@@ -35,8 +62,10 @@
|
|
|
35
62
|
"vitest": "^4.0.18"
|
|
36
63
|
},
|
|
37
64
|
"dependencies": {
|
|
65
|
+
"@agentclientprotocol/sdk": "^0.19.0",
|
|
38
66
|
"chalk": "^5.6.2",
|
|
39
67
|
"commander": "^14.0.3",
|
|
40
|
-
"js-yaml": "^4.1.1"
|
|
68
|
+
"js-yaml": "^4.1.1",
|
|
69
|
+
"zod": "^3.25.0"
|
|
41
70
|
}
|
|
42
71
|
}
|