@aipper/aiws 0.0.44 → 0.0.46

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 (45) hide show
  1. package/dist/cli.js +162 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/goal-advance.d.ts +20 -0
  4. package/dist/commands/goal-advance.js +112 -0
  5. package/dist/commands/goal-advance.js.map +1 -0
  6. package/dist/commands/goal-help.d.ts +1 -0
  7. package/dist/commands/goal-help.js +28 -0
  8. package/dist/commands/goal-help.js.map +1 -0
  9. package/dist/commands/goal-validate-state.d.ts +92 -0
  10. package/dist/commands/goal-validate-state.js +371 -0
  11. package/dist/commands/goal-validate-state.js.map +1 -0
  12. package/dist/commands/goal-validate.d.ts +16 -0
  13. package/dist/commands/goal-validate.js +100 -0
  14. package/dist/commands/goal-validate.js.map +1 -0
  15. package/dist/commands/memory.d.ts +35 -0
  16. package/dist/commands/memory.js +239 -0
  17. package/dist/commands/memory.js.map +1 -0
  18. package/dist/memory-bank/disclosure.d.ts +24 -0
  19. package/dist/memory-bank/disclosure.js +143 -0
  20. package/dist/memory-bank/disclosure.js.map +1 -0
  21. package/dist/memory-bank/index.d.ts +24 -0
  22. package/dist/memory-bank/index.js +137 -0
  23. package/dist/memory-bank/index.js.map +1 -0
  24. package/dist/memory-bank/link.d.ts +21 -0
  25. package/dist/memory-bank/link.js +113 -0
  26. package/dist/memory-bank/link.js.map +1 -0
  27. package/dist/memory-bank/search.d.ts +6 -0
  28. package/dist/memory-bank/search.js +88 -0
  29. package/dist/memory-bank/search.js.map +1 -0
  30. package/dist/memory-bank/seed.d.ts +23 -0
  31. package/dist/memory-bank/seed.js +164 -0
  32. package/dist/memory-bank/seed.js.map +1 -0
  33. package/dist/memory-bank/store.d.ts +24 -0
  34. package/dist/memory-bank/store.js +193 -0
  35. package/dist/memory-bank/store.js.map +1 -0
  36. package/dist/memory-bank/types.d.ts +45 -0
  37. package/dist/memory-bank/types.js +2 -0
  38. package/dist/memory-bank/types.js.map +1 -0
  39. package/dist/memory-bank/uri.d.ts +16 -0
  40. package/dist/memory-bank/uri.js +52 -0
  41. package/dist/memory-bank/uri.js.map +1 -0
  42. package/dist/workspace.d.ts +1 -0
  43. package/dist/workspace.js +13 -0
  44. package/dist/workspace.js.map +1 -1
  45. package/package.json +4 -2
@@ -0,0 +1,45 @@
1
+ export interface MemoryEntry {
2
+ uri: string;
3
+ title: string;
4
+ domain: string;
5
+ path: string;
6
+ created: string;
7
+ updated: string;
8
+ disclosure?: string;
9
+ tags: string[];
10
+ body: string;
11
+ frontmatter: Record<string, unknown>;
12
+ }
13
+ export interface IndexData {
14
+ memories: Record<string, IndexEntry>;
15
+ }
16
+ export interface IndexEntry {
17
+ title: string;
18
+ domain: string;
19
+ path: string;
20
+ created: string;
21
+ updated: string;
22
+ tags: string[];
23
+ disclosure?: string;
24
+ }
25
+ export interface Link {
26
+ from: string;
27
+ to: string;
28
+ created: string;
29
+ }
30
+ export interface SearchResult {
31
+ uri: string;
32
+ title: string;
33
+ snippet: string;
34
+ }
35
+ export interface WriteOptions {
36
+ title?: string;
37
+ tags?: string[];
38
+ disclosure?: string;
39
+ }
40
+ export interface RelatedEntry {
41
+ uri: string;
42
+ title: string;
43
+ disclosure: string;
44
+ snippet: string;
45
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/memory-bank/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Split `domain://path` into domain and path parts.
3
+ * Throws UserError if the format is invalid.
4
+ */
5
+ export declare function parseUri(uri: string): {
6
+ domain: string;
7
+ path: string;
8
+ };
9
+ /**
10
+ * Convert domain and path to a relative file path under memory-bank/.
11
+ */
12
+ export declare function uriToRelPath(domain: string, path: string): string;
13
+ /**
14
+ * Validate a memory URI format without throwing.
15
+ */
16
+ export declare function validateUri(uri: string): boolean;
@@ -0,0 +1,52 @@
1
+ import { UserError } from "../errors.js";
2
+ const SEGMENT_RE = /^[a-z0-9]+(-[a-z0-9]+)*$/;
3
+ /**
4
+ * Split `domain://path` into domain and path parts.
5
+ * Throws UserError if the format is invalid.
6
+ */
7
+ export function parseUri(uri) {
8
+ const sep = "://";
9
+ const idx = uri.indexOf(sep);
10
+ if (idx === -1) {
11
+ throw new UserError(`Invalid memory URI format: ${uri}`, {
12
+ details: "Expected format: domain://path (e.g. core://architecture)",
13
+ });
14
+ }
15
+ const domain = uri.slice(0, idx);
16
+ const path = uri.slice(idx + sep.length);
17
+ if (!domain || !path) {
18
+ throw new UserError(`Invalid memory URI: domain and path must not be empty`, {
19
+ details: `Parsed domain="${domain}" path="${path}" from "${uri}"`,
20
+ });
21
+ }
22
+ if (!SEGMENT_RE.test(domain)) {
23
+ throw new UserError(`Invalid domain in memory URI: "${domain}"`, {
24
+ details: "Domain must match: [a-z0-9]+(-[a-z0-9]+)*",
25
+ });
26
+ }
27
+ if (!SEGMENT_RE.test(path)) {
28
+ throw new UserError(`Invalid path in memory URI: "${path}"`, {
29
+ details: "Path must match: [a-z0-9]+(-[a-z0-9]+)*",
30
+ });
31
+ }
32
+ return { domain, path };
33
+ }
34
+ /**
35
+ * Convert domain and path to a relative file path under memory-bank/.
36
+ */
37
+ export function uriToRelPath(domain, path) {
38
+ return `${domain}/${path}.md`;
39
+ }
40
+ /**
41
+ * Validate a memory URI format without throwing.
42
+ */
43
+ export function validateUri(uri) {
44
+ try {
45
+ parseUri(uri);
46
+ return true;
47
+ }
48
+ catch {
49
+ return false;
50
+ }
51
+ }
52
+ //# sourceMappingURL=uri.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uri.js","sourceRoot":"","sources":["../../src/memory-bank/uri.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,MAAM,GAAG,GAAG,KAAK,CAAC;IAClB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,SAAS,CAAC,8BAA8B,GAAG,EAAE,EAAE;YACvD,OAAO,EAAE,2DAA2D;SACrE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,uDAAuD,EAAE;YAC3E,OAAO,EAAE,kBAAkB,MAAM,WAAW,IAAI,WAAW,GAAG,GAAG;SAClE,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,kCAAkC,MAAM,GAAG,EAAE;YAC/D,OAAO,EAAE,2CAA2C;SACrD,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,SAAS,CAAC,gCAAgC,IAAI,GAAG,EAAE;YAC3D,OAAO,EAAE,yCAAyC;SACnD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,IAAY;IACvD,OAAO,GAAG,MAAM,IAAI,IAAI,KAAK,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,QAAQ,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -2,3 +2,4 @@ export interface ResolveWorkspaceRootOptions {
2
2
  create?: boolean;
3
3
  }
4
4
  export declare function resolveWorkspaceRoot(targetPath: string, options?: ResolveWorkspaceRootOptions): Promise<string>;
5
+ export declare function getWorkspaceRoot(): Promise<string>;
package/dist/workspace.js CHANGED
@@ -16,4 +16,17 @@ export async function resolveWorkspaceRoot(targetPath, options) {
16
16
  }
17
17
  throw new UserError(`Path does not exist: ${abs}`);
18
18
  }
19
+ export async function getWorkspaceRoot() {
20
+ let dir = process.cwd();
21
+ while (true) {
22
+ if (await pathExists(path.join(dir, ".aiws")))
23
+ return dir;
24
+ if (await pathExists(path.join(dir, "package.json")))
25
+ return dir;
26
+ const parent = path.dirname(dir);
27
+ if (parent === dir)
28
+ throw new UserError("Cannot find workspace root (no .aiws/ or package.json found)");
29
+ dir = parent;
30
+ }
31
+ }
19
32
  //# sourceMappingURL=workspace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAMxC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAAkB,EAClB,OAAqC;IAErC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,IAAI,GAAG,CAAC,CAAC;IAC3D,IAAI,MAAM,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;YAAE,MAAM,IAAI,SAAS,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;QACtE,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,IAAI,SAAS,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAMxC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAAkB,EAClB,OAAqC;IAErC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,IAAI,GAAG,CAAC,CAAC;IAC3D,IAAI,MAAM,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;YAAE,MAAM,IAAI,SAAS,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;QACtE,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,IAAI,SAAS,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;QAC1D,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAC;QACxG,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "@aipper/aiws",
3
- "version": "0.0.44",
3
+ "version": "0.0.46",
4
4
  "description": "AI Workspace CLI (init/update/validate) for Claude Code / OpenCode / Codex.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "aiws": "./bin/aiws.js"
8
8
  },
9
9
  "dependencies": {
10
- "@aipper/aiws-spec": "0.0.44"
10
+ "@aipper/aiws-spec": "0.0.46",
11
+ "js-yaml": "^4.1.0"
11
12
  },
12
13
  "files": [
13
14
  "bin",
@@ -26,6 +27,7 @@
26
27
  "access": "public"
27
28
  },
28
29
  "devDependencies": {
30
+ "@types/js-yaml": "^4.0.9",
29
31
  "@types/node": "^25.9.0",
30
32
  "typescript": "^6.0.3",
31
33
  "vitest": "^3.0.0"