@agent-workspace/cli 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +100 -0
  2. package/dist/commands/artifact.d.ts +1 -0
  3. package/dist/commands/artifact.d.ts.map +1 -1
  4. package/dist/commands/artifact.js +76 -15
  5. package/dist/commands/artifact.js.map +1 -1
  6. package/dist/commands/contract.d.ts +32 -0
  7. package/dist/commands/contract.d.ts.map +1 -0
  8. package/dist/commands/contract.js +237 -0
  9. package/dist/commands/contract.js.map +1 -0
  10. package/dist/commands/identity.d.ts.map +1 -1
  11. package/dist/commands/identity.js +3 -2
  12. package/dist/commands/identity.js.map +1 -1
  13. package/dist/commands/init.d.ts.map +1 -1
  14. package/dist/commands/init.js +6 -0
  15. package/dist/commands/init.js.map +1 -1
  16. package/dist/commands/inspect.d.ts.map +1 -1
  17. package/dist/commands/inspect.js +30 -0
  18. package/dist/commands/inspect.js.map +1 -1
  19. package/dist/commands/memory.d.ts +12 -1
  20. package/dist/commands/memory.d.ts.map +1 -1
  21. package/dist/commands/memory.js +72 -18
  22. package/dist/commands/memory.js.map +1 -1
  23. package/dist/commands/project.d.ts +23 -0
  24. package/dist/commands/project.d.ts.map +1 -0
  25. package/dist/commands/project.js +181 -0
  26. package/dist/commands/project.js.map +1 -0
  27. package/dist/commands/reputation.d.ts +25 -0
  28. package/dist/commands/reputation.d.ts.map +1 -0
  29. package/dist/commands/reputation.js +227 -0
  30. package/dist/commands/reputation.js.map +1 -0
  31. package/dist/commands/status.d.ts +5 -0
  32. package/dist/commands/status.d.ts.map +1 -0
  33. package/dist/commands/status.js +182 -0
  34. package/dist/commands/status.js.map +1 -0
  35. package/dist/commands/task.d.ts +33 -0
  36. package/dist/commands/task.d.ts.map +1 -0
  37. package/dist/commands/task.js +282 -0
  38. package/dist/commands/task.js.map +1 -0
  39. package/dist/commands/validate.d.ts +3 -1
  40. package/dist/commands/validate.d.ts.map +1 -1
  41. package/dist/commands/validate.js +101 -3
  42. package/dist/commands/validate.js.map +1 -1
  43. package/dist/index.js +146 -20
  44. package/dist/index.js.map +1 -1
  45. package/dist/lib/artifact.d.ts.map +1 -1
  46. package/dist/lib/artifact.js.map +1 -1
  47. package/dist/lib/artifact.test.d.ts +2 -0
  48. package/dist/lib/artifact.test.d.ts.map +1 -0
  49. package/dist/lib/artifact.test.js +41 -0
  50. package/dist/lib/artifact.test.js.map +1 -0
  51. package/dist/lib/contract.d.ts +27 -0
  52. package/dist/lib/contract.d.ts.map +1 -0
  53. package/dist/lib/contract.js +83 -0
  54. package/dist/lib/contract.js.map +1 -0
  55. package/dist/lib/project.d.ts +54 -0
  56. package/dist/lib/project.d.ts.map +1 -0
  57. package/dist/lib/project.js +153 -0
  58. package/dist/lib/project.js.map +1 -0
  59. package/dist/lib/reputation.d.ts +36 -0
  60. package/dist/lib/reputation.d.ts.map +1 -0
  61. package/dist/lib/reputation.js +101 -0
  62. package/dist/lib/reputation.js.map +1 -0
  63. package/dist/lib/reputation.test.d.ts +2 -0
  64. package/dist/lib/reputation.test.d.ts.map +1 -0
  65. package/dist/lib/reputation.test.js +112 -0
  66. package/dist/lib/reputation.test.js.map +1 -0
  67. package/dist/lib/schema.d.ts.map +1 -1
  68. package/dist/lib/schema.js +9 -5
  69. package/dist/lib/schema.js.map +1 -1
  70. package/dist/lib/workspace.d.ts +1 -1
  71. package/dist/lib/workspace.d.ts.map +1 -1
  72. package/dist/lib/workspace.js +1 -1
  73. package/dist/lib/workspace.js.map +1 -1
  74. package/dist/lib/workspace.test.d.ts +2 -0
  75. package/dist/lib/workspace.test.d.ts.map +1 -0
  76. package/dist/lib/workspace.test.js +36 -0
  77. package/dist/lib/workspace.test.js.map +1 -0
  78. package/package.json +7 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { ReputationProfileFrontmatter, ReputationDimension } from "@agent-workspace/core";
2
+ import type { WorkspaceFile } from "@agent-workspace/core";
3
+ export declare const DEFAULT_ALPHA = 0.15;
4
+ export declare const DEFAULT_DECAY_RATE = 0.02;
5
+ export declare const SCORE_FLOOR = 0.5;
6
+ /**
7
+ * Validate a reputation slug
8
+ */
9
+ export declare function validateSlug(slug: string): boolean;
10
+ /**
11
+ * Get the file path for a reputation profile slug
12
+ */
13
+ export declare function slugToProfilePath(workspaceRoot: string, slug: string): string;
14
+ /**
15
+ * Load a reputation profile by slug
16
+ */
17
+ export declare function loadProfile(workspaceRoot: string, slug: string): Promise<WorkspaceFile<ReputationProfileFrontmatter>>;
18
+ /**
19
+ * List all reputation profiles in the workspace
20
+ */
21
+ export declare function listProfiles(workspaceRoot: string): Promise<WorkspaceFile<ReputationProfileFrontmatter>[]>;
22
+ /**
23
+ * Apply time-based decay to a score.
24
+ * Scores decay toward 0.5 (unknown baseline).
25
+ */
26
+ export declare function computeDecayedScore(dim: ReputationDimension, now?: Date, decayRate?: number): number;
27
+ /**
28
+ * Update a dimension with a new signal using EWMA.
29
+ */
30
+ export declare function updateDimension(existing: ReputationDimension | undefined, signalScore: number, now?: Date, alpha?: number): ReputationDimension;
31
+ /**
32
+ * Compute confidence from sample size.
33
+ * confidence = 1 - 1/(1 + sampleSize * 0.1)
34
+ */
35
+ export declare function computeConfidence(sampleSize: number): number;
36
+ //# sourceMappingURL=reputation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reputation.d.ts","sourceRoot":"","sources":["../../src/lib/reputation.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE/F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK3D,eAAO,MAAM,aAAa,OAAwB,CAAC;AACnD,eAAO,MAAM,kBAAkB,OAAwB,CAAC;AACxD,eAAO,MAAM,WAAW,MAAsB,CAAC;AAE/C;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC,CAGtD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAwBxD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,mBAAmB,EACxB,GAAG,GAAE,IAAiB,EACtB,SAAS,GAAE,MAA2B,GACrC,MAAM,CAYR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,mBAAmB,GAAG,SAAS,EACzC,WAAW,EAAE,MAAM,EACnB,GAAG,GAAE,IAAiB,EACtB,KAAK,GAAE,MAAsB,GAC5B,mBAAmB,CAuBrB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5D"}
@@ -0,0 +1,101 @@
1
+ import { readdir } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { REPUTATION_DIR, REPUTATION_EWMA_ALPHA, REPUTATION_DECAY_RATE, REPUTATION_BASELINE, MS_PER_MONTH, } from "@agent-workspace/core";
4
+ import { parseWorkspaceFile } from "./frontmatter.js";
5
+ const SLUG_PATTERN = /^[a-z0-9][a-z0-9-]*$/;
6
+ // Re-export constants for backwards compatibility
7
+ export const DEFAULT_ALPHA = REPUTATION_EWMA_ALPHA;
8
+ export const DEFAULT_DECAY_RATE = REPUTATION_DECAY_RATE;
9
+ export const SCORE_FLOOR = REPUTATION_BASELINE;
10
+ /**
11
+ * Validate a reputation slug
12
+ */
13
+ export function validateSlug(slug) {
14
+ return SLUG_PATTERN.test(slug);
15
+ }
16
+ /**
17
+ * Get the file path for a reputation profile slug
18
+ */
19
+ export function slugToProfilePath(workspaceRoot, slug) {
20
+ return join(workspaceRoot, REPUTATION_DIR, `${slug}.md`);
21
+ }
22
+ /**
23
+ * Load a reputation profile by slug
24
+ */
25
+ export async function loadProfile(workspaceRoot, slug) {
26
+ const filePath = slugToProfilePath(workspaceRoot, slug);
27
+ return parseWorkspaceFile(filePath);
28
+ }
29
+ /**
30
+ * List all reputation profiles in the workspace
31
+ */
32
+ export async function listProfiles(workspaceRoot) {
33
+ const repDir = join(workspaceRoot, REPUTATION_DIR);
34
+ let files;
35
+ try {
36
+ files = await readdir(repDir);
37
+ }
38
+ catch {
39
+ return [];
40
+ }
41
+ const mdFiles = files.filter((f) => f.endsWith(".md")).sort();
42
+ const profiles = [];
43
+ for (const f of mdFiles) {
44
+ try {
45
+ const parsed = await parseWorkspaceFile(join(repDir, f));
46
+ if (parsed.frontmatter.type === "reputation-profile") {
47
+ profiles.push(parsed);
48
+ }
49
+ }
50
+ catch {
51
+ // Skip unparseable files
52
+ }
53
+ }
54
+ return profiles;
55
+ }
56
+ /**
57
+ * Apply time-based decay to a score.
58
+ * Scores decay toward 0.5 (unknown baseline).
59
+ */
60
+ export function computeDecayedScore(dim, now = new Date(), decayRate = DEFAULT_DECAY_RATE) {
61
+ const lastSignalDate = new Date(dim.lastSignal);
62
+ const monthsElapsed = (now.getTime() - lastSignalDate.getTime()) / MS_PER_MONTH;
63
+ if (monthsElapsed <= 0)
64
+ return dim.score;
65
+ const decayFactor = Math.exp(-decayRate * monthsElapsed);
66
+ // Decay toward 0.5 (unknown baseline)
67
+ const decayed = SCORE_FLOOR + (dim.score - SCORE_FLOOR) * decayFactor;
68
+ return Math.round(decayed * 1000) / 1000;
69
+ }
70
+ /**
71
+ * Update a dimension with a new signal using EWMA.
72
+ */
73
+ export function updateDimension(existing, signalScore, now = new Date(), alpha = DEFAULT_ALPHA) {
74
+ const timestamp = now.toISOString();
75
+ if (!existing) {
76
+ return {
77
+ score: signalScore,
78
+ confidence: computeConfidence(1),
79
+ sampleSize: 1,
80
+ lastSignal: timestamp,
81
+ };
82
+ }
83
+ // Apply decay to old score before EWMA
84
+ const decayed = computeDecayedScore(existing, now);
85
+ const newScore = alpha * signalScore + (1 - alpha) * decayed;
86
+ const newSampleSize = existing.sampleSize + 1;
87
+ return {
88
+ score: Math.round(newScore * 1000) / 1000,
89
+ confidence: computeConfidence(newSampleSize),
90
+ sampleSize: newSampleSize,
91
+ lastSignal: timestamp,
92
+ };
93
+ }
94
+ /**
95
+ * Compute confidence from sample size.
96
+ * confidence = 1 - 1/(1 + sampleSize * 0.1)
97
+ */
98
+ export function computeConfidence(sampleSize) {
99
+ return Math.round((1 - 1 / (1 + sampleSize * 0.1)) * 100) / 100;
100
+ }
101
+ //# sourceMappingURL=reputation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reputation.js","sourceRoot":"","sources":["../../src/lib/reputation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=reputation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reputation.test.d.ts","sourceRoot":"","sources":["../../src/lib/reputation.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,112 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { validateSlug, slugToProfilePath, computeDecayedScore, updateDimension, computeConfidence, DEFAULT_ALPHA, DEFAULT_DECAY_RATE, SCORE_FLOOR, } from "./reputation.js";
3
+ describe("reputation utilities", () => {
4
+ describe("validateSlug", () => {
5
+ it("accepts valid lowercase alphanumeric slugs", () => {
6
+ expect(validateSlug("agent-name")).toBe(true);
7
+ expect(validateSlug("agent123")).toBe(true);
8
+ expect(validateSlug("a")).toBe(true);
9
+ });
10
+ it("rejects invalid slugs", () => {
11
+ expect(validateSlug("")).toBe(false);
12
+ expect(validateSlug("Agent-Name")).toBe(false);
13
+ expect(validateSlug("-starts-hyphen")).toBe(false);
14
+ });
15
+ });
16
+ describe("slugToProfilePath", () => {
17
+ it("generates correct file path", () => {
18
+ expect(slugToProfilePath("/workspace", "agent-name")).toBe("/workspace/reputation/agent-name.md");
19
+ });
20
+ });
21
+ describe("computeConfidence", () => {
22
+ it("returns 0 for zero samples", () => {
23
+ expect(computeConfidence(0)).toBe(0);
24
+ });
25
+ it("increases with sample size", () => {
26
+ const c1 = computeConfidence(1);
27
+ const c5 = computeConfidence(5);
28
+ const c10 = computeConfidence(10);
29
+ expect(c1).toBeGreaterThan(0);
30
+ expect(c5).toBeGreaterThan(c1);
31
+ expect(c10).toBeGreaterThan(c5);
32
+ });
33
+ it("asymptotes toward 1", () => {
34
+ const c100 = computeConfidence(100);
35
+ expect(c100).toBeLessThanOrEqual(1);
36
+ expect(c100).toBeGreaterThan(0.9);
37
+ });
38
+ });
39
+ describe("computeDecayedScore", () => {
40
+ const baseDate = new Date("2024-01-15T12:00:00Z");
41
+ it("returns original score if no time has passed", () => {
42
+ const dim = {
43
+ score: 0.8,
44
+ confidence: 0.5,
45
+ sampleSize: 5,
46
+ lastSignal: baseDate.toISOString(),
47
+ };
48
+ const decayed = computeDecayedScore(dim, baseDate);
49
+ expect(decayed).toBe(0.8);
50
+ });
51
+ it("decays score toward 0.5 over time", () => {
52
+ const dim = {
53
+ score: 0.9,
54
+ confidence: 0.5,
55
+ sampleSize: 5,
56
+ lastSignal: baseDate.toISOString(),
57
+ };
58
+ // 6 months later
59
+ const futureDate = new Date("2024-07-15T12:00:00Z");
60
+ const decayed = computeDecayedScore(dim, futureDate);
61
+ expect(decayed).toBeLessThan(0.9);
62
+ expect(decayed).toBeGreaterThan(0.5);
63
+ });
64
+ it("decays low scores up toward 0.5", () => {
65
+ const dim = {
66
+ score: 0.2,
67
+ confidence: 0.5,
68
+ sampleSize: 5,
69
+ lastSignal: baseDate.toISOString(),
70
+ };
71
+ // 6 months later
72
+ const futureDate = new Date("2024-07-15T12:00:00Z");
73
+ const decayed = computeDecayedScore(dim, futureDate);
74
+ expect(decayed).toBeGreaterThan(0.2);
75
+ expect(decayed).toBeLessThan(0.5);
76
+ });
77
+ });
78
+ describe("updateDimension", () => {
79
+ it("creates new dimension for first signal", () => {
80
+ const now = new Date("2024-01-15T12:00:00Z");
81
+ const dim = updateDimension(undefined, 0.8, now);
82
+ expect(dim.score).toBe(0.8);
83
+ expect(dim.sampleSize).toBe(1);
84
+ expect(dim.lastSignal).toBe(now.toISOString());
85
+ expect(dim.confidence).toBeGreaterThan(0);
86
+ });
87
+ it("updates existing dimension with EWMA", () => {
88
+ const oldDate = new Date("2024-01-15T12:00:00Z");
89
+ const existing = {
90
+ score: 0.5,
91
+ confidence: 0.09,
92
+ sampleSize: 1,
93
+ lastSignal: oldDate.toISOString(),
94
+ };
95
+ const newDate = new Date("2024-01-16T12:00:00Z");
96
+ const updated = updateDimension(existing, 1.0, newDate);
97
+ // EWMA with alpha=0.15: 0.15 * 1.0 + 0.85 * ~0.5
98
+ expect(updated.score).toBeGreaterThan(0.5);
99
+ expect(updated.score).toBeLessThan(1.0);
100
+ expect(updated.sampleSize).toBe(2);
101
+ expect(updated.confidence).toBeGreaterThan(existing.confidence);
102
+ });
103
+ });
104
+ describe("constants", () => {
105
+ it("has expected default values", () => {
106
+ expect(DEFAULT_ALPHA).toBe(0.15);
107
+ expect(DEFAULT_DECAY_RATE).toBe(0.02);
108
+ expect(SCORE_FLOOR).toBe(0.5);
109
+ });
110
+ });
111
+ });
112
+ //# sourceMappingURL=reputation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reputation.test.js","sourceRoot":"","sources":["../../src/lib/reputation.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/lib/schema.ts"],"names":[],"mappings":"AAwCA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CA0B3B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAqB3B"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/lib/schema.ts"],"names":[],"mappings":"AAgEA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CA0B3B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAqB/F"}
@@ -1,17 +1,21 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import { SCHEMA_MAP, getSchemaPath } from "@agent-workspace/core";
3
- // Dynamic import to handle CJS/ESM interop
4
3
  let ajvInstance = null;
5
4
  const schemaCache = new Map();
6
5
  async function getAjv() {
7
6
  if (!ajvInstance) {
8
7
  const AjvModule = await import("ajv");
9
8
  const AjvFormatsModule = await import("ajv-formats");
10
- const Ajv = AjvModule.default?.default ?? AjvModule.default ?? AjvModule;
9
+ // Handle ESM/CJS interop
10
+ const AjvClass = AjvModule.default?.default ??
11
+ AjvModule.default ??
12
+ AjvModule;
11
13
  const addFormats = AjvFormatsModule.default?.default ??
12
14
  AjvFormatsModule.default ??
13
15
  AjvFormatsModule;
14
- ajvInstance = new Ajv({ allErrors: true, strict: false });
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ ajvInstance = new AjvClass({ allErrors: true, strict: false });
18
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
19
  addFormats(ajvInstance);
16
20
  }
17
21
  return ajvInstance;
@@ -48,7 +52,7 @@ export async function validateFrontmatter(type, data) {
48
52
  if (valid) {
49
53
  return { valid: true, errors: [] };
50
54
  }
51
- const errors = (validate.errors || []).map((e) => `${e.instancePath || "/"}: ${e.message}`);
55
+ const errors = (validate.errors ?? []).map((e) => `${e.instancePath || "/"}: ${e.message}`);
52
56
  return { valid: false, errors };
53
57
  }
54
58
  catch (err) {
@@ -70,7 +74,7 @@ export async function validateManifest(data) {
70
74
  if (valid) {
71
75
  return { valid: true, errors: [] };
72
76
  }
73
- const errors = (validate.errors || []).map((e) => `${e.instancePath || "/"}: ${e.message}`);
77
+ const errors = (validate.errors ?? []).map((e) => `${e.instancePath || "/"}: ${e.message}`);
74
78
  return { valid: false, errors };
75
79
  }
76
80
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/lib/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/lib/schema.ts"],"names":[],"mappings":"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"}
@@ -33,5 +33,5 @@ export declare function generateWorkspaceId(): string;
33
33
  /**
34
34
  * Create default workspace manifest
35
35
  */
36
- export declare function createDefaultManifest(name: string, agentName: string): WorkspaceManifest;
36
+ export declare function createDefaultManifest(name: string, _agentName?: string): WorkspaceManifest;
37
37
  //# sourceMappingURL=workspace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/lib/workspace.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE;QACL,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAA;SAAE,EAAE,CAAC;QAC9D,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,OAAO,CAAA;SAAE,EAAE,CAAC;KAC/C,CAAC;CACH;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcxB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAI5B;AAcD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,CA8BxB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAK5C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,iBAAiB,CAenB"}
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/lib/workspace.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE;QACL,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAA;SAAE,EAAE,CAAC;QAC9D,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,OAAO,CAAA;SAAE,EAAE,CAAC;KAC/C,CAAC;CACH;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcjF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAIpF;AAcD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA8BpF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAK5C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAe1F"}
@@ -80,7 +80,7 @@ export function generateWorkspaceId() {
80
80
  /**
81
81
  * Create default workspace manifest
82
82
  */
83
- export function createDefaultManifest(name, agentName) {
83
+ export function createDefaultManifest(name, _agentName) {
84
84
  return {
85
85
  awp: AWP_VERSION,
86
86
  id: generateWorkspaceId(),
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/lib/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAkB,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,aAAa,EACb,cAAc,EACd,cAAc,EACd,WAAW,GAEZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAWtD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAiB;IAEjB,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAE1B,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;YAC3B,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,aAAqB;IAErB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAsB,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,aAAqB;IAErB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC9C,KAAK;oBACH,OAAO,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,QAAQ;wBAC1C,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,GAAG,KAAK,CAAC;YAChB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACjC,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,qBAAqB,GAAG,EAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,SAAiB;IAEjB,OAAO;QACL,GAAG,EAAE,WAAW;QAChB,EAAE,EAAE,mBAAmB,EAAE;QACzB,IAAI;QACJ,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACjC,KAAK,EAAE;YACL,YAAY,EAAE,aAAa;SAC5B;QACD,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE;YACT,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,IAAI;SACV;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/lib/workspace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=workspace.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.test.d.ts","sourceRoot":"","sources":["../../src/lib/workspace.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,36 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { generateWorkspaceId, createDefaultManifest } from "./workspace.js";
3
+ import { AWP_VERSION } from "@agent-workspace/core";
4
+ describe("workspace utilities", () => {
5
+ describe("generateWorkspaceId", () => {
6
+ it("generates a valid URN format", () => {
7
+ const id = generateWorkspaceId();
8
+ expect(id).toMatch(/^urn:awp:workspace:[a-f0-9]{16}$/);
9
+ });
10
+ it("generates unique IDs", () => {
11
+ const id1 = generateWorkspaceId();
12
+ const id2 = generateWorkspaceId();
13
+ expect(id1).not.toBe(id2);
14
+ });
15
+ });
16
+ describe("createDefaultManifest", () => {
17
+ it("creates a manifest with required fields", () => {
18
+ const manifest = createDefaultManifest("test-workspace");
19
+ expect(manifest.awp).toBe(AWP_VERSION);
20
+ expect(manifest.name).toBe("test-workspace");
21
+ expect(manifest.id).toMatch(/^urn:awp:workspace:/);
22
+ expect(manifest.created).toBeDefined();
23
+ expect(manifest.agent.identityFile).toBe("IDENTITY.md");
24
+ expect(manifest.capabilities).toEqual([]);
25
+ expect(manifest.protocols).toEqual({ a2a: true, mcp: true });
26
+ });
27
+ it("sets created timestamp to current time", () => {
28
+ const before = new Date().toISOString();
29
+ const manifest = createDefaultManifest("test");
30
+ const after = new Date().toISOString();
31
+ expect(manifest.created >= before).toBe(true);
32
+ expect(manifest.created <= after).toBe(true);
33
+ });
34
+ });
35
+ });
36
+ //# sourceMappingURL=workspace.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.test.js","sourceRoot":"","sources":["../../src/lib/workspace.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,EAAE,GAAG,mBAAmB,EAAE,CAAC;YACjC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;YAEzD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC7C,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;YACnD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACxD,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAEvC,MAAM,CAAC,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,CAAC,QAAQ,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-workspace/cli",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
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",
@@ -33,17 +33,22 @@
33
33
  "scripts": {
34
34
  "build": "tsc",
35
35
  "dev": "tsc --watch",
36
+ "lint": "eslint src/",
37
+ "test": "vitest run",
38
+ "test:watch": "vitest",
36
39
  "typecheck": "tsc --noEmit",
37
40
  "prepublishOnly": "npm run build"
38
41
  },
39
42
  "dependencies": {
40
- "@agent-workspace/core": "0.2.0",
43
+ "@agent-workspace/core": "0.4.0",
41
44
  "ajv": "^8.17.0",
42
45
  "ajv-formats": "^3.0.1",
43
46
  "commander": "^13.0.0",
47
+ "fuse.js": "^7.1.0",
44
48
  "gray-matter": "^4.0.3"
45
49
  },
46
50
  "devDependencies": {
51
+ "@types/bs58": "^4.0.4",
47
52
  "@types/node": "^22.0.0",
48
53
  "typescript": "^5.7.0"
49
54
  }