@agent-workspace/cli 0.1.0 → 0.2.1
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 +100 -0
- package/dist/commands/artifact.d.ts +18 -0
- package/dist/commands/artifact.d.ts.map +1 -0
- package/dist/commands/artifact.js +277 -0
- package/dist/commands/artifact.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/inspect.d.ts.map +1 -1
- package/dist/commands/inspect.js +10 -0
- package/dist/commands/inspect.js.map +1 -1
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/artifact.d.ts +31 -0
- package/dist/lib/artifact.d.ts.map +1 -0
- package/dist/lib/artifact.js +77 -0
- package/dist/lib/artifact.js.map +1 -0
- package/package.json +2 -2
package/README.md
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# @agent-workspace/cli
|
|
2
|
+
|
|
3
|
+
CLI for the [Agent Workspace Protocol](https://github.com/marcoloco23/awp) — create, validate, and manage agent workspaces from the terminal.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @agent-workspace/cli
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Commands
|
|
12
|
+
|
|
13
|
+
### Workspace
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Scaffold a new agent workspace
|
|
17
|
+
awp init
|
|
18
|
+
|
|
19
|
+
# Validate workspace structure and schemas
|
|
20
|
+
awp validate
|
|
21
|
+
|
|
22
|
+
# Inspect workspace summary
|
|
23
|
+
awp inspect
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Identity
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Generate a did:key identity
|
|
30
|
+
awp identity generate
|
|
31
|
+
|
|
32
|
+
# Export as A2A-compatible Agent Card (JSON)
|
|
33
|
+
awp identity export
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Memory
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# Log a memory entry
|
|
40
|
+
awp memory log --tag learning --tag architecture \
|
|
41
|
+
"Discovered that the auth service uses JWT with RS256"
|
|
42
|
+
|
|
43
|
+
# Search memory
|
|
44
|
+
awp memory search "auth"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Artifacts (SMP)
|
|
48
|
+
|
|
49
|
+
Versioned knowledge documents with provenance tracking and confidence scores.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Create a new artifact
|
|
53
|
+
awp artifact create llm-research --title "LLM Context Research" --tags ai,research
|
|
54
|
+
|
|
55
|
+
# Edit the markdown body, then commit the change
|
|
56
|
+
awp artifact commit llm-research -m "Added benchmark comparison"
|
|
57
|
+
|
|
58
|
+
# List all artifacts
|
|
59
|
+
awp artifact list
|
|
60
|
+
|
|
61
|
+
# Filter by tag
|
|
62
|
+
awp artifact list --tag ai
|
|
63
|
+
|
|
64
|
+
# Search content, titles, and tags
|
|
65
|
+
awp artifact search "context window"
|
|
66
|
+
|
|
67
|
+
# View provenance history
|
|
68
|
+
awp artifact log llm-research
|
|
69
|
+
|
|
70
|
+
# Merge one artifact into another (additive)
|
|
71
|
+
awp artifact merge target-slug source-slug
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## What It Creates
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
your-agent/
|
|
78
|
+
.awp/workspace.json # Workspace manifest
|
|
79
|
+
IDENTITY.md # Who the agent is
|
|
80
|
+
SOUL.md # How the agent behaves
|
|
81
|
+
USER.md # Human profile
|
|
82
|
+
memory/ # Structured daily logs
|
|
83
|
+
artifacts/ # Knowledge artifacts
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Every file is valid Markdown with structured YAML frontmatter — human-readable and machine-parseable.
|
|
87
|
+
|
|
88
|
+
## Part of AWP
|
|
89
|
+
|
|
90
|
+
This package is part of the [Agent Workspace Protocol](https://github.com/marcoloco23/awp) monorepo:
|
|
91
|
+
|
|
92
|
+
| Package | Description |
|
|
93
|
+
|---------|-------------|
|
|
94
|
+
| [@agent-workspace/core](https://www.npmjs.com/package/@agent-workspace/core) | Types, constants, JSON schemas |
|
|
95
|
+
| **@agent-workspace/cli** | CLI tool |
|
|
96
|
+
| [@agent-workspace/mcp-server](https://www.npmjs.com/package/@agent-workspace/mcp-server) | MCP server |
|
|
97
|
+
|
|
98
|
+
## License
|
|
99
|
+
|
|
100
|
+
Apache-2.0
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare function artifactCreateCommand(slug: string, options: {
|
|
2
|
+
title?: string;
|
|
3
|
+
tags?: string;
|
|
4
|
+
confidence?: number;
|
|
5
|
+
}): Promise<void>;
|
|
6
|
+
export declare function artifactCommitCommand(slug: string, options: {
|
|
7
|
+
message?: string;
|
|
8
|
+
confidence?: number;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
export declare function artifactLogCommand(slug: string): Promise<void>;
|
|
11
|
+
export declare function artifactListCommand(options: {
|
|
12
|
+
tag?: string;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
export declare function artifactSearchCommand(query: string): Promise<void>;
|
|
15
|
+
export declare function artifactMergeCommand(targetSlug: string, sourceSlug: string, options: {
|
|
16
|
+
message?: string;
|
|
17
|
+
}): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=artifact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../../src/commands/artifact.ts"],"names":[],"mappings":"AAsBA,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D,OAAO,CAAC,IAAI,CAAC,CAoEf;AAID,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAID,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCpE;AAID,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ChB;AAID,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CxE;AAID,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CA+Ef"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import { mkdir } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { AWP_VERSION, SMP_VERSION, ARTIFACTS_DIR, } from "@agent-workspace/core";
|
|
4
|
+
import { findWorkspaceRoot } from "../lib/workspace.js";
|
|
5
|
+
import { writeWorkspaceFile } from "../lib/frontmatter.js";
|
|
6
|
+
import { validateSlug, idFromSlug, slugFromId, slugToPath, loadArtifact, listArtifacts, getAgentDid, } from "../lib/artifact.js";
|
|
7
|
+
// --- awp artifact create ---
|
|
8
|
+
export async function artifactCreateCommand(slug, options) {
|
|
9
|
+
const root = await findWorkspaceRoot();
|
|
10
|
+
if (!root) {
|
|
11
|
+
console.error("Error: Not in an AWP workspace.");
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
if (!validateSlug(slug)) {
|
|
15
|
+
console.error(`Error: Invalid slug "${slug}". Must match [a-z0-9][a-z0-9-]*`);
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
// Ensure artifacts directory exists
|
|
19
|
+
await mkdir(join(root, ARTIFACTS_DIR), { recursive: true });
|
|
20
|
+
// Check if artifact already exists
|
|
21
|
+
try {
|
|
22
|
+
await loadArtifact(root, slug);
|
|
23
|
+
console.error(`Error: Artifact "${slug}" already exists.`);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// Good — doesn't exist yet
|
|
28
|
+
}
|
|
29
|
+
const did = await getAgentDid(root);
|
|
30
|
+
const now = new Date().toISOString();
|
|
31
|
+
const title = options.title ||
|
|
32
|
+
slug
|
|
33
|
+
.split("-")
|
|
34
|
+
.map((w) => w.charAt(0).toUpperCase() + w.slice(1))
|
|
35
|
+
.join(" ");
|
|
36
|
+
const tags = options.tags
|
|
37
|
+
? options.tags.split(",").map((t) => t.trim())
|
|
38
|
+
: undefined;
|
|
39
|
+
const frontmatter = {
|
|
40
|
+
awp: AWP_VERSION,
|
|
41
|
+
smp: SMP_VERSION,
|
|
42
|
+
type: "knowledge-artifact",
|
|
43
|
+
id: idFromSlug(slug),
|
|
44
|
+
title,
|
|
45
|
+
authors: [did],
|
|
46
|
+
version: 1,
|
|
47
|
+
confidence: options.confidence,
|
|
48
|
+
tags,
|
|
49
|
+
created: now,
|
|
50
|
+
lastModified: now,
|
|
51
|
+
modifiedBy: did,
|
|
52
|
+
provenance: [
|
|
53
|
+
{
|
|
54
|
+
agent: did,
|
|
55
|
+
action: "created",
|
|
56
|
+
timestamp: now,
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
};
|
|
60
|
+
const filePath = slugToPath(root, slug);
|
|
61
|
+
await writeWorkspaceFile({
|
|
62
|
+
frontmatter,
|
|
63
|
+
body: `\n# ${title}\n\n`,
|
|
64
|
+
filePath,
|
|
65
|
+
});
|
|
66
|
+
console.log(`Created artifacts/${slug}.md (version 1)`);
|
|
67
|
+
}
|
|
68
|
+
// --- awp artifact commit ---
|
|
69
|
+
export async function artifactCommitCommand(slug, options) {
|
|
70
|
+
const root = await findWorkspaceRoot();
|
|
71
|
+
if (!root) {
|
|
72
|
+
console.error("Error: Not in an AWP workspace.");
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
let artifact;
|
|
76
|
+
try {
|
|
77
|
+
artifact = await loadArtifact(root, slug);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
console.error(`Error: Artifact "${slug}" not found.`);
|
|
81
|
+
process.exit(1);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const did = await getAgentDid(root);
|
|
85
|
+
const now = new Date().toISOString();
|
|
86
|
+
const fm = artifact.frontmatter;
|
|
87
|
+
fm.version += 1;
|
|
88
|
+
fm.lastModified = now;
|
|
89
|
+
fm.modifiedBy = did;
|
|
90
|
+
if (options.confidence !== undefined) {
|
|
91
|
+
fm.confidence = options.confidence;
|
|
92
|
+
}
|
|
93
|
+
// Add author if not already present
|
|
94
|
+
if (!fm.authors.includes(did)) {
|
|
95
|
+
fm.authors.push(did);
|
|
96
|
+
}
|
|
97
|
+
const entry = {
|
|
98
|
+
agent: did,
|
|
99
|
+
action: "updated",
|
|
100
|
+
timestamp: now,
|
|
101
|
+
message: options.message,
|
|
102
|
+
confidence: options.confidence,
|
|
103
|
+
};
|
|
104
|
+
fm.provenance.push(entry);
|
|
105
|
+
await writeWorkspaceFile(artifact);
|
|
106
|
+
console.log(`Committed artifacts/${slug}.md (version ${fm.version})`);
|
|
107
|
+
}
|
|
108
|
+
// --- awp artifact log ---
|
|
109
|
+
export async function artifactLogCommand(slug) {
|
|
110
|
+
const root = await findWorkspaceRoot();
|
|
111
|
+
if (!root) {
|
|
112
|
+
console.error("Error: Not in an AWP workspace.");
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
let artifact;
|
|
116
|
+
try {
|
|
117
|
+
artifact = await loadArtifact(root, slug);
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
console.error(`Error: Artifact "${slug}" not found.`);
|
|
121
|
+
process.exit(1);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const fm = artifact.frontmatter;
|
|
125
|
+
const confStr = fm.confidence !== undefined ? `, confidence: ${fm.confidence}` : "";
|
|
126
|
+
console.log(`${fm.title} (version ${fm.version}${confStr})`);
|
|
127
|
+
console.log("");
|
|
128
|
+
// Print provenance in reverse chronological order
|
|
129
|
+
const entries = [...fm.provenance].reverse();
|
|
130
|
+
for (let i = 0; i < entries.length; i++) {
|
|
131
|
+
const e = entries[i];
|
|
132
|
+
const version = fm.provenance.length - i;
|
|
133
|
+
const msg = e.message ? ` "${e.message}"` : "";
|
|
134
|
+
console.log(` v${version} ${e.timestamp} ${e.agent} ${e.action}${msg}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// --- awp artifact list ---
|
|
138
|
+
export async function artifactListCommand(options) {
|
|
139
|
+
const root = await findWorkspaceRoot();
|
|
140
|
+
if (!root) {
|
|
141
|
+
console.error("Error: Not in an AWP workspace.");
|
|
142
|
+
process.exit(1);
|
|
143
|
+
}
|
|
144
|
+
let artifacts = await listArtifacts(root);
|
|
145
|
+
if (options.tag) {
|
|
146
|
+
const tag = options.tag.toLowerCase();
|
|
147
|
+
artifacts = artifacts.filter((a) => a.frontmatter.tags?.some((t) => t.toLowerCase() === tag));
|
|
148
|
+
}
|
|
149
|
+
if (artifacts.length === 0) {
|
|
150
|
+
console.log("No artifacts found.");
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Print header
|
|
154
|
+
const slugW = 28;
|
|
155
|
+
const titleW = 36;
|
|
156
|
+
console.log(`${"SLUG".padEnd(slugW)}${"TITLE".padEnd(titleW)}${"V".padEnd(4)}${"CONF".padEnd(6)}TAGS`);
|
|
157
|
+
for (const a of artifacts) {
|
|
158
|
+
const fm = a.frontmatter;
|
|
159
|
+
const slug = slugFromId(fm.id);
|
|
160
|
+
const title = fm.title.length > titleW - 2
|
|
161
|
+
? fm.title.slice(0, titleW - 4) + ".."
|
|
162
|
+
: fm.title;
|
|
163
|
+
const conf = fm.confidence !== undefined ? fm.confidence.toFixed(2) : "-";
|
|
164
|
+
const tags = fm.tags?.join(", ") || "";
|
|
165
|
+
console.log(`${slug.padEnd(slugW)}${title.padEnd(titleW)}${String(fm.version).padEnd(4)}${conf.padEnd(6)}${tags}`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// --- awp artifact search ---
|
|
169
|
+
export async function artifactSearchCommand(query) {
|
|
170
|
+
const root = await findWorkspaceRoot();
|
|
171
|
+
if (!root) {
|
|
172
|
+
console.error("Error: Not in an AWP workspace.");
|
|
173
|
+
process.exit(1);
|
|
174
|
+
}
|
|
175
|
+
const artifacts = await listArtifacts(root);
|
|
176
|
+
const queryLower = query.toLowerCase();
|
|
177
|
+
let found = 0;
|
|
178
|
+
for (const a of artifacts) {
|
|
179
|
+
const fm = a.frontmatter;
|
|
180
|
+
const titleMatch = fm.title.toLowerCase().includes(queryLower);
|
|
181
|
+
const tagMatch = fm.tags?.some((t) => t.toLowerCase().includes(queryLower));
|
|
182
|
+
const bodyMatch = a.body.toLowerCase().includes(queryLower);
|
|
183
|
+
if (titleMatch || tagMatch || bodyMatch) {
|
|
184
|
+
const slug = slugFromId(fm.id);
|
|
185
|
+
const confStr = fm.confidence !== undefined ? ` (confidence: ${fm.confidence})` : "";
|
|
186
|
+
console.log(`\n${slug}: ${fm.title} [v${fm.version}]${confStr}`);
|
|
187
|
+
if (bodyMatch && !titleMatch) {
|
|
188
|
+
// Show a snippet of the matching body content
|
|
189
|
+
const idx = a.body.toLowerCase().indexOf(queryLower);
|
|
190
|
+
const start = Math.max(0, idx - 40);
|
|
191
|
+
const end = Math.min(a.body.length, idx + queryLower.length + 40);
|
|
192
|
+
const snippet = a.body.slice(start, end).replace(/\n/g, " ").trim();
|
|
193
|
+
console.log(` ...${snippet}...`);
|
|
194
|
+
}
|
|
195
|
+
found++;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
if (found === 0) {
|
|
199
|
+
console.log(`No artifacts matching "${query}".`);
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
console.log(`\n${found} matching artifact(s).`);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
// --- awp artifact merge ---
|
|
206
|
+
export async function artifactMergeCommand(targetSlug, sourceSlug, options) {
|
|
207
|
+
const root = await findWorkspaceRoot();
|
|
208
|
+
if (!root) {
|
|
209
|
+
console.error("Error: Not in an AWP workspace.");
|
|
210
|
+
process.exit(1);
|
|
211
|
+
}
|
|
212
|
+
let target, source;
|
|
213
|
+
try {
|
|
214
|
+
target = await loadArtifact(root, targetSlug);
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
console.error(`Error: Target artifact "${targetSlug}" not found.`);
|
|
218
|
+
process.exit(1);
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
try {
|
|
222
|
+
source = await loadArtifact(root, sourceSlug);
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
console.error(`Error: Source artifact "${sourceSlug}" not found.`);
|
|
226
|
+
process.exit(1);
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
const did = await getAgentDid(root);
|
|
230
|
+
const now = new Date().toISOString();
|
|
231
|
+
const tfm = target.frontmatter;
|
|
232
|
+
const sfm = source.frontmatter;
|
|
233
|
+
// Append source body with attribution
|
|
234
|
+
const separator = `\n---\n*Merged from ${sfm.id} (version ${sfm.version}) on ${now}*\n\n`;
|
|
235
|
+
target.body += separator + source.body.trim() + "\n";
|
|
236
|
+
// Union authors
|
|
237
|
+
for (const author of sfm.authors) {
|
|
238
|
+
if (!tfm.authors.includes(author)) {
|
|
239
|
+
tfm.authors.push(author);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
if (!tfm.authors.includes(did)) {
|
|
243
|
+
tfm.authors.push(did);
|
|
244
|
+
}
|
|
245
|
+
// Union tags
|
|
246
|
+
if (sfm.tags) {
|
|
247
|
+
if (!tfm.tags)
|
|
248
|
+
tfm.tags = [];
|
|
249
|
+
for (const tag of sfm.tags) {
|
|
250
|
+
if (!tfm.tags.includes(tag)) {
|
|
251
|
+
tfm.tags.push(tag);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
// Confidence: take the minimum (conservative)
|
|
256
|
+
if (tfm.confidence !== undefined && sfm.confidence !== undefined) {
|
|
257
|
+
tfm.confidence = Math.min(tfm.confidence, sfm.confidence);
|
|
258
|
+
}
|
|
259
|
+
else if (sfm.confidence !== undefined) {
|
|
260
|
+
tfm.confidence = sfm.confidence;
|
|
261
|
+
}
|
|
262
|
+
// Bump version and provenance
|
|
263
|
+
tfm.version += 1;
|
|
264
|
+
tfm.lastModified = now;
|
|
265
|
+
tfm.modifiedBy = did;
|
|
266
|
+
const msg = options.message || `Merged from ${sfm.id} (version ${sfm.version})`;
|
|
267
|
+
tfm.provenance.push({
|
|
268
|
+
agent: did,
|
|
269
|
+
action: "merged",
|
|
270
|
+
timestamp: now,
|
|
271
|
+
message: msg,
|
|
272
|
+
confidence: tfm.confidence,
|
|
273
|
+
});
|
|
274
|
+
await writeWorkspaceFile(target);
|
|
275
|
+
console.log(`Merged ${sfm.id} into ${tfm.id} (now version ${tfm.version})`);
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=artifact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/commands/artifact.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AA2HA,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACzB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AA2HA,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACzB,OAAO,CAAC,IAAI,CAAC,CA6Cf"}
|
package/dist/commands/init.js
CHANGED
|
@@ -135,9 +135,11 @@ export async function initCommand(dir, options) {
|
|
|
135
135
|
// Create optional files
|
|
136
136
|
await writeFile(join(root, "USER.md"), USER_TEMPLATE, "utf-8");
|
|
137
137
|
console.log(" Created USER.md");
|
|
138
|
-
// Create memory
|
|
138
|
+
// Create memory and artifacts directories
|
|
139
139
|
await mkdir(join(root, "memory"), { recursive: true });
|
|
140
140
|
console.log(" Created memory/");
|
|
141
|
+
await mkdir(join(root, "artifacts"), { recursive: true });
|
|
142
|
+
console.log(" Created artifacts/");
|
|
141
143
|
console.log("");
|
|
142
144
|
console.log(`AWP workspace initialized (${manifest.awp}).`);
|
|
143
145
|
console.log(`Workspace ID: ${manifest.id}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,iBAAiB,GAAG;QAClB,WAAW;;;;;;;YAOP,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;;;;;;;;;;;;;CAenC,CAAC;AAEF,MAAM,aAAa,GAAG;QACd,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmElB,CAAC;AAEF,MAAM,aAAa,GAAG;QACd,WAAW;;;;;;;;;;;;;;;;;;;;CAoBlB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAW,EACX,OAA0B;IAE1B,MAAM,IAAI,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,oBAAoB,CAAC;IAElD,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,KAAK,CAAC,CAAC;IAExD,qCAAqC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzD,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EACzB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EACxC,OAAO,CACR,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,aAAa,aAAa,EAAE,CAAC,CAAC;IAE1C,wBAAwB;IACxB,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAErC,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAEjC,wBAAwB;IACxB,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAEjC,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AAMA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AAMA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA2GpD"}
|
package/dist/commands/inspect.js
CHANGED
|
@@ -82,6 +82,16 @@ export async function inspectCommand() {
|
|
|
82
82
|
catch {
|
|
83
83
|
console.log(" memory/: (not created)");
|
|
84
84
|
}
|
|
85
|
+
// Count artifacts
|
|
86
|
+
try {
|
|
87
|
+
const artDir = join(root, "artifacts");
|
|
88
|
+
const files = await readdir(artDir);
|
|
89
|
+
const artFiles = files.filter((f) => f.endsWith(".md"));
|
|
90
|
+
console.log(` artifacts/: ${artFiles.length} artifact(s)`);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// artifacts/ doesn't exist yet — that's fine
|
|
94
|
+
}
|
|
85
95
|
// Show capabilities and protocols
|
|
86
96
|
if (info.manifest.capabilities?.length) {
|
|
87
97
|
console.log("");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { validateCommand } from "./commands/validate.js";
|
|
|
6
6
|
import { inspectCommand } from "./commands/inspect.js";
|
|
7
7
|
import { identityGenerateCommand, identityExportCommand, } from "./commands/identity.js";
|
|
8
8
|
import { memoryLogCommand, memorySearchCommand } from "./commands/memory.js";
|
|
9
|
+
import { artifactCreateCommand, artifactCommitCommand, artifactLogCommand, artifactListCommand, artifactSearchCommand, artifactMergeCommand, } from "./commands/artifact.js";
|
|
9
10
|
const program = new Command();
|
|
10
11
|
program
|
|
11
12
|
.name("awp")
|
|
@@ -56,5 +57,46 @@ memory
|
|
|
56
57
|
.description("Search memory entries")
|
|
57
58
|
.argument("<query>", "Search query")
|
|
58
59
|
.action(memorySearchCommand);
|
|
60
|
+
// awp artifact
|
|
61
|
+
const artifact = program
|
|
62
|
+
.command("artifact")
|
|
63
|
+
.description("Knowledge artifact operations (SMP)");
|
|
64
|
+
artifact
|
|
65
|
+
.command("create")
|
|
66
|
+
.description("Create a new knowledge artifact")
|
|
67
|
+
.argument("<slug>", "Artifact slug (e.g., llm-research)")
|
|
68
|
+
.option("-t, --title <title>", "Artifact title")
|
|
69
|
+
.option("--tags <tags>", "Comma-separated tags")
|
|
70
|
+
.option("--confidence <n>", "Confidence score (0.0-1.0)", parseFloat)
|
|
71
|
+
.action(artifactCreateCommand);
|
|
72
|
+
artifact
|
|
73
|
+
.command("commit")
|
|
74
|
+
.description("Record a new version of an artifact")
|
|
75
|
+
.argument("<slug>", "Artifact slug")
|
|
76
|
+
.option("-m, --message <message>", "Commit message")
|
|
77
|
+
.option("--confidence <n>", "Updated confidence score", parseFloat)
|
|
78
|
+
.action(artifactCommitCommand);
|
|
79
|
+
artifact
|
|
80
|
+
.command("log")
|
|
81
|
+
.description("Show provenance history of an artifact")
|
|
82
|
+
.argument("<slug>", "Artifact slug")
|
|
83
|
+
.action(artifactLogCommand);
|
|
84
|
+
artifact
|
|
85
|
+
.command("list")
|
|
86
|
+
.description("List all artifacts in the workspace")
|
|
87
|
+
.option("--tag <tag>", "Filter by tag")
|
|
88
|
+
.action(artifactListCommand);
|
|
89
|
+
artifact
|
|
90
|
+
.command("search")
|
|
91
|
+
.description("Search artifacts by content or metadata")
|
|
92
|
+
.argument("<query>", "Search query")
|
|
93
|
+
.action(artifactSearchCommand);
|
|
94
|
+
artifact
|
|
95
|
+
.command("merge")
|
|
96
|
+
.description("Merge source artifact into target (additive)")
|
|
97
|
+
.argument("<target>", "Target artifact slug")
|
|
98
|
+
.argument("<source>", "Source artifact slug")
|
|
99
|
+
.option("-m, --message <message>", "Merge message")
|
|
100
|
+
.action(artifactMergeCommand);
|
|
59
101
|
program.parse();
|
|
60
102
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ArtifactFrontmatter } from "@agent-workspace/core";
|
|
2
|
+
import type { WorkspaceFile } from "@agent-workspace/core";
|
|
3
|
+
/**
|
|
4
|
+
* Validate an artifact slug
|
|
5
|
+
*/
|
|
6
|
+
export declare function validateSlug(slug: string): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Convert a slug to an artifact ID
|
|
9
|
+
*/
|
|
10
|
+
export declare function idFromSlug(slug: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Extract slug from an artifact ID
|
|
13
|
+
*/
|
|
14
|
+
export declare function slugFromId(id: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Get the file path for an artifact slug
|
|
17
|
+
*/
|
|
18
|
+
export declare function slugToPath(workspaceRoot: string, slug: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* Load an artifact by slug
|
|
21
|
+
*/
|
|
22
|
+
export declare function loadArtifact(workspaceRoot: string, slug: string): Promise<WorkspaceFile<ArtifactFrontmatter>>;
|
|
23
|
+
/**
|
|
24
|
+
* List all artifacts in the workspace
|
|
25
|
+
*/
|
|
26
|
+
export declare function listArtifacts(workspaceRoot: string): Promise<WorkspaceFile<ArtifactFrontmatter>[]>;
|
|
27
|
+
/**
|
|
28
|
+
* Get the agent DID from the workspace manifest, or "anonymous" if not set
|
|
29
|
+
*/
|
|
30
|
+
export declare function getAgentDid(workspaceRoot: string): Promise<string>;
|
|
31
|
+
//# sourceMappingURL=artifact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../../src/lib/artifact.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK3D;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAG7C;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC,CA0B/C;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOxE"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { readdir } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { ARTIFACTS_DIR } from "@agent-workspace/core";
|
|
4
|
+
import { parseWorkspaceFile } from "./frontmatter.js";
|
|
5
|
+
import { loadManifest } from "./workspace.js";
|
|
6
|
+
const SLUG_PATTERN = /^[a-z0-9][a-z0-9-]*$/;
|
|
7
|
+
/**
|
|
8
|
+
* Validate an artifact slug
|
|
9
|
+
*/
|
|
10
|
+
export function validateSlug(slug) {
|
|
11
|
+
return SLUG_PATTERN.test(slug);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Convert a slug to an artifact ID
|
|
15
|
+
*/
|
|
16
|
+
export function idFromSlug(slug) {
|
|
17
|
+
return `artifact:${slug}`;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Extract slug from an artifact ID
|
|
21
|
+
*/
|
|
22
|
+
export function slugFromId(id) {
|
|
23
|
+
return id.replace(/^artifact:/, "");
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get the file path for an artifact slug
|
|
27
|
+
*/
|
|
28
|
+
export function slugToPath(workspaceRoot, slug) {
|
|
29
|
+
return join(workspaceRoot, ARTIFACTS_DIR, `${slug}.md`);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Load an artifact by slug
|
|
33
|
+
*/
|
|
34
|
+
export async function loadArtifact(workspaceRoot, slug) {
|
|
35
|
+
const filePath = slugToPath(workspaceRoot, slug);
|
|
36
|
+
return parseWorkspaceFile(filePath);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* List all artifacts in the workspace
|
|
40
|
+
*/
|
|
41
|
+
export async function listArtifacts(workspaceRoot) {
|
|
42
|
+
const artifactsDir = join(workspaceRoot, ARTIFACTS_DIR);
|
|
43
|
+
let files;
|
|
44
|
+
try {
|
|
45
|
+
files = await readdir(artifactsDir);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
const mdFiles = files.filter((f) => f.endsWith(".md")).sort();
|
|
51
|
+
const artifacts = [];
|
|
52
|
+
for (const f of mdFiles) {
|
|
53
|
+
try {
|
|
54
|
+
const parsed = await parseWorkspaceFile(join(artifactsDir, f));
|
|
55
|
+
if (parsed.frontmatter.type === "knowledge-artifact") {
|
|
56
|
+
artifacts.push(parsed);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// Skip unparseable files
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return artifacts;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get the agent DID from the workspace manifest, or "anonymous" if not set
|
|
67
|
+
*/
|
|
68
|
+
export async function getAgentDid(workspaceRoot) {
|
|
69
|
+
try {
|
|
70
|
+
const manifest = await loadManifest(workspaceRoot);
|
|
71
|
+
return manifest.agent.did || "anonymous";
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return "anonymous";
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=artifact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/lib/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAE5C;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,YAAY,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,OAAO,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,aAAqB,EAAE,IAAY;IAC5D,OAAO,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,aAAqB,EACrB,IAAY;IAEZ,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,kBAAkB,CAAsB,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,aAAqB;IAErB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACxD,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,MAAM,SAAS,GAAyC,EAAE,CAAC;IAE3D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CACtB,CAAC;YACF,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBACrD,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,aAAqB;IACrD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,WAAW,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-workspace/cli",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "CLI for the Agent Workspace Protocol — init, validate, inspect, and manage agent workspaces",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"prepublishOnly": "npm run build"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@agent-workspace/core": "0.1
|
|
40
|
+
"@agent-workspace/core": "0.2.1",
|
|
41
41
|
"ajv": "^8.17.0",
|
|
42
42
|
"ajv-formats": "^3.0.1",
|
|
43
43
|
"commander": "^13.0.0",
|