create-agentfs 0.1.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.
Files changed (211) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +238 -0
  3. package/dist/cli.d.ts +51 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +246 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/compile.d.ts +48 -0
  8. package/dist/commands/compile.d.ts.map +1 -0
  9. package/dist/commands/compile.js +228 -0
  10. package/dist/commands/compile.js.map +1 -0
  11. package/dist/commands/cron.d.ts +18 -0
  12. package/dist/commands/cron.d.ts.map +1 -0
  13. package/dist/commands/cron.js +95 -0
  14. package/dist/commands/cron.js.map +1 -0
  15. package/dist/commands/doctor.d.ts +11 -0
  16. package/dist/commands/doctor.d.ts.map +1 -0
  17. package/dist/commands/doctor.js +199 -0
  18. package/dist/commands/doctor.js.map +1 -0
  19. package/dist/commands/memory.d.ts +19 -0
  20. package/dist/commands/memory.d.ts.map +1 -0
  21. package/dist/commands/memory.js +213 -0
  22. package/dist/commands/memory.js.map +1 -0
  23. package/dist/commands/onboard.d.ts +31 -0
  24. package/dist/commands/onboard.d.ts.map +1 -0
  25. package/dist/commands/onboard.js +362 -0
  26. package/dist/commands/onboard.js.map +1 -0
  27. package/dist/commands/secret.d.ts +13 -0
  28. package/dist/commands/secret.d.ts.map +1 -0
  29. package/dist/commands/secret.js +109 -0
  30. package/dist/commands/secret.js.map +1 -0
  31. package/dist/commands/security.d.ts +16 -0
  32. package/dist/commands/security.d.ts.map +1 -0
  33. package/dist/commands/security.js +203 -0
  34. package/dist/commands/security.js.map +1 -0
  35. package/dist/commands/sync.d.ts +14 -0
  36. package/dist/commands/sync.d.ts.map +1 -0
  37. package/dist/commands/sync.js +84 -0
  38. package/dist/commands/sync.js.map +1 -0
  39. package/dist/compilers/agent-map.d.ts +34 -0
  40. package/dist/compilers/agent-map.d.ts.map +1 -0
  41. package/dist/compilers/agent-map.js +66 -0
  42. package/dist/compilers/agent-map.js.map +1 -0
  43. package/dist/compilers/base.d.ts +67 -0
  44. package/dist/compilers/base.d.ts.map +1 -0
  45. package/dist/compilers/base.js +183 -0
  46. package/dist/compilers/base.js.map +1 -0
  47. package/dist/compilers/claude.d.ts +26 -0
  48. package/dist/compilers/claude.d.ts.map +1 -0
  49. package/dist/compilers/claude.js +151 -0
  50. package/dist/compilers/claude.js.map +1 -0
  51. package/dist/compilers/cursor.d.ts +11 -0
  52. package/dist/compilers/cursor.d.ts.map +1 -0
  53. package/dist/compilers/cursor.js +52 -0
  54. package/dist/compilers/cursor.js.map +1 -0
  55. package/dist/compilers/index.d.ts +14 -0
  56. package/dist/compilers/index.d.ts.map +1 -0
  57. package/dist/compilers/index.js +14 -0
  58. package/dist/compilers/index.js.map +1 -0
  59. package/dist/compilers/openclaw.d.ts +12 -0
  60. package/dist/compilers/openclaw.d.ts.map +1 -0
  61. package/dist/compilers/openclaw.js +51 -0
  62. package/dist/compilers/openclaw.js.map +1 -0
  63. package/dist/cron/index.d.ts +10 -0
  64. package/dist/cron/index.d.ts.map +1 -0
  65. package/dist/cron/index.js +9 -0
  66. package/dist/cron/index.js.map +1 -0
  67. package/dist/cron/jobs/consolidate.d.ts +16 -0
  68. package/dist/cron/jobs/consolidate.d.ts.map +1 -0
  69. package/dist/cron/jobs/consolidate.js +61 -0
  70. package/dist/cron/jobs/consolidate.js.map +1 -0
  71. package/dist/cron/jobs/heartbeat.d.ts +11 -0
  72. package/dist/cron/jobs/heartbeat.d.ts.map +1 -0
  73. package/dist/cron/jobs/heartbeat.js +66 -0
  74. package/dist/cron/jobs/heartbeat.js.map +1 -0
  75. package/dist/cron/jobs/inbox-triage.d.ts +11 -0
  76. package/dist/cron/jobs/inbox-triage.d.ts.map +1 -0
  77. package/dist/cron/jobs/inbox-triage.js +85 -0
  78. package/dist/cron/jobs/inbox-triage.js.map +1 -0
  79. package/dist/cron/runner.d.ts +32 -0
  80. package/dist/cron/runner.d.ts.map +1 -0
  81. package/dist/cron/runner.js +69 -0
  82. package/dist/cron/runner.js.map +1 -0
  83. package/dist/cron/types.d.ts +21 -0
  84. package/dist/cron/types.d.ts.map +1 -0
  85. package/dist/cron/types.js +6 -0
  86. package/dist/cron/types.js.map +1 -0
  87. package/dist/generators/filesystem.d.ts +52 -0
  88. package/dist/generators/filesystem.d.ts.map +1 -0
  89. package/dist/generators/filesystem.js +155 -0
  90. package/dist/generators/filesystem.js.map +1 -0
  91. package/dist/generators/ignore.d.ts +38 -0
  92. package/dist/generators/ignore.d.ts.map +1 -0
  93. package/dist/generators/ignore.js +154 -0
  94. package/dist/generators/ignore.js.map +1 -0
  95. package/dist/generators/index.d.ts +14 -0
  96. package/dist/generators/index.d.ts.map +1 -0
  97. package/dist/generators/index.js +14 -0
  98. package/dist/generators/index.js.map +1 -0
  99. package/dist/generators/init.d.ts +37 -0
  100. package/dist/generators/init.d.ts.map +1 -0
  101. package/dist/generators/init.js +169 -0
  102. package/dist/generators/init.js.map +1 -0
  103. package/dist/generators/manifest.d.ts +31 -0
  104. package/dist/generators/manifest.d.ts.map +1 -0
  105. package/dist/generators/manifest.js +123 -0
  106. package/dist/generators/manifest.js.map +1 -0
  107. package/dist/generators/memory.d.ts +36 -0
  108. package/dist/generators/memory.d.ts.map +1 -0
  109. package/dist/generators/memory.js +106 -0
  110. package/dist/generators/memory.js.map +1 -0
  111. package/dist/generators/profiles.d.ts +22 -0
  112. package/dist/generators/profiles.d.ts.map +1 -0
  113. package/dist/generators/profiles.js +92 -0
  114. package/dist/generators/profiles.js.map +1 -0
  115. package/dist/generators/prompts.d.ts +24 -0
  116. package/dist/generators/prompts.d.ts.map +1 -0
  117. package/dist/generators/prompts.js +122 -0
  118. package/dist/generators/prompts.js.map +1 -0
  119. package/dist/generators/scaffold.d.ts +29 -0
  120. package/dist/generators/scaffold.d.ts.map +1 -0
  121. package/dist/generators/scaffold.js +90 -0
  122. package/dist/generators/scaffold.js.map +1 -0
  123. package/dist/index.d.ts +14 -0
  124. package/dist/index.d.ts.map +1 -0
  125. package/dist/index.js +13 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/memory/confidence.d.ts +69 -0
  128. package/dist/memory/confidence.d.ts.map +1 -0
  129. package/dist/memory/confidence.js +125 -0
  130. package/dist/memory/confidence.js.map +1 -0
  131. package/dist/memory/episodic.d.ts +40 -0
  132. package/dist/memory/episodic.d.ts.map +1 -0
  133. package/dist/memory/episodic.js +139 -0
  134. package/dist/memory/episodic.js.map +1 -0
  135. package/dist/memory/index.d.ts +17 -0
  136. package/dist/memory/index.d.ts.map +1 -0
  137. package/dist/memory/index.js +17 -0
  138. package/dist/memory/index.js.map +1 -0
  139. package/dist/memory/parser.d.ts +73 -0
  140. package/dist/memory/parser.d.ts.map +1 -0
  141. package/dist/memory/parser.js +156 -0
  142. package/dist/memory/parser.js.map +1 -0
  143. package/dist/memory/procedural.d.ts +43 -0
  144. package/dist/memory/procedural.d.ts.map +1 -0
  145. package/dist/memory/procedural.js +126 -0
  146. package/dist/memory/procedural.js.map +1 -0
  147. package/dist/secrets/exfil-guard.d.ts +31 -0
  148. package/dist/secrets/exfil-guard.d.ts.map +1 -0
  149. package/dist/secrets/exfil-guard.js +51 -0
  150. package/dist/secrets/exfil-guard.js.map +1 -0
  151. package/dist/secrets/index.d.ts +8 -0
  152. package/dist/secrets/index.d.ts.map +1 -0
  153. package/dist/secrets/index.js +7 -0
  154. package/dist/secrets/index.js.map +1 -0
  155. package/dist/secrets/vault.d.ts +63 -0
  156. package/dist/secrets/vault.d.ts.map +1 -0
  157. package/dist/secrets/vault.js +163 -0
  158. package/dist/secrets/vault.js.map +1 -0
  159. package/dist/security/claude-compiler.d.ts +28 -0
  160. package/dist/security/claude-compiler.d.ts.map +1 -0
  161. package/dist/security/claude-compiler.js +66 -0
  162. package/dist/security/claude-compiler.js.map +1 -0
  163. package/dist/security/index.d.ts +7 -0
  164. package/dist/security/index.d.ts.map +1 -0
  165. package/dist/security/index.js +7 -0
  166. package/dist/security/index.js.map +1 -0
  167. package/dist/security/parser.d.ts +47 -0
  168. package/dist/security/parser.d.ts.map +1 -0
  169. package/dist/security/parser.js +136 -0
  170. package/dist/security/parser.js.map +1 -0
  171. package/dist/sync/index.d.ts +7 -0
  172. package/dist/sync/index.d.ts.map +1 -0
  173. package/dist/sync/index.js +6 -0
  174. package/dist/sync/index.js.map +1 -0
  175. package/dist/sync/sync.d.ts +46 -0
  176. package/dist/sync/sync.d.ts.map +1 -0
  177. package/dist/sync/sync.js +174 -0
  178. package/dist/sync/sync.js.map +1 -0
  179. package/dist/types/compiler.d.ts +81 -0
  180. package/dist/types/compiler.d.ts.map +1 -0
  181. package/dist/types/compiler.js +10 -0
  182. package/dist/types/compiler.js.map +1 -0
  183. package/dist/types/index.d.ts +15 -0
  184. package/dist/types/index.d.ts.map +1 -0
  185. package/dist/types/index.js +10 -0
  186. package/dist/types/index.js.map +1 -0
  187. package/dist/types/manifest.d.ts +112 -0
  188. package/dist/types/manifest.d.ts.map +1 -0
  189. package/dist/types/manifest.js +10 -0
  190. package/dist/types/manifest.js.map +1 -0
  191. package/dist/types/memory.d.ts +85 -0
  192. package/dist/types/memory.d.ts.map +1 -0
  193. package/dist/types/memory.js +20 -0
  194. package/dist/types/memory.js.map +1 -0
  195. package/dist/types/security.d.ts +67 -0
  196. package/dist/types/security.d.ts.map +1 -0
  197. package/dist/types/security.js +10 -0
  198. package/dist/types/security.js.map +1 -0
  199. package/dist/types/setup.d.ts +54 -0
  200. package/dist/types/setup.d.ts.map +1 -0
  201. package/dist/types/setup.js +9 -0
  202. package/dist/types/setup.js.map +1 -0
  203. package/dist/utils/fhs-mapping.d.ts +76 -0
  204. package/dist/utils/fhs-mapping.d.ts.map +1 -0
  205. package/dist/utils/fhs-mapping.js +189 -0
  206. package/dist/utils/fhs-mapping.js.map +1 -0
  207. package/package.json +58 -0
  208. package/templates/compilers/agent-map.md.hbs +36 -0
  209. package/templates/compilers/claude.md.hbs +95 -0
  210. package/templates/procedural/code-review.md +54 -0
  211. package/templates/procedural/debugging.md +52 -0
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Memory Files Generator — creates `.agentos/memory/` seed files.
3
+ *
4
+ * Bootstraps the Tulving-taxonomy memory layer with two always-loaded files
5
+ * (`semantic.md`, `corrections.md`) and ensures the lazy-load directories
6
+ * (`episodic/`, `procedural/`) exist for future use.
7
+ *
8
+ * All writes are idempotent: existing files are skipped, never overwritten.
9
+ *
10
+ * @see docs/architecture.md Section 4 "Boot Sequence" — memory bootstrap
11
+ * @module generators/memory
12
+ */
13
+ import fs from 'node:fs/promises';
14
+ import path from 'node:path';
15
+ // ---------------------------------------------------------------------------
16
+ // File content constants
17
+ // ---------------------------------------------------------------------------
18
+ /**
19
+ * Seed content for `semantic.md`.
20
+ *
21
+ * Always loaded at boot. Stores context-free facts and preferences using
22
+ * typed entry markers (PREF, FACT, PATTERN, AVOID) for structured retrieval.
23
+ */
24
+ const SEMANTIC_CONTENT = `# Semantic Memory
25
+
26
+ > Context-free facts and preferences. Always loaded at boot.
27
+ > Format: TYPE: [status] content
28
+
29
+ ## Preferences
30
+ <!-- PREF: entries go here -->
31
+
32
+ ## Facts
33
+ <!-- FACT: [active] entries go here -->
34
+
35
+ ## Patterns
36
+ <!-- PATTERN: [confidence:0.3] entries go here -->
37
+
38
+ ## Avoids
39
+ <!-- AVOID: entries go here -->
40
+
41
+ ## Directives
42
+ <!-- DIRECTIVE: imperative rules that must always be followed -->
43
+ `;
44
+ /**
45
+ * Seed content for `corrections.md`.
46
+ *
47
+ * Loaded at boot alongside semantic memory. Records agent mistakes and
48
+ * the lessons drawn from them so they are not repeated.
49
+ */
50
+ const CORRECTIONS_CONTENT = `# Corrections
51
+
52
+ > Agent mistakes and lessons learned. Loaded at boot alongside semantic memory.
53
+ > Each entry: what went wrong, what was the fix, lesson learned.
54
+ `;
55
+ // ---------------------------------------------------------------------------
56
+ // generateMemoryFiles
57
+ // ---------------------------------------------------------------------------
58
+ /**
59
+ * Generates seed memory files and lazy-load directories in `.agentos/memory/`.
60
+ *
61
+ * Files produced:
62
+ * - `semantic.md` — typed facts/preferences, always loaded at boot
63
+ * - `corrections.md` — mistake log, always loaded at boot
64
+ *
65
+ * Directories ensured (created if absent, no-op if present):
66
+ * - `episodic/` — per-day event logs, lazy-loaded on demand
67
+ * - `procedural/` — skill documents, lazy-loaded on demand
68
+ *
69
+ * @param answers - Setup answers from the interactive wizard.
70
+ * @returns A `GeneratorResult` listing created and skipped paths.
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * const result = await generateMemoryFiles(answers);
75
+ * console.log(result.created);
76
+ * // ['.agentos/memory/semantic.md', '.agentos/memory/corrections.md']
77
+ * ```
78
+ */
79
+ export async function generateMemoryFiles(answers) {
80
+ const result = { created: [], skipped: [] };
81
+ const memoryDir = path.join(answers.targetDir, '.agentos', 'memory');
82
+ // Ensure the memory root and both lazy-load subdirectories exist.
83
+ await fs.mkdir(path.join(memoryDir, 'episodic'), { recursive: true });
84
+ await fs.mkdir(path.join(memoryDir, 'procedural'), { recursive: true });
85
+ // Seed files to write — each is skipped if it already exists.
86
+ const files = [
87
+ { name: 'semantic.md', content: SEMANTIC_CONTENT },
88
+ { name: 'corrections.md', content: CORRECTIONS_CONTENT },
89
+ ];
90
+ for (const file of files) {
91
+ const absPath = path.join(memoryDir, file.name);
92
+ const relPath = path.join('.agentos', 'memory', file.name);
93
+ try {
94
+ await fs.access(absPath);
95
+ // File already exists — skip.
96
+ result.skipped.push(relPath);
97
+ }
98
+ catch {
99
+ // File does not exist — write it.
100
+ await fs.writeFile(absPath, file.content, 'utf8');
101
+ result.created.push(relPath);
102
+ }
103
+ }
104
+ return result;
105
+ }
106
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/generators/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;CAmBxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,mBAAmB,GAAG;;;;CAI3B,CAAC;AAEF,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAqB;IAC7D,MAAM,MAAM,GAAoB,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAE7D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAErE,kEAAkE;IAClE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAExE,8DAA8D;IAC9D,MAAM,KAAK,GAA6C;QACtD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,EAAE;QAClD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,mBAAmB,EAAE;KACzD,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3D,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzB,8BAA8B;YAC9B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,kCAAkC;YAClC,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Company & Shared profile generators — Epic 11.
3
+ *
4
+ * Story 11.1: Company profile with team directories and RBAC
5
+ * Story 11.2: Shared profile with per-user spaces
6
+ *
7
+ * @module generators/profiles
8
+ */
9
+ /**
10
+ * Generate company profile directories and RBAC scaffolding.
11
+ *
12
+ * @param vaultRoot - Vault root path
13
+ */
14
+ export declare function generateCompanyProfile(vaultRoot: string): Promise<string[]>;
15
+ /**
16
+ * Generate shared profile with per-user spaces.
17
+ *
18
+ * @param vaultRoot - Vault root path
19
+ * @param users - List of user names
20
+ */
21
+ export declare function generateSharedProfile(vaultRoot: string, users?: string[]): Promise<string[]>;
22
+ //# sourceMappingURL=profiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/generators/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAgDnB;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,MAAM,EAAgB,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CAiCnB"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Company & Shared profile generators — Epic 11.
3
+ *
4
+ * Story 11.1: Company profile with team directories and RBAC
5
+ * Story 11.2: Shared profile with per-user spaces
6
+ *
7
+ * @module generators/profiles
8
+ */
9
+ import fs from 'node:fs/promises';
10
+ import path from 'node:path';
11
+ /**
12
+ * Generate company profile directories and RBAC scaffolding.
13
+ *
14
+ * @param vaultRoot - Vault root path
15
+ */
16
+ export async function generateCompanyProfile(vaultRoot) {
17
+ const dirs = [
18
+ 'Teams',
19
+ 'Decisions',
20
+ 'Postmortems',
21
+ 'Projects',
22
+ 'Resources',
23
+ 'Archive',
24
+ '.agentos/rbac',
25
+ ];
26
+ const created = [];
27
+ for (const dir of dirs) {
28
+ await fs.mkdir(path.join(vaultRoot, dir), { recursive: true });
29
+ created.push(dir);
30
+ }
31
+ // Generate RBAC files
32
+ const rolesYaml = `# RBAC Roles — Company Profile
33
+ version: "1.0"
34
+ roles:
35
+ admin:
36
+ description: Full access to all vault areas
37
+ permissions: ["*"]
38
+ developer:
39
+ description: Access to projects and resources
40
+ permissions: ["Projects/*", "Resources/*", "Daily/*"]
41
+ viewer:
42
+ description: Read-only access
43
+ permissions: ["read:*"]
44
+ `;
45
+ await fs.writeFile(path.join(vaultRoot, '.agentos/rbac/roles.yaml'), rolesYaml, 'utf8');
46
+ created.push('.agentos/rbac/roles.yaml');
47
+ const policiesYaml = `# RBAC Policies — Company Profile
48
+ version: "1.0"
49
+ policies:
50
+ - role: admin
51
+ users: []
52
+ - role: developer
53
+ users: []
54
+ - role: viewer
55
+ users: []
56
+ `;
57
+ await fs.writeFile(path.join(vaultRoot, '.agentos/rbac/policies.yaml'), policiesYaml, 'utf8');
58
+ created.push('.agentos/rbac/policies.yaml');
59
+ return created;
60
+ }
61
+ /**
62
+ * Generate shared profile with per-user spaces.
63
+ *
64
+ * @param vaultRoot - Vault root path
65
+ * @param users - List of user names
66
+ */
67
+ export async function generateSharedProfile(vaultRoot, users = ['default']) {
68
+ const created = [];
69
+ // Shared directories
70
+ const sharedDirs = [
71
+ 'Shared/Projects',
72
+ 'Shared/Knowledge',
73
+ 'Shared/Templates',
74
+ ];
75
+ for (const dir of sharedDirs) {
76
+ await fs.mkdir(path.join(vaultRoot, dir), { recursive: true });
77
+ created.push(dir);
78
+ }
79
+ // Per-user spaces
80
+ await fs.mkdir(path.join(vaultRoot, '.agentos/users'), { recursive: true });
81
+ for (const user of users) {
82
+ const userDir = `Spaces/${user}`;
83
+ await fs.mkdir(path.join(vaultRoot, userDir, 'Daily'), { recursive: true });
84
+ await fs.mkdir(path.join(vaultRoot, userDir, 'Inbox'), { recursive: true });
85
+ created.push(userDir);
86
+ const userConfig = `# User: ${user}\nname: ${user}\nrole: developer\n`;
87
+ await fs.writeFile(path.join(vaultRoot, `.agentos/users/${user}.yaml`), userConfig, 'utf8');
88
+ created.push(`.agentos/users/${user}.yaml`);
89
+ }
90
+ return created;
91
+ }
92
+ //# sourceMappingURL=profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/generators/profiles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Interactive setup prompts for `npx create-agentfs`.
3
+ *
4
+ * Uses `inquirer` to collect vault configuration from the user.
5
+ * Returns a `SetupAnswers` object that drives all downstream generators.
6
+ *
7
+ * @module generators/prompts
8
+ */
9
+ import type { SetupAnswers } from '../types/index.js';
10
+ /**
11
+ * Run the interactive setup wizard.
12
+ *
13
+ * @param targetDir - Directory where the vault will be created (defaults to cwd)
14
+ * @returns Answers collected from the user
15
+ */
16
+ export declare function runSetupPrompts(targetDir?: string): Promise<SetupAnswers>;
17
+ /**
18
+ * Create SetupAnswers programmatically (for testing and non-interactive use).
19
+ *
20
+ * @param overrides - Partial answers to merge with defaults
21
+ * @returns Complete SetupAnswers with defaults filled in
22
+ */
23
+ export declare function createDefaultAnswers(overrides?: Partial<SetupAnswers>): SetupAnswers;
24
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/generators/prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAyB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAmC7E;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA4D/E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,YAAY,CAWxF"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Interactive setup prompts for `npx create-agentfs`.
3
+ *
4
+ * Uses `inquirer` to collect vault configuration from the user.
5
+ * Returns a `SetupAnswers` object that drives all downstream generators.
6
+ *
7
+ * @module generators/prompts
8
+ */
9
+ import inquirer from 'inquirer';
10
+ import path from 'node:path';
11
+ /** Available vault profiles with descriptions. */
12
+ const PROFILES = [
13
+ { name: 'Personal — solo engineer, creator, builder', value: 'personal' },
14
+ { name: 'Company — team with shared knowledge base', value: 'company' },
15
+ { name: 'Shared — multi-user collaborative vault', value: 'shared' },
16
+ ];
17
+ /** Available agent runtimes. */
18
+ const AGENTS = [
19
+ { name: 'Claude Code', value: 'claude' },
20
+ { name: 'OpenClaw / OMC', value: 'openclaw' },
21
+ { name: 'Cursor', value: 'cursor' },
22
+ ];
23
+ /** Optional modules available per profile. */
24
+ const MODULES = {
25
+ personal: [
26
+ { name: 'Career — job search pipeline', value: 'career' },
27
+ { name: 'Content — multi-platform publishing', value: 'content' },
28
+ { name: 'Engineering — professional knowledge base', value: 'engineering' },
29
+ { name: 'BMAD — project management framework', value: 'bmad' },
30
+ ],
31
+ company: [
32
+ { name: 'Clients — client project management', value: 'clients' },
33
+ { name: 'Content — company blog/docs pipeline', value: 'content' },
34
+ { name: 'BMAD — project management framework', value: 'bmad' },
35
+ ],
36
+ shared: [
37
+ { name: 'Content — shared content pipeline', value: 'content' },
38
+ { name: 'BMAD — project management framework', value: 'bmad' },
39
+ ],
40
+ };
41
+ /**
42
+ * Run the interactive setup wizard.
43
+ *
44
+ * @param targetDir - Directory where the vault will be created (defaults to cwd)
45
+ * @returns Answers collected from the user
46
+ */
47
+ export async function runSetupPrompts(targetDir) {
48
+ const resolvedDir = targetDir ?? process.cwd();
49
+ const dirName = path.basename(resolvedDir);
50
+ const answers = await inquirer.prompt([
51
+ {
52
+ type: 'input',
53
+ name: 'vaultName',
54
+ message: 'Vault name:',
55
+ default: dirName,
56
+ validate: (input) => input.trim().length > 0 || 'Vault name cannot be empty',
57
+ },
58
+ {
59
+ type: 'input',
60
+ name: 'ownerName',
61
+ message: 'Owner name (person or team):',
62
+ validate: (input) => input.trim().length > 0 || 'Owner name cannot be empty',
63
+ },
64
+ {
65
+ type: 'list',
66
+ name: 'profile',
67
+ message: 'Vault profile:',
68
+ choices: PROFILES,
69
+ default: 'personal',
70
+ },
71
+ {
72
+ type: 'list',
73
+ name: 'primaryAgent',
74
+ message: 'Primary AI agent:',
75
+ choices: AGENTS,
76
+ default: 'claude',
77
+ },
78
+ {
79
+ type: 'checkbox',
80
+ name: 'supportedAgents',
81
+ message: 'Additional supported agents:',
82
+ choices: (prev) => AGENTS.filter((a) => a.value !== prev.primaryAgent),
83
+ },
84
+ {
85
+ type: 'checkbox',
86
+ name: 'modules',
87
+ message: 'Optional modules to enable:',
88
+ choices: (prev) => MODULES[prev.profile] ?? [],
89
+ },
90
+ ]);
91
+ return {
92
+ vaultName: answers.vaultName.trim(),
93
+ ownerName: answers.ownerName.trim(),
94
+ profile: answers.profile,
95
+ primaryAgent: answers.primaryAgent,
96
+ supportedAgents: [
97
+ answers.primaryAgent,
98
+ ...answers.supportedAgents,
99
+ ],
100
+ modules: answers.modules,
101
+ targetDir: resolvedDir,
102
+ };
103
+ }
104
+ /**
105
+ * Create SetupAnswers programmatically (for testing and non-interactive use).
106
+ *
107
+ * @param overrides - Partial answers to merge with defaults
108
+ * @returns Complete SetupAnswers with defaults filled in
109
+ */
110
+ export function createDefaultAnswers(overrides = {}) {
111
+ return {
112
+ vaultName: 'my-vault',
113
+ ownerName: 'user',
114
+ profile: 'personal',
115
+ primaryAgent: 'claude',
116
+ supportedAgents: ['claude'],
117
+ modules: [],
118
+ targetDir: process.cwd(),
119
+ ...overrides,
120
+ };
121
+ }
122
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/generators/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Scaffold orchestrator — wires all generators together.
3
+ *
4
+ * Called when `npx create-agentfs` runs. Executes generators in order:
5
+ * 1. Filesystem structure (dirs)
6
+ * 2. Manifest.yaml
7
+ * 3. Init.d boot scripts
8
+ * 4. Ignore files (.gitignore, .agentignore)
9
+ * 5. Memory system
10
+ *
11
+ * Each generator is idempotent: existing files are never overwritten.
12
+ *
13
+ * @module generators/scaffold
14
+ */
15
+ import type { SetupAnswers, ScaffoldResult } from '../types/index.js';
16
+ /**
17
+ * Run the full scaffold pipeline.
18
+ *
19
+ * @param answers - Setup answers from interactive prompts or programmatic call
20
+ * @returns Aggregated result with counts and per-generator details
21
+ */
22
+ export declare function scaffold(answers: SetupAnswers): Promise<ScaffoldResult>;
23
+ /**
24
+ * Print a human-readable scaffold summary.
25
+ *
26
+ * @param result - Scaffold result to format
27
+ */
28
+ export declare function formatScaffoldSummary(result: ScaffoldResult): string;
29
+ //# sourceMappingURL=scaffold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/generators/scaffold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAmB,MAAM,mBAAmB,CAAC;AAOvF;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAqC7E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA8BpE"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Scaffold orchestrator — wires all generators together.
3
+ *
4
+ * Called when `npx create-agentfs` runs. Executes generators in order:
5
+ * 1. Filesystem structure (dirs)
6
+ * 2. Manifest.yaml
7
+ * 3. Init.d boot scripts
8
+ * 4. Ignore files (.gitignore, .agentignore)
9
+ * 5. Memory system
10
+ *
11
+ * Each generator is idempotent: existing files are never overwritten.
12
+ *
13
+ * @module generators/scaffold
14
+ */
15
+ import { generateFilesystem } from './filesystem.js';
16
+ import { generateManifest } from './manifest.js';
17
+ import { generateInitScripts } from './init.js';
18
+ import { generateIgnoreFiles } from './ignore.js';
19
+ import { generateMemoryFiles } from './memory.js';
20
+ /**
21
+ * Run the full scaffold pipeline.
22
+ *
23
+ * @param answers - Setup answers from interactive prompts or programmatic call
24
+ * @returns Aggregated result with counts and per-generator details
25
+ */
26
+ export async function scaffold(answers) {
27
+ const details = {};
28
+ let dirsCreated = 0;
29
+ let filesCreated = 0;
30
+ let itemsSkipped = 0;
31
+ // 1. Filesystem structure (directories only)
32
+ const fsResult = await generateFilesystem(answers);
33
+ details['filesystem'] = fsResult;
34
+ dirsCreated += fsResult.created.length;
35
+ itemsSkipped += fsResult.skipped.length;
36
+ // 2. Manifest.yaml
37
+ const manifestResult = await generateManifest(answers);
38
+ details['manifest'] = manifestResult;
39
+ filesCreated += manifestResult.created.length;
40
+ itemsSkipped += manifestResult.skipped.length;
41
+ // 3. Init.d boot scripts
42
+ const initResult = await generateInitScripts(answers);
43
+ details['init'] = initResult;
44
+ filesCreated += initResult.created.length;
45
+ itemsSkipped += initResult.skipped.length;
46
+ // 4. Ignore files
47
+ const ignoreResult = await generateIgnoreFiles(answers);
48
+ details['ignore'] = ignoreResult;
49
+ filesCreated += ignoreResult.created.length;
50
+ itemsSkipped += ignoreResult.skipped.length;
51
+ // 5. Memory system
52
+ const memoryResult = await generateMemoryFiles(answers);
53
+ details['memory'] = memoryResult;
54
+ filesCreated += memoryResult.created.length;
55
+ itemsSkipped += memoryResult.skipped.length;
56
+ return { dirsCreated, filesCreated, itemsSkipped, details };
57
+ }
58
+ /**
59
+ * Print a human-readable scaffold summary.
60
+ *
61
+ * @param result - Scaffold result to format
62
+ */
63
+ export function formatScaffoldSummary(result) {
64
+ const lines = [];
65
+ lines.push('');
66
+ lines.push('AgentFS scaffold complete!');
67
+ lines.push('');
68
+ lines.push(` Directories created: ${result.dirsCreated}`);
69
+ lines.push(` Files created: ${result.filesCreated}`);
70
+ lines.push(` Items skipped: ${result.itemsSkipped}`);
71
+ lines.push('');
72
+ for (const [name, detail] of Object.entries(result.details)) {
73
+ if (detail.created.length > 0 || detail.skipped.length > 0) {
74
+ lines.push(` [${name}]`);
75
+ for (const item of detail.created) {
76
+ lines.push(` + ${item}`);
77
+ }
78
+ for (const item of detail.skipped) {
79
+ lines.push(` ~ ${item} (exists)`);
80
+ }
81
+ }
82
+ }
83
+ lines.push('');
84
+ lines.push('Next steps:');
85
+ lines.push(' agentfs onboard — let the agent learn about you');
86
+ lines.push(' agentfs compile — generate native agent configs');
87
+ lines.push('');
88
+ return lines.join('\n');
89
+ }
90
+ //# sourceMappingURL=scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/generators/scaffold.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * AgentFS public API barrel.
3
+ *
4
+ * Re-exports everything from the CLI entry point so that the package can also
5
+ * be used programmatically:
6
+ *
7
+ * ```ts
8
+ * import { main, VERSION } from 'create-agentfs';
9
+ * const code = await main(['node', 'agentfs', 'status']);
10
+ * ```
11
+ */
12
+ export { main, VERSION } from './cli.js';
13
+ export type { Subcommand } from './cli.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ /**
2
+ * AgentFS public API barrel.
3
+ *
4
+ * Re-exports everything from the CLI entry point so that the package can also
5
+ * be used programmatically:
6
+ *
7
+ * ```ts
8
+ * import { main, VERSION } from 'create-agentfs';
9
+ * const code = await main(['node', 'agentfs', 'status']);
10
+ * ```
11
+ */
12
+ export { main, VERSION } from './cli.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Confidence scoring engine for PATTERN entries in semantic memory.
3
+ *
4
+ * Implements the rules from docs/architecture.md Section 4:
5
+ *
6
+ * New PATTERN → confidence: 0.3 (DEFAULT_CONFIDENCE.initial)
7
+ * Confirmed → confidence += 0.2 (max 1.0)
8
+ * Denied → confidence -= 0.3
9
+ * Inactive 30 days → confidence -= 0.1 (decay)
10
+ * confidence < 0.1 → mark as superseded
11
+ *
12
+ * All functions are pure — they return a new `SemanticEntry` and never
13
+ * mutate the input. Non-PATTERN entries are returned unchanged.
14
+ *
15
+ * @module memory/confidence
16
+ */
17
+ import type { SemanticEntry } from '../types/index.js';
18
+ /**
19
+ * Increases the confidence of a PATTERN entry by `confirmBoost` (default 0.2),
20
+ * capped at 1.0.
21
+ *
22
+ * Non-PATTERN entries are returned unchanged.
23
+ *
24
+ * @param entry - The entry to confirm.
25
+ * @returns A new entry with updated confidence.
26
+ */
27
+ export declare function confirmPattern(entry: SemanticEntry): SemanticEntry;
28
+ /**
29
+ * Decreases the confidence of a PATTERN entry by `denyPenalty` (default 0.3).
30
+ *
31
+ * If the result drops below `supersededThreshold` (0.1) the entry is
32
+ * automatically marked as superseded.
33
+ *
34
+ * Non-PATTERN entries are returned unchanged.
35
+ *
36
+ * @param entry - The entry to deny.
37
+ * @returns A new entry with updated confidence and status.
38
+ */
39
+ export declare function denyPattern(entry: SemanticEntry): SemanticEntry;
40
+ /**
41
+ * Applies time-based confidence decay to a PATTERN entry.
42
+ *
43
+ * Each full `decayDays`-period (default 30 days) of inactivity reduces
44
+ * confidence by `decayRate` (default 0.1). Fractional periods are truncated.
45
+ *
46
+ * Examples:
47
+ * - 29 days inactive → 0 decay periods → no change
48
+ * - 30 days inactive → 1 decay period → -0.1
49
+ * - 75 days inactive → 2 decay periods → -0.2
50
+ *
51
+ * Non-PATTERN entries are returned unchanged.
52
+ *
53
+ * @param entry - The entry to decay.
54
+ * @param daysSinceLastSeen - Number of days since the pattern was last confirmed.
55
+ * @returns A new entry with decayed confidence (and possibly superseded status).
56
+ */
57
+ export declare function decayPattern(entry: SemanticEntry, daysSinceLastSeen: number): SemanticEntry;
58
+ /**
59
+ * Returns `true` when an entry has been marked as superseded.
60
+ *
61
+ * An entry is superseded when its `status` string starts with "superseded:".
62
+ * This covers both confidence-driven supersession and manual date-based
63
+ * supersession (e.g. `FACT: [superseded:2026-04-01] …`).
64
+ *
65
+ * @param entry - Any semantic entry.
66
+ * @returns Whether the entry is superseded.
67
+ */
68
+ export declare function isSuperseded(entry: SemanticEntry): boolean;
69
+ //# sourceMappingURL=confidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confidence.d.ts","sourceRoot":"","sources":["../../src/memory/confidence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AA+CvD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAMlE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAM/D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,aAAa,EACpB,iBAAiB,EAAE,MAAM,GACxB,aAAa,CAUf;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAE1D"}