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,47 @@
1
+ /**
2
+ * Security policy parser — reads policy.yaml into SecurityPolicy.
3
+ *
4
+ * Story 7.1: Parse `.agentos/security/policy.yaml` into a structured
5
+ * SecurityPolicy object that the compile pipeline can use to generate
6
+ * native enforcement rules.
7
+ *
8
+ * @module security/parser
9
+ */
10
+ import type { SecurityPolicy } from '../types/index.js';
11
+ /**
12
+ * Default security policy used when no policy.yaml exists.
13
+ */
14
+ export declare const DEFAULT_POLICY: SecurityPolicy;
15
+ /**
16
+ * Read and parse the security policy from a vault.
17
+ *
18
+ * @param vaultRoot - Absolute path to vault root
19
+ * @returns Parsed SecurityPolicy, or default if file doesn't exist
20
+ */
21
+ export declare function readSecurityPolicy(vaultRoot: string): Promise<SecurityPolicy>;
22
+ /**
23
+ * Write a security policy to disk.
24
+ *
25
+ * @param vaultRoot - Absolute path to vault root
26
+ * @param policy - SecurityPolicy to persist
27
+ */
28
+ export declare function writeSecurityPolicy(vaultRoot: string, policy: SecurityPolicy): Promise<void>;
29
+ /**
30
+ * Validate content against input validation patterns.
31
+ *
32
+ * Story 7.3: Scans content for prompt injection patterns and returns matches.
33
+ *
34
+ * @param content - Text to scan
35
+ * @param policy - Security policy with patterns
36
+ * @returns Array of matched pattern strings
37
+ */
38
+ export declare function scanForInjections(content: string, policy: SecurityPolicy): string[];
39
+ /**
40
+ * Check if a command is blocked by policy.
41
+ *
42
+ * @param command - Command string to check
43
+ * @param policy - Security policy
44
+ * @returns 'blocked' | 'ask' | 'allowed'
45
+ */
46
+ export declare function checkCommand(command: string, policy: SecurityPolicy): 'blocked' | 'ask' | 'allowed';
47
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/security/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,cA8B5B,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC,CAUzB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAKf;AA4BD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,cAAc,GACrB,MAAM,EAAE,CAOV;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,cAAc,GACrB,SAAS,GAAG,KAAK,GAAG,SAAS,CAY/B"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Security policy parser — reads policy.yaml into SecurityPolicy.
3
+ *
4
+ * Story 7.1: Parse `.agentos/security/policy.yaml` into a structured
5
+ * SecurityPolicy object that the compile pipeline can use to generate
6
+ * native enforcement rules.
7
+ *
8
+ * @module security/parser
9
+ */
10
+ import fs from 'node:fs/promises';
11
+ import path from 'node:path';
12
+ import yaml from 'js-yaml';
13
+ const POLICY_PATH = '.agentos/security/policy.yaml';
14
+ /**
15
+ * Default security policy used when no policy.yaml exists.
16
+ */
17
+ export const DEFAULT_POLICY = {
18
+ version: '1.0',
19
+ default_mode: 'complain',
20
+ file_access: {
21
+ default: 'rw',
22
+ allow_write: ['**/*.md', '**/*.yaml', '**/*.json'],
23
+ ask_write: ['.agentos/**', '.claude/**'],
24
+ deny_read: ['.env', '**/*.pem', '**/*.key'],
25
+ deny_write: ['.git/**', 'node_modules/**'],
26
+ },
27
+ input_validation: {
28
+ enabled: true,
29
+ scan_on_read: [
30
+ { pattern: 'ignore previous instructions' },
31
+ { pattern: 'system prompt override' },
32
+ { pattern: 'you are now' },
33
+ ],
34
+ action: 'warn',
35
+ quarantine_path: '.agentos/security/quarantine/',
36
+ },
37
+ network: {
38
+ deny_exfil_patterns: [
39
+ { regex: '(api_key|secret|password|token)\\s*[:=]' },
40
+ ],
41
+ allowed_domains: [],
42
+ },
43
+ commands: {
44
+ blocked: ['rm -rf /', 'curl | sh', 'wget | sh'],
45
+ ask_before: ['npm install', 'pip install', 'brew install'],
46
+ },
47
+ };
48
+ /**
49
+ * Read and parse the security policy from a vault.
50
+ *
51
+ * @param vaultRoot - Absolute path to vault root
52
+ * @returns Parsed SecurityPolicy, or default if file doesn't exist
53
+ */
54
+ export async function readSecurityPolicy(vaultRoot) {
55
+ const policyPath = path.join(vaultRoot, POLICY_PATH);
56
+ try {
57
+ const content = await fs.readFile(policyPath, 'utf8');
58
+ const parsed = yaml.load(content);
59
+ return mergeWithDefaults(parsed);
60
+ }
61
+ catch {
62
+ return DEFAULT_POLICY;
63
+ }
64
+ }
65
+ /**
66
+ * Write a security policy to disk.
67
+ *
68
+ * @param vaultRoot - Absolute path to vault root
69
+ * @param policy - SecurityPolicy to persist
70
+ */
71
+ export async function writeSecurityPolicy(vaultRoot, policy) {
72
+ const policyPath = path.join(vaultRoot, POLICY_PATH);
73
+ await fs.mkdir(path.dirname(policyPath), { recursive: true });
74
+ const content = yaml.dump(policy, { lineWidth: 120 });
75
+ await fs.writeFile(policyPath, content, 'utf8');
76
+ }
77
+ /**
78
+ * Merge a partial policy with defaults.
79
+ */
80
+ function mergeWithDefaults(partial) {
81
+ return {
82
+ version: partial.version ?? DEFAULT_POLICY.version,
83
+ default_mode: partial.default_mode ?? DEFAULT_POLICY.default_mode,
84
+ file_access: {
85
+ ...DEFAULT_POLICY.file_access,
86
+ ...partial.file_access,
87
+ },
88
+ input_validation: {
89
+ ...DEFAULT_POLICY.input_validation,
90
+ ...partial.input_validation,
91
+ },
92
+ network: {
93
+ ...DEFAULT_POLICY.network,
94
+ ...partial.network,
95
+ },
96
+ commands: {
97
+ ...DEFAULT_POLICY.commands,
98
+ ...partial.commands,
99
+ },
100
+ };
101
+ }
102
+ /**
103
+ * Validate content against input validation patterns.
104
+ *
105
+ * Story 7.3: Scans content for prompt injection patterns and returns matches.
106
+ *
107
+ * @param content - Text to scan
108
+ * @param policy - Security policy with patterns
109
+ * @returns Array of matched pattern strings
110
+ */
111
+ export function scanForInjections(content, policy) {
112
+ if (!policy.input_validation.enabled)
113
+ return [];
114
+ const lower = content.toLowerCase();
115
+ return policy.input_validation.scan_on_read
116
+ .filter((p) => lower.includes(p.pattern.toLowerCase()))
117
+ .map((p) => p.pattern);
118
+ }
119
+ /**
120
+ * Check if a command is blocked by policy.
121
+ *
122
+ * @param command - Command string to check
123
+ * @param policy - Security policy
124
+ * @returns 'blocked' | 'ask' | 'allowed'
125
+ */
126
+ export function checkCommand(command, policy) {
127
+ const lower = command.toLowerCase();
128
+ if (policy.commands.blocked.some((b) => lower.includes(b.toLowerCase()))) {
129
+ return 'blocked';
130
+ }
131
+ if (policy.commands.ask_before.some((a) => lower.startsWith(a.toLowerCase()))) {
132
+ return 'ask';
133
+ }
134
+ return 'allowed';
135
+ }
136
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/security/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Sync module — barrel export.
3
+ * @module sync
4
+ */
5
+ export { importFromOmc, detectDrift, exportToOmc, } from './sync.js';
6
+ export type { DriftResult } from './sync.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Sync module — barrel export.
3
+ * @module sync
4
+ */
5
+ export { importFromOmc, detectDrift, exportToOmc, } from './sync.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,WAAW,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Sync & Import module — bidirectional synchronization.
3
+ *
4
+ * Story 9.1: Import memory from native agent stores (e.g. .omc/project-memory.json)
5
+ * Story 9.2: Drift detection between manifest and compiled outputs
6
+ * Story 9.3: Bidirectional OpenClaw memory sync
7
+ *
8
+ * @module sync/sync
9
+ */
10
+ /**
11
+ * Import memory facts from .omc/project-memory.json into semantic.md.
12
+ * Canonical source always wins on conflicts — duplicates are skipped.
13
+ *
14
+ * @param vaultRoot - Vault root path
15
+ * @returns Import result with counts
16
+ */
17
+ export declare function importFromOmc(vaultRoot: string): Promise<{
18
+ imported: number;
19
+ skipped: number;
20
+ errors: string[];
21
+ }>;
22
+ /** Drift detection result for a single file. */
23
+ export interface DriftResult {
24
+ file: string;
25
+ drifted: boolean;
26
+ currentHash: string;
27
+ expectedHash: string;
28
+ }
29
+ /**
30
+ * Detect drift between compiled outputs and what compile would generate.
31
+ *
32
+ * Simple approach: compare file content hashes.
33
+ *
34
+ * @param vaultRoot - Vault root path
35
+ * @param files - List of managed file paths to check
36
+ * @returns Array of DriftResults
37
+ */
38
+ export declare function detectDrift(vaultRoot: string, files: string[]): Promise<DriftResult[]>;
39
+ /**
40
+ * Export semantic memory to .omc/project-memory.json format.
41
+ *
42
+ * @param vaultRoot - Vault root path
43
+ * @returns Number of entries exported
44
+ */
45
+ export declare function exportToOmc(vaultRoot: string): Promise<number>;
46
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAoDlE;AAoCD,gDAAgD;AAChD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,WAAW,EAAE,CAAC,CAuBxB;AAoBD;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CA4BjB"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Sync & Import module — bidirectional synchronization.
3
+ *
4
+ * Story 9.1: Import memory from native agent stores (e.g. .omc/project-memory.json)
5
+ * Story 9.2: Drift detection between manifest and compiled outputs
6
+ * Story 9.3: Bidirectional OpenClaw memory sync
7
+ *
8
+ * @module sync/sync
9
+ */
10
+ import fs from 'node:fs/promises';
11
+ import path from 'node:path';
12
+ import { parseSemanticMemory, appendSemanticEntry } from '../memory/parser.js';
13
+ // ---------------------------------------------------------------------------
14
+ // Story 9.1: Memory Import
15
+ // ---------------------------------------------------------------------------
16
+ /**
17
+ * Import memory facts from .omc/project-memory.json into semantic.md.
18
+ * Canonical source always wins on conflicts — duplicates are skipped.
19
+ *
20
+ * @param vaultRoot - Vault root path
21
+ * @returns Import result with counts
22
+ */
23
+ export async function importFromOmc(vaultRoot) {
24
+ const omcPath = path.join(vaultRoot, '.omc/project-memory.json');
25
+ const semanticPath = path.join(vaultRoot, '.agentos/memory/semantic.md');
26
+ const errors = [];
27
+ let imported = 0;
28
+ let skipped = 0;
29
+ let omcData;
30
+ try {
31
+ const raw = await fs.readFile(omcPath, 'utf8');
32
+ omcData = JSON.parse(raw);
33
+ }
34
+ catch {
35
+ return { imported: 0, skipped: 0, errors: ['Cannot read .omc/project-memory.json'] };
36
+ }
37
+ // Parse OMC memory format — expects { facts: string[] } or similar
38
+ const facts = extractFactsFromOmc(omcData);
39
+ if (facts.length === 0) {
40
+ return { imported: 0, skipped: 0, errors: [] };
41
+ }
42
+ // Ensure semantic.md exists
43
+ try {
44
+ await fs.access(semanticPath);
45
+ }
46
+ catch {
47
+ return { imported: 0, skipped: 0, errors: ['No semantic.md found. Run agentfs onboard first.'] };
48
+ }
49
+ for (const fact of facts) {
50
+ try {
51
+ const entry = {
52
+ type: 'FACT',
53
+ content: fact,
54
+ status: 'active',
55
+ };
56
+ // appendSemanticEntry handles dedup internally
57
+ const before = await fs.readFile(semanticPath, 'utf8');
58
+ await appendSemanticEntry(semanticPath, entry);
59
+ const after = await fs.readFile(semanticPath, 'utf8');
60
+ if (before === after) {
61
+ skipped++;
62
+ }
63
+ else {
64
+ imported++;
65
+ }
66
+ }
67
+ catch {
68
+ errors.push(`Failed to import fact: ${fact}`);
69
+ }
70
+ }
71
+ return { imported, skipped, errors };
72
+ }
73
+ /**
74
+ * Extract facts from OMC memory format.
75
+ * Handles various shapes: { facts: [] }, { entries: [] }, or array directly.
76
+ */
77
+ function extractFactsFromOmc(data) {
78
+ if (Array.isArray(data)) {
79
+ return data.filter((d) => typeof d === 'string');
80
+ }
81
+ if (data && typeof data === 'object') {
82
+ const obj = data;
83
+ // Try common keys
84
+ for (const key of ['facts', 'entries', 'memories', 'items']) {
85
+ if (Array.isArray(obj[key])) {
86
+ return obj[key]
87
+ .map((item) => {
88
+ if (typeof item === 'string')
89
+ return item;
90
+ if (item && typeof item === 'object' && 'content' in item) {
91
+ return String(item.content);
92
+ }
93
+ return null;
94
+ })
95
+ .filter((s) => s !== null);
96
+ }
97
+ }
98
+ }
99
+ return [];
100
+ }
101
+ /**
102
+ * Detect drift between compiled outputs and what compile would generate.
103
+ *
104
+ * Simple approach: compare file content hashes.
105
+ *
106
+ * @param vaultRoot - Vault root path
107
+ * @param files - List of managed file paths to check
108
+ * @returns Array of DriftResults
109
+ */
110
+ export async function detectDrift(vaultRoot, files) {
111
+ const results = [];
112
+ for (const file of files) {
113
+ const filePath = path.join(vaultRoot, file);
114
+ let currentHash = '';
115
+ try {
116
+ const content = await fs.readFile(filePath, 'utf8');
117
+ currentHash = simpleHash(content);
118
+ }
119
+ catch {
120
+ currentHash = 'MISSING';
121
+ }
122
+ results.push({
123
+ file,
124
+ drifted: false, // Will be set to true when we have compiled comparison
125
+ currentHash,
126
+ expectedHash: '', // Populated during compile comparison
127
+ });
128
+ }
129
+ return results;
130
+ }
131
+ /**
132
+ * Simple string hash for drift detection.
133
+ * Not cryptographic — just for comparison.
134
+ */
135
+ function simpleHash(content) {
136
+ let hash = 0;
137
+ for (let i = 0; i < content.length; i++) {
138
+ const char = content.charCodeAt(i);
139
+ hash = ((hash << 5) - hash) + char;
140
+ hash |= 0;
141
+ }
142
+ return hash.toString(16);
143
+ }
144
+ // ---------------------------------------------------------------------------
145
+ // Story 9.3: Export to OMC
146
+ // ---------------------------------------------------------------------------
147
+ /**
148
+ * Export semantic memory to .omc/project-memory.json format.
149
+ *
150
+ * @param vaultRoot - Vault root path
151
+ * @returns Number of entries exported
152
+ */
153
+ export async function exportToOmc(vaultRoot) {
154
+ const semanticPath = path.join(vaultRoot, '.agentos/memory/semantic.md');
155
+ let content;
156
+ try {
157
+ content = await fs.readFile(semanticPath, 'utf8');
158
+ }
159
+ catch {
160
+ return 0;
161
+ }
162
+ const entries = parseSemanticMemory(content);
163
+ const active = entries.filter((e) => e.status === 'active');
164
+ const omcData = {
165
+ version: '1.0',
166
+ source: 'agentfs',
167
+ facts: active.map((e) => `${e.type}: ${e.content}`),
168
+ };
169
+ const omcDir = path.join(vaultRoot, '.omc');
170
+ await fs.mkdir(omcDir, { recursive: true });
171
+ await fs.writeFile(path.join(omcDir, 'project-memory.json'), JSON.stringify(omcData, null, 2) + '\n', 'utf8');
172
+ return active.length;
173
+ }
174
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Compile Pipeline types — kernel → native agent configs.
3
+ *
4
+ * Each agent has a "driver" (compiler) that translates the canonical
5
+ * manifest + init.d + memory into the agent's native format.
6
+ *
7
+ * @see docs/architecture.md Section 9 "Compile Pipeline"
8
+ */
9
+ import type { AgentRuntime, Manifest } from './manifest.js';
10
+ /**
11
+ * Context passed to compilers during the compile phase.
12
+ * Contains everything a driver needs to generate native output.
13
+ */
14
+ export interface CompileContext {
15
+ /** Parsed manifest.yaml */
16
+ manifest: Manifest;
17
+ /** Contents of init.d/ scripts, keyed by filename */
18
+ initScripts: Record<string, string>;
19
+ /** Semantic memory content (always loaded) */
20
+ semanticMemory: string | null;
21
+ /** Corrections content (agent mistakes) */
22
+ corrections: string | null;
23
+ /** Root path of the vault */
24
+ vaultRoot: string;
25
+ /** Whether this is a dry-run (preview only, don't write) */
26
+ dryRun: boolean;
27
+ }
28
+ /** A single file that a compiler wants to write. */
29
+ export interface CompileOutput {
30
+ /** Relative path from vault root */
31
+ path: string;
32
+ /** File content to write */
33
+ content: string;
34
+ /** Whether this file is owned by AgentFS (true) or user (false) */
35
+ managed: boolean;
36
+ }
37
+ /** Result of a compile operation. */
38
+ export interface CompileResult {
39
+ /** Which agent this result is for */
40
+ agent: AgentRuntime;
41
+ /** Files to write (or that would be written in dry-run) */
42
+ outputs: CompileOutput[];
43
+ /** Human-readable summary of what was/would be done */
44
+ summary: string;
45
+ }
46
+ /**
47
+ * Agent compiler interface — one per supported agent.
48
+ *
49
+ * Implement this to add support for a new AI agent runtime.
50
+ * Each compiler lives in `src/compilers/{agent}.ts`.
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * const claude: AgentCompiler = {
55
+ * name: 'claude',
56
+ * compile(ctx) { ... },
57
+ * supports(feature) { ... },
58
+ * };
59
+ * ```
60
+ */
61
+ export interface AgentCompiler {
62
+ /** Agent runtime name */
63
+ readonly name: AgentRuntime;
64
+ /**
65
+ * Compile manifest + context into native agent config files.
66
+ *
67
+ * @param context - Everything the compiler needs
68
+ * @returns Files to write and a summary
69
+ */
70
+ compile(context: CompileContext): Promise<CompileResult>;
71
+ /**
72
+ * Check if this agent supports a given feature.
73
+ *
74
+ * Used to determine which security/memory features
75
+ * can be compiled for this agent.
76
+ *
77
+ * @param feature - Feature name (e.g. 'security-enforce', 'memory-sync')
78
+ */
79
+ supports(feature: string): boolean;
80
+ }
81
+ //# sourceMappingURL=compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/types/compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE5D;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,2BAA2B;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,8CAA8C;IAC9C,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,2CAA2C;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,oDAAoD;AACpD,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,KAAK,EAAE,YAAY,CAAC;IACpB,2DAA2D;IAC3D,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAE5B;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEzD;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CACpC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Compile Pipeline types — kernel → native agent configs.
3
+ *
4
+ * Each agent has a "driver" (compiler) that translates the canonical
5
+ * manifest + init.d + memory into the agent's native format.
6
+ *
7
+ * @see docs/architecture.md Section 9 "Compile Pipeline"
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/types/compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * AgentFS core types — barrel export.
3
+ *
4
+ * Import all types from here:
5
+ * ```ts
6
+ * import type { Manifest, AgentCompiler, SecurityPolicy } from './types/index.js';
7
+ * ```
8
+ */
9
+ export type { Profile, AgentRuntime, SecurityMode, FhsPaths, AgentConfig, BootConfig, FrontmatterConfig, SubagentStatus, HookEvent, HooksConfig, Manifest, } from './manifest.js';
10
+ export type { CompileContext, CompileOutput, CompileResult, AgentCompiler, } from './compiler.js';
11
+ export type { FilePermission, ValidationAction, FileAccessPolicy, InputValidationPolicy, NetworkPolicy, CommandPolicy, SecurityPolicy, } from './security.js';
12
+ export type { SemanticEntryType, EntryStatus, SemanticEntry, ConfidenceConfig, EpisodicEntry, ProceduralEntry, } from './memory.js';
13
+ export { DEFAULT_CONFIDENCE } from './memory.js';
14
+ export type { SetupAnswers, GeneratorResult, ScaffoldResult, } from './setup.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EACV,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,WAAW,EACX,QAAQ,GACT,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,YAAY,EACV,YAAY,EACZ,eAAe,EACf,cAAc,GACf,MAAM,YAAY,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * AgentFS core types — barrel export.
3
+ *
4
+ * Import all types from here:
5
+ * ```ts
6
+ * import type { Manifest, AgentCompiler, SecurityPolicy } from './types/index.js';
7
+ * ```
8
+ */
9
+ export { DEFAULT_CONFIDENCE } from './memory.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA0CH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}