@lannguyensi/harness 0.5.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 (199) hide show
  1. package/CHANGELOG.md +552 -0
  2. package/LICENSE +21 -0
  3. package/README.md +154 -0
  4. package/dist/cli/add/index.d.ts +14 -0
  5. package/dist/cli/add/index.js +71 -0
  6. package/dist/cli/add/index.js.map +1 -0
  7. package/dist/cli/add/mutate.d.ts +39 -0
  8. package/dist/cli/add/mutate.js +36 -0
  9. package/dist/cli/add/mutate.js.map +1 -0
  10. package/dist/cli/adopt/derive.d.ts +38 -0
  11. package/dist/cli/adopt/derive.js +94 -0
  12. package/dist/cli/adopt/derive.js.map +1 -0
  13. package/dist/cli/adopt/index.d.ts +20 -0
  14. package/dist/cli/adopt/index.js +156 -0
  15. package/dist/cli/adopt/index.js.map +1 -0
  16. package/dist/cli/apply/apply.d.ts +49 -0
  17. package/dist/cli/apply/apply.js +333 -0
  18. package/dist/cli/apply/apply.js.map +1 -0
  19. package/dist/cli/apply/generate-memory-index.d.ts +17 -0
  20. package/dist/cli/apply/generate-memory-index.js +167 -0
  21. package/dist/cli/apply/generate-memory-index.js.map +1 -0
  22. package/dist/cli/apply/generate-settings.d.ts +15 -0
  23. package/dist/cli/apply/generate-settings.js +87 -0
  24. package/dist/cli/apply/generate-settings.js.map +1 -0
  25. package/dist/cli/apply/index.d.ts +1 -0
  26. package/dist/cli/apply/index.js +2 -0
  27. package/dist/cli/apply/index.js.map +1 -0
  28. package/dist/cli/audit.d.ts +36 -0
  29. package/dist/cli/audit.js +121 -0
  30. package/dist/cli/audit.js.map +1 -0
  31. package/dist/cli/describe.d.ts +13 -0
  32. package/dist/cli/describe.js +26 -0
  33. package/dist/cli/describe.js.map +1 -0
  34. package/dist/cli/diff/engine.d.ts +21 -0
  35. package/dist/cli/diff/engine.js +161 -0
  36. package/dist/cli/diff/engine.js.map +1 -0
  37. package/dist/cli/diff/git.d.ts +6 -0
  38. package/dist/cli/diff/git.js +32 -0
  39. package/dist/cli/diff/git.js.map +1 -0
  40. package/dist/cli/diff/index.d.ts +15 -0
  41. package/dist/cli/diff/index.js +39 -0
  42. package/dist/cli/diff/index.js.map +1 -0
  43. package/dist/cli/diff/since-apply.d.ts +57 -0
  44. package/dist/cli/diff/since-apply.js +255 -0
  45. package/dist/cli/diff/since-apply.js.map +1 -0
  46. package/dist/cli/doctor/format.d.ts +2 -0
  47. package/dist/cli/doctor/format.js +126 -0
  48. package/dist/cli/doctor/format.js.map +1 -0
  49. package/dist/cli/doctor/index.d.ts +14 -0
  50. package/dist/cli/doctor/index.js +281 -0
  51. package/dist/cli/doctor/index.js.map +1 -0
  52. package/dist/cli/doctor/types.d.ts +46 -0
  53. package/dist/cli/doctor/types.js +2 -0
  54. package/dist/cli/doctor/types.js.map +1 -0
  55. package/dist/cli/dry-run.d.ts +46 -0
  56. package/dist/cli/dry-run.js +168 -0
  57. package/dist/cli/dry-run.js.map +1 -0
  58. package/dist/cli/exit-codes.d.ts +10 -0
  59. package/dist/cli/exit-codes.js +15 -0
  60. package/dist/cli/exit-codes.js.map +1 -0
  61. package/dist/cli/explain.d.ts +14 -0
  62. package/dist/cli/explain.js +97 -0
  63. package/dist/cli/explain.js.map +1 -0
  64. package/dist/cli/export.d.ts +31 -0
  65. package/dist/cli/export.js +84 -0
  66. package/dist/cli/export.js.map +1 -0
  67. package/dist/cli/index.d.ts +8 -0
  68. package/dist/cli/index.js +549 -0
  69. package/dist/cli/index.js.map +1 -0
  70. package/dist/cli/init/index.d.ts +17 -0
  71. package/dist/cli/init/index.js +57 -0
  72. package/dist/cli/init/index.js.map +1 -0
  73. package/dist/cli/init/templates.d.ts +4 -0
  74. package/dist/cli/init/templates.js +175 -0
  75. package/dist/cli/init/templates.js.map +1 -0
  76. package/dist/cli/list.d.ts +12 -0
  77. package/dist/cli/list.js +118 -0
  78. package/dist/cli/list.js.map +1 -0
  79. package/dist/cli/loader.d.ts +24 -0
  80. package/dist/cli/loader.js +74 -0
  81. package/dist/cli/loader.js.map +1 -0
  82. package/dist/cli/main.d.ts +2 -0
  83. package/dist/cli/main.js +6 -0
  84. package/dist/cli/main.js.map +1 -0
  85. package/dist/cli/policy/intercept.d.ts +34 -0
  86. package/dist/cli/policy/intercept.js +172 -0
  87. package/dist/cli/policy/intercept.js.map +1 -0
  88. package/dist/cli/remove/index.d.ts +18 -0
  89. package/dist/cli/remove/index.js +95 -0
  90. package/dist/cli/remove/index.js.map +1 -0
  91. package/dist/cli/remove/mutate.d.ts +9 -0
  92. package/dist/cli/remove/mutate.js +68 -0
  93. package/dist/cli/remove/mutate.js.map +1 -0
  94. package/dist/cli/validate/checks.d.ts +23 -0
  95. package/dist/cli/validate/checks.js +253 -0
  96. package/dist/cli/validate/checks.js.map +1 -0
  97. package/dist/cli/validate/index.d.ts +18 -0
  98. package/dist/cli/validate/index.js +50 -0
  99. package/dist/cli/validate/index.js.map +1 -0
  100. package/dist/cli/validate/types.d.ts +7 -0
  101. package/dist/cli/validate/types.js +5 -0
  102. package/dist/cli/validate/types.js.map +1 -0
  103. package/dist/index.d.ts +15 -0
  104. package/dist/index.js +16 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/io/atomic-write.d.ts +8 -0
  107. package/dist/io/atomic-write.js +30 -0
  108. package/dist/io/atomic-write.js.map +1 -0
  109. package/dist/io/harness-lock.d.ts +33 -0
  110. package/dist/io/harness-lock.js +260 -0
  111. package/dist/io/harness-lock.js.map +1 -0
  112. package/dist/io/last-apply.d.ts +20 -0
  113. package/dist/io/last-apply.js +123 -0
  114. package/dist/io/last-apply.js.map +1 -0
  115. package/dist/io/lock.d.ts +11 -0
  116. package/dist/io/lock.js +33 -0
  117. package/dist/io/lock.js.map +1 -0
  118. package/dist/io/patch.d.ts +10 -0
  119. package/dist/io/patch.js +8 -0
  120. package/dist/io/patch.js.map +1 -0
  121. package/dist/io/restart-hints.d.ts +5 -0
  122. package/dist/io/restart-hints.js +59 -0
  123. package/dist/io/restart-hints.js.map +1 -0
  124. package/dist/io/three-state.d.ts +7 -0
  125. package/dist/io/three-state.js +20 -0
  126. package/dist/io/three-state.js.map +1 -0
  127. package/dist/io/validate-before-write.d.ts +12 -0
  128. package/dist/io/validate-before-write.js +23 -0
  129. package/dist/io/validate-before-write.js.map +1 -0
  130. package/dist/overrides/index.d.ts +2 -0
  131. package/dist/overrides/index.js +3 -0
  132. package/dist/overrides/index.js.map +1 -0
  133. package/dist/overrides/machines.d.ts +12 -0
  134. package/dist/overrides/machines.js +46 -0
  135. package/dist/overrides/machines.js.map +1 -0
  136. package/dist/overrides/merge.d.ts +6 -0
  137. package/dist/overrides/merge.js +173 -0
  138. package/dist/overrides/merge.js.map +1 -0
  139. package/dist/policies/duration.d.ts +5 -0
  140. package/dist/policies/duration.js +50 -0
  141. package/dist/policies/duration.js.map +1 -0
  142. package/dist/policies/extract.d.ts +50 -0
  143. package/dist/policies/extract.js +190 -0
  144. package/dist/policies/extract.js.map +1 -0
  145. package/dist/policies/index.d.ts +5 -0
  146. package/dist/policies/index.js +6 -0
  147. package/dist/policies/index.js.map +1 -0
  148. package/dist/policies/ledger-client.d.ts +39 -0
  149. package/dist/policies/ledger-client.js +378 -0
  150. package/dist/policies/ledger-client.js.map +1 -0
  151. package/dist/policies/requires.d.ts +44 -0
  152. package/dist/policies/requires.js +146 -0
  153. package/dist/policies/requires.js.map +1 -0
  154. package/dist/policies/timestamp.d.ts +14 -0
  155. package/dist/policies/timestamp.js +36 -0
  156. package/dist/policies/timestamp.js.map +1 -0
  157. package/dist/probes/mcp.d.ts +29 -0
  158. package/dist/probes/mcp.js +226 -0
  159. package/dist/probes/mcp.js.map +1 -0
  160. package/dist/probes/memory.d.ts +24 -0
  161. package/dist/probes/memory.js +89 -0
  162. package/dist/probes/memory.js.map +1 -0
  163. package/dist/runtime/index.d.ts +3 -0
  164. package/dist/runtime/index.js +4 -0
  165. package/dist/runtime/index.js.map +1 -0
  166. package/dist/runtime/intercept.d.ts +53 -0
  167. package/dist/runtime/intercept.js +181 -0
  168. package/dist/runtime/intercept.js.map +1 -0
  169. package/dist/runtime/ledger-record.d.ts +43 -0
  170. package/dist/runtime/ledger-record.js +239 -0
  171. package/dist/runtime/ledger-record.js.map +1 -0
  172. package/dist/runtime/session-id.d.ts +10 -0
  173. package/dist/runtime/session-id.js +37 -0
  174. package/dist/runtime/session-id.js.map +1 -0
  175. package/dist/schema/extract.d.ts +5 -0
  176. package/dist/schema/extract.js +23 -0
  177. package/dist/schema/extract.js.map +1 -0
  178. package/dist/schema/grounding.d.ts +65 -0
  179. package/dist/schema/grounding.js +21 -0
  180. package/dist/schema/grounding.js.map +1 -0
  181. package/dist/schema/hooks.d.ts +86 -0
  182. package/dist/schema/hooks.js +42 -0
  183. package/dist/schema/hooks.js.map +1 -0
  184. package/dist/schema/index.d.ts +961 -0
  185. package/dist/schema/index.js +55 -0
  186. package/dist/schema/index.js.map +1 -0
  187. package/dist/schema/memory.d.ts +131 -0
  188. package/dist/schema/memory.js +38 -0
  189. package/dist/schema/memory.js.map +1 -0
  190. package/dist/schema/policies.d.ts +412 -0
  191. package/dist/schema/policies.js +53 -0
  192. package/dist/schema/policies.js.map +1 -0
  193. package/dist/schema/requires.d.ts +115 -0
  194. package/dist/schema/requires.js +57 -0
  195. package/dist/schema/requires.js.map +1 -0
  196. package/dist/schema/tools.d.ts +283 -0
  197. package/dist/schema/tools.js +66 -0
  198. package/dist/schema/tools.js.map +1 -0
  199. package/package.json +63 -0
@@ -0,0 +1,55 @@
1
+ import { z } from "zod";
2
+ import { GroundingSchema } from "./grounding.js";
3
+ import { HooksSchema } from "./hooks.js";
4
+ import { MemorySchema } from "./memory.js";
5
+ import { PoliciesSchema } from "./policies.js";
6
+ import { ToolsSchema } from "./tools.js";
7
+ export const SUPPORTED_MANIFEST_VERSION = 1;
8
+ export const ManifestSchema = z
9
+ .object({
10
+ version: z.literal(SUPPORTED_MANIFEST_VERSION),
11
+ grounding: GroundingSchema.default({}),
12
+ tools: ToolsSchema.default({}),
13
+ memory: MemorySchema.default({}),
14
+ hooks: HooksSchema.default([]),
15
+ policies: PoliciesSchema.default([]),
16
+ })
17
+ .strict()
18
+ .superRefine((manifest, ctx) => {
19
+ const hookNames = new Set(manifest.hooks.map((h) => h.name));
20
+ manifest.policies.forEach((p, i) => {
21
+ if (!hookNames.has(p.hook)) {
22
+ ctx.addIssue({
23
+ code: z.ZodIssueCode.custom,
24
+ path: ["policies", i, "hook"],
25
+ message: `policy "${p.name}" references hook "${p.hook}" which is not declared in hooks[]`,
26
+ });
27
+ }
28
+ });
29
+ });
30
+ export class ManifestParseError extends Error {
31
+ issues;
32
+ constructor(message, issues) {
33
+ super(message);
34
+ this.issues = issues;
35
+ this.name = "ManifestParseError";
36
+ }
37
+ }
38
+ export function parseManifest(raw) {
39
+ const result = ManifestSchema.safeParse(raw);
40
+ if (!result.success) {
41
+ const summary = result.error.issues
42
+ .map((i) => ` ${i.path.join(".") || "<root>"}: ${i.message}`)
43
+ .join("\n");
44
+ throw new ManifestParseError(`harness manifest failed validation:\n${summary}`, result.error.issues);
45
+ }
46
+ return result.data;
47
+ }
48
+ export * from "./grounding.js";
49
+ export * from "./tools.js";
50
+ export * from "./memory.js";
51
+ export * from "./hooks.js";
52
+ export * from "./policies.js";
53
+ export * from "./extract.js";
54
+ export * from "./requires.js";
55
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC;IAC9C,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9B,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;IAChC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9B,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;CACrC,CAAC;KACD,MAAM,EAAE;KACR,WAAW,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;IAC7B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;gBAC3B,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC;gBAC7B,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,sBAAsB,CAAC,CAAC,IAAI,oCAAoC;aAC3F,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAIL,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAGzB;IAFlB,YACE,OAAe,EACC,MAAoB;QAEpC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,WAAM,GAAN,MAAM,CAAc;QAGpC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aAC7D,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,kBAAkB,CAC1B,wCAAwC,OAAO,EAAE,EACjD,MAAM,CAAC,KAAK,CAAC,MAAM,CACpB,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,131 @@
1
+ import { z } from "zod";
2
+ export declare const MemoryScopeSchema: z.ZodEnum<["project", "user"]>;
3
+ export declare const MemoryDirectorySchema: z.ZodObject<{
4
+ path: z.ZodString;
5
+ scope: z.ZodEnum<["project", "user"]>;
6
+ }, "strict", z.ZodTypeAny, {
7
+ path: string;
8
+ scope: "project" | "user";
9
+ }, {
10
+ path: string;
11
+ scope: "project" | "user";
12
+ }>;
13
+ export declare const MemoryRouterSchema: z.ZodObject<{
14
+ command: z.ZodArray<z.ZodString, "many">;
15
+ enabled: z.ZodDefault<z.ZodBoolean>;
16
+ }, "strict", z.ZodTypeAny, {
17
+ command: string[];
18
+ enabled: boolean;
19
+ }, {
20
+ command: string[];
21
+ enabled?: boolean | undefined;
22
+ }>;
23
+ export declare const MemoryRetentionSchema: z.ZodObject<{
24
+ staleness_days: z.ZodDefault<z.ZodNumber>;
25
+ broken_refs: z.ZodDefault<z.ZodEnum<["warn", "error", "ignore"]>>;
26
+ }, "strict", z.ZodTypeAny, {
27
+ staleness_days: number;
28
+ broken_refs: "warn" | "error" | "ignore";
29
+ }, {
30
+ staleness_days?: number | undefined;
31
+ broken_refs?: "warn" | "error" | "ignore" | undefined;
32
+ }>;
33
+ export declare const MemoryScopesSchema: z.ZodEffects<z.ZodObject<{
34
+ default: z.ZodDefault<z.ZodEnum<["project", "user"]>>;
35
+ allowed: z.ZodDefault<z.ZodArray<z.ZodEnum<["project", "user"]>, "many">>;
36
+ }, "strict", z.ZodTypeAny, {
37
+ default: "project" | "user";
38
+ allowed: ("project" | "user")[];
39
+ }, {
40
+ default?: "project" | "user" | undefined;
41
+ allowed?: ("project" | "user")[] | undefined;
42
+ }>, {
43
+ default: "project" | "user";
44
+ allowed: ("project" | "user")[];
45
+ }, {
46
+ default?: "project" | "user" | undefined;
47
+ allowed?: ("project" | "user")[] | undefined;
48
+ }>;
49
+ export declare const MemorySchema: z.ZodObject<{
50
+ directories: z.ZodDefault<z.ZodArray<z.ZodObject<{
51
+ path: z.ZodString;
52
+ scope: z.ZodEnum<["project", "user"]>;
53
+ }, "strict", z.ZodTypeAny, {
54
+ path: string;
55
+ scope: "project" | "user";
56
+ }, {
57
+ path: string;
58
+ scope: "project" | "user";
59
+ }>, "many">>;
60
+ router: z.ZodOptional<z.ZodObject<{
61
+ command: z.ZodArray<z.ZodString, "many">;
62
+ enabled: z.ZodDefault<z.ZodBoolean>;
63
+ }, "strict", z.ZodTypeAny, {
64
+ command: string[];
65
+ enabled: boolean;
66
+ }, {
67
+ command: string[];
68
+ enabled?: boolean | undefined;
69
+ }>>;
70
+ retention: z.ZodDefault<z.ZodObject<{
71
+ staleness_days: z.ZodDefault<z.ZodNumber>;
72
+ broken_refs: z.ZodDefault<z.ZodEnum<["warn", "error", "ignore"]>>;
73
+ }, "strict", z.ZodTypeAny, {
74
+ staleness_days: number;
75
+ broken_refs: "warn" | "error" | "ignore";
76
+ }, {
77
+ staleness_days?: number | undefined;
78
+ broken_refs?: "warn" | "error" | "ignore" | undefined;
79
+ }>>;
80
+ scopes: z.ZodDefault<z.ZodEffects<z.ZodObject<{
81
+ default: z.ZodDefault<z.ZodEnum<["project", "user"]>>;
82
+ allowed: z.ZodDefault<z.ZodArray<z.ZodEnum<["project", "user"]>, "many">>;
83
+ }, "strict", z.ZodTypeAny, {
84
+ default: "project" | "user";
85
+ allowed: ("project" | "user")[];
86
+ }, {
87
+ default?: "project" | "user" | undefined;
88
+ allowed?: ("project" | "user")[] | undefined;
89
+ }>, {
90
+ default: "project" | "user";
91
+ allowed: ("project" | "user")[];
92
+ }, {
93
+ default?: "project" | "user" | undefined;
94
+ allowed?: ("project" | "user")[] | undefined;
95
+ }>>;
96
+ }, "strict", z.ZodTypeAny, {
97
+ directories: {
98
+ path: string;
99
+ scope: "project" | "user";
100
+ }[];
101
+ retention: {
102
+ staleness_days: number;
103
+ broken_refs: "warn" | "error" | "ignore";
104
+ };
105
+ scopes: {
106
+ default: "project" | "user";
107
+ allowed: ("project" | "user")[];
108
+ };
109
+ router?: {
110
+ command: string[];
111
+ enabled: boolean;
112
+ } | undefined;
113
+ }, {
114
+ directories?: {
115
+ path: string;
116
+ scope: "project" | "user";
117
+ }[] | undefined;
118
+ router?: {
119
+ command: string[];
120
+ enabled?: boolean | undefined;
121
+ } | undefined;
122
+ retention?: {
123
+ staleness_days?: number | undefined;
124
+ broken_refs?: "warn" | "error" | "ignore" | undefined;
125
+ } | undefined;
126
+ scopes?: {
127
+ default?: "project" | "user" | undefined;
128
+ allowed?: ("project" | "user")[] | undefined;
129
+ } | undefined;
130
+ }>;
131
+ export type Memory = z.infer<typeof MemorySchema>;
@@ -0,0 +1,38 @@
1
+ import { z } from "zod";
2
+ export const MemoryScopeSchema = z.enum(["project", "user"]);
3
+ export const MemoryDirectorySchema = z
4
+ .object({
5
+ path: z.string().min(1),
6
+ scope: MemoryScopeSchema,
7
+ })
8
+ .strict();
9
+ export const MemoryRouterSchema = z
10
+ .object({
11
+ command: z.array(z.string().min(1)).min(1),
12
+ enabled: z.boolean().default(true),
13
+ })
14
+ .strict();
15
+ export const MemoryRetentionSchema = z
16
+ .object({
17
+ staleness_days: z.number().int().positive().default(180),
18
+ broken_refs: z.enum(["warn", "error", "ignore"]).default("warn"),
19
+ })
20
+ .strict();
21
+ export const MemoryScopesSchema = z
22
+ .object({
23
+ default: MemoryScopeSchema.default("project"),
24
+ allowed: z.array(MemoryScopeSchema).min(1).default(["project"]),
25
+ })
26
+ .strict()
27
+ .refine((s) => s.allowed.includes(s.default), {
28
+ message: "memory.scopes.default must appear in memory.scopes.allowed",
29
+ });
30
+ export const MemorySchema = z
31
+ .object({
32
+ directories: z.array(MemoryDirectorySchema).default([]),
33
+ router: MemoryRouterSchema.optional(),
34
+ retention: MemoryRetentionSchema.default({}),
35
+ scopes: MemoryScopesSchema.default({}),
36
+ })
37
+ .strict();
38
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/schema/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,KAAK,EAAE,iBAAiB;CACzB,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACnC,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACxD,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;CACjE,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC;CAChE,CAAC;KACD,MAAM,EAAE;KACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;IAC5C,OAAO,EAAE,4DAA4D;CACtE,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACvD,MAAM,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IACrC,SAAS,EAAE,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5C,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;CACvC,CAAC;KACD,MAAM,EAAE,CAAC"}
@@ -0,0 +1,412 @@
1
+ import { z } from "zod";
2
+ export declare const PolicyTriggerSchema: z.ZodObject<{
3
+ event: z.ZodEnum<["SessionStart", "UserPromptSubmit", "PreToolUse", "PostToolUse", "Stop", "SubagentStop", "PreCompact"]>;
4
+ match: z.ZodOptional<z.ZodString>;
5
+ path_match: z.ZodOptional<z.ZodString>;
6
+ bash_match: z.ZodOptional<z.ZodString>;
7
+ extract: z.ZodOptional<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodString, string, string>>, Record<string, string>, Record<string, string>>>;
8
+ }, "strict", z.ZodTypeAny, {
9
+ event: "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop" | "SubagentStop" | "PreCompact";
10
+ match?: string | undefined;
11
+ path_match?: string | undefined;
12
+ bash_match?: string | undefined;
13
+ extract?: Record<string, string> | undefined;
14
+ }, {
15
+ event: "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop" | "SubagentStop" | "PreCompact";
16
+ match?: string | undefined;
17
+ path_match?: string | undefined;
18
+ bash_match?: string | undefined;
19
+ extract?: Record<string, string> | undefined;
20
+ }>;
21
+ export declare const PolicyEnforcementSchema: z.ZodEnum<["block", "warn"]>;
22
+ export declare const PolicySchema: z.ZodEffects<z.ZodObject<{
23
+ name: z.ZodString;
24
+ description: z.ZodString;
25
+ trigger: z.ZodObject<{
26
+ event: z.ZodEnum<["SessionStart", "UserPromptSubmit", "PreToolUse", "PostToolUse", "Stop", "SubagentStop", "PreCompact"]>;
27
+ match: z.ZodOptional<z.ZodString>;
28
+ path_match: z.ZodOptional<z.ZodString>;
29
+ bash_match: z.ZodOptional<z.ZodString>;
30
+ extract: z.ZodOptional<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodString, string, string>>, Record<string, string>, Record<string, string>>>;
31
+ }, "strict", z.ZodTypeAny, {
32
+ event: "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop" | "SubagentStop" | "PreCompact";
33
+ match?: string | undefined;
34
+ path_match?: string | undefined;
35
+ bash_match?: string | undefined;
36
+ extract?: Record<string, string> | undefined;
37
+ }, {
38
+ event: "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop" | "SubagentStop" | "PreCompact";
39
+ match?: string | undefined;
40
+ path_match?: string | undefined;
41
+ bash_match?: string | undefined;
42
+ extract?: Record<string, string> | undefined;
43
+ }>;
44
+ requires: z.ZodObject<{
45
+ ledger_tag: z.ZodString;
46
+ within: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
47
+ count: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodObject<{
48
+ min: z.ZodOptional<z.ZodNumber>;
49
+ max: z.ZodOptional<z.ZodNumber>;
50
+ exact: z.ZodOptional<z.ZodNumber>;
51
+ }, "strict", z.ZodTypeAny, {
52
+ exact?: number | undefined;
53
+ min?: number | undefined;
54
+ max?: number | undefined;
55
+ }, {
56
+ exact?: number | undefined;
57
+ min?: number | undefined;
58
+ max?: number | undefined;
59
+ }>, {
60
+ exact?: number | undefined;
61
+ min?: number | undefined;
62
+ max?: number | undefined;
63
+ }, {
64
+ exact?: number | undefined;
65
+ min?: number | undefined;
66
+ max?: number | undefined;
67
+ }>, {
68
+ exact?: number | undefined;
69
+ min?: number | undefined;
70
+ max?: number | undefined;
71
+ }, {
72
+ exact?: number | undefined;
73
+ min?: number | undefined;
74
+ max?: number | undefined;
75
+ }>, {
76
+ exact?: number | undefined;
77
+ min?: number | undefined;
78
+ max?: number | undefined;
79
+ }, {
80
+ exact?: number | undefined;
81
+ min?: number | undefined;
82
+ max?: number | undefined;
83
+ }>, {
84
+ exact?: number | undefined;
85
+ min?: number | undefined;
86
+ max?: number | undefined;
87
+ }, {
88
+ exact?: number | undefined;
89
+ min?: number | undefined;
90
+ max?: number | undefined;
91
+ }>>;
92
+ }, "strict", z.ZodTypeAny, {
93
+ ledger_tag: string;
94
+ within?: string | undefined;
95
+ count?: {
96
+ exact?: number | undefined;
97
+ min?: number | undefined;
98
+ max?: number | undefined;
99
+ } | undefined;
100
+ }, {
101
+ ledger_tag: string;
102
+ within?: string | undefined;
103
+ count?: {
104
+ exact?: number | undefined;
105
+ min?: number | undefined;
106
+ max?: number | undefined;
107
+ } | undefined;
108
+ }>;
109
+ hook: z.ZodString;
110
+ enforcement: z.ZodEnum<["block", "warn"]>;
111
+ }, "strict", z.ZodTypeAny, {
112
+ name: string;
113
+ description: string;
114
+ trigger: {
115
+ event: "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop" | "SubagentStop" | "PreCompact";
116
+ match?: string | undefined;
117
+ path_match?: string | undefined;
118
+ bash_match?: string | undefined;
119
+ extract?: Record<string, string> | undefined;
120
+ };
121
+ requires: {
122
+ ledger_tag: string;
123
+ within?: string | undefined;
124
+ count?: {
125
+ exact?: number | undefined;
126
+ min?: number | undefined;
127
+ max?: number | undefined;
128
+ } | undefined;
129
+ };
130
+ hook: string;
131
+ enforcement: "warn" | "block";
132
+ }, {
133
+ name: string;
134
+ description: string;
135
+ trigger: {
136
+ event: "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop" | "SubagentStop" | "PreCompact";
137
+ match?: string | undefined;
138
+ path_match?: string | undefined;
139
+ bash_match?: string | undefined;
140
+ extract?: Record<string, string> | undefined;
141
+ };
142
+ requires: {
143
+ ledger_tag: string;
144
+ within?: string | undefined;
145
+ count?: {
146
+ exact?: number | undefined;
147
+ min?: number | undefined;
148
+ max?: number | undefined;
149
+ } | undefined;
150
+ };
151
+ hook: string;
152
+ enforcement: "warn" | "block";
153
+ }>, {
154
+ name: string;
155
+ description: string;
156
+ trigger: {
157
+ event: "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop" | "SubagentStop" | "PreCompact";
158
+ match?: string | undefined;
159
+ path_match?: string | undefined;
160
+ bash_match?: string | undefined;
161
+ extract?: Record<string, string> | undefined;
162
+ };
163
+ requires: {
164
+ ledger_tag: string;
165
+ within?: string | undefined;
166
+ count?: {
167
+ exact?: number | undefined;
168
+ min?: number | undefined;
169
+ max?: number | undefined;
170
+ } | undefined;
171
+ };
172
+ hook: string;
173
+ enforcement: "warn" | "block";
174
+ }, {
175
+ name: string;
176
+ description: string;
177
+ trigger: {
178
+ event: "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop" | "SubagentStop" | "PreCompact";
179
+ match?: string | undefined;
180
+ path_match?: string | undefined;
181
+ bash_match?: string | undefined;
182
+ extract?: Record<string, string> | undefined;
183
+ };
184
+ requires: {
185
+ ledger_tag: string;
186
+ within?: string | undefined;
187
+ count?: {
188
+ exact?: number | undefined;
189
+ min?: number | undefined;
190
+ max?: number | undefined;
191
+ } | undefined;
192
+ };
193
+ hook: string;
194
+ enforcement: "warn" | "block";
195
+ }>;
196
+ export declare const PoliciesSchema: z.ZodEffects<z.ZodArray<z.ZodEffects<z.ZodObject<{
197
+ name: z.ZodString;
198
+ description: z.ZodString;
199
+ trigger: z.ZodObject<{
200
+ event: z.ZodEnum<["SessionStart", "UserPromptSubmit", "PreToolUse", "PostToolUse", "Stop", "SubagentStop", "PreCompact"]>;
201
+ match: z.ZodOptional<z.ZodString>;
202
+ path_match: z.ZodOptional<z.ZodString>;
203
+ bash_match: z.ZodOptional<z.ZodString>;
204
+ extract: z.ZodOptional<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodString, string, string>>, Record<string, string>, Record<string, string>>>;
205
+ }, "strict", z.ZodTypeAny, {
206
+ event: "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop" | "SubagentStop" | "PreCompact";
207
+ match?: string | undefined;
208
+ path_match?: string | undefined;
209
+ bash_match?: string | undefined;
210
+ extract?: Record<string, string> | undefined;
211
+ }, {
212
+ event: "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop" | "SubagentStop" | "PreCompact";
213
+ match?: string | undefined;
214
+ path_match?: string | undefined;
215
+ bash_match?: string | undefined;
216
+ extract?: Record<string, string> | undefined;
217
+ }>;
218
+ requires: z.ZodObject<{
219
+ ledger_tag: z.ZodString;
220
+ within: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
221
+ count: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodObject<{
222
+ min: z.ZodOptional<z.ZodNumber>;
223
+ max: z.ZodOptional<z.ZodNumber>;
224
+ exact: z.ZodOptional<z.ZodNumber>;
225
+ }, "strict", z.ZodTypeAny, {
226
+ exact?: number | undefined;
227
+ min?: number | undefined;
228
+ max?: number | undefined;
229
+ }, {
230
+ exact?: number | undefined;
231
+ min?: number | undefined;
232
+ max?: number | undefined;
233
+ }>, {
234
+ exact?: number | undefined;
235
+ min?: number | undefined;
236
+ max?: number | undefined;
237
+ }, {
238
+ exact?: number | undefined;
239
+ min?: number | undefined;
240
+ max?: number | undefined;
241
+ }>, {
242
+ exact?: number | undefined;
243
+ min?: number | undefined;
244
+ max?: number | undefined;
245
+ }, {
246
+ exact?: number | undefined;
247
+ min?: number | undefined;
248
+ max?: number | undefined;
249
+ }>, {
250
+ exact?: number | undefined;
251
+ min?: number | undefined;
252
+ max?: number | undefined;
253
+ }, {
254
+ exact?: number | undefined;
255
+ min?: number | undefined;
256
+ max?: number | undefined;
257
+ }>, {
258
+ exact?: number | undefined;
259
+ min?: number | undefined;
260
+ max?: number | undefined;
261
+ }, {
262
+ exact?: number | undefined;
263
+ min?: number | undefined;
264
+ max?: number | undefined;
265
+ }>>;
266
+ }, "strict", z.ZodTypeAny, {
267
+ ledger_tag: string;
268
+ within?: string | undefined;
269
+ count?: {
270
+ exact?: number | undefined;
271
+ min?: number | undefined;
272
+ max?: number | undefined;
273
+ } | undefined;
274
+ }, {
275
+ ledger_tag: string;
276
+ within?: string | undefined;
277
+ count?: {
278
+ exact?: number | undefined;
279
+ min?: number | undefined;
280
+ max?: number | undefined;
281
+ } | undefined;
282
+ }>;
283
+ hook: z.ZodString;
284
+ enforcement: z.ZodEnum<["block", "warn"]>;
285
+ }, "strict", z.ZodTypeAny, {
286
+ name: string;
287
+ description: string;
288
+ trigger: {
289
+ event: "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop" | "SubagentStop" | "PreCompact";
290
+ match?: string | undefined;
291
+ path_match?: string | undefined;
292
+ bash_match?: string | undefined;
293
+ extract?: Record<string, string> | undefined;
294
+ };
295
+ requires: {
296
+ ledger_tag: string;
297
+ within?: string | undefined;
298
+ count?: {
299
+ exact?: number | undefined;
300
+ min?: number | undefined;
301
+ max?: number | undefined;
302
+ } | undefined;
303
+ };
304
+ hook: string;
305
+ enforcement: "warn" | "block";
306
+ }, {
307
+ name: string;
308
+ description: string;
309
+ trigger: {
310
+ event: "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop" | "SubagentStop" | "PreCompact";
311
+ match?: string | undefined;
312
+ path_match?: string | undefined;
313
+ bash_match?: string | undefined;
314
+ extract?: Record<string, string> | undefined;
315
+ };
316
+ requires: {
317
+ ledger_tag: string;
318
+ within?: string | undefined;
319
+ count?: {
320
+ exact?: number | undefined;
321
+ min?: number | undefined;
322
+ max?: number | undefined;
323
+ } | undefined;
324
+ };
325
+ hook: string;
326
+ enforcement: "warn" | "block";
327
+ }>, {
328
+ name: string;
329
+ description: string;
330
+ trigger: {
331
+ event: "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop" | "SubagentStop" | "PreCompact";
332
+ match?: string | undefined;
333
+ path_match?: string | undefined;
334
+ bash_match?: string | undefined;
335
+ extract?: Record<string, string> | undefined;
336
+ };
337
+ requires: {
338
+ ledger_tag: string;
339
+ within?: string | undefined;
340
+ count?: {
341
+ exact?: number | undefined;
342
+ min?: number | undefined;
343
+ max?: number | undefined;
344
+ } | undefined;
345
+ };
346
+ hook: string;
347
+ enforcement: "warn" | "block";
348
+ }, {
349
+ name: string;
350
+ description: string;
351
+ trigger: {
352
+ event: "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop" | "SubagentStop" | "PreCompact";
353
+ match?: string | undefined;
354
+ path_match?: string | undefined;
355
+ bash_match?: string | undefined;
356
+ extract?: Record<string, string> | undefined;
357
+ };
358
+ requires: {
359
+ ledger_tag: string;
360
+ within?: string | undefined;
361
+ count?: {
362
+ exact?: number | undefined;
363
+ min?: number | undefined;
364
+ max?: number | undefined;
365
+ } | undefined;
366
+ };
367
+ hook: string;
368
+ enforcement: "warn" | "block";
369
+ }>, "many">, {
370
+ name: string;
371
+ description: string;
372
+ trigger: {
373
+ event: "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop" | "SubagentStop" | "PreCompact";
374
+ match?: string | undefined;
375
+ path_match?: string | undefined;
376
+ bash_match?: string | undefined;
377
+ extract?: Record<string, string> | undefined;
378
+ };
379
+ requires: {
380
+ ledger_tag: string;
381
+ within?: string | undefined;
382
+ count?: {
383
+ exact?: number | undefined;
384
+ min?: number | undefined;
385
+ max?: number | undefined;
386
+ } | undefined;
387
+ };
388
+ hook: string;
389
+ enforcement: "warn" | "block";
390
+ }[], {
391
+ name: string;
392
+ description: string;
393
+ trigger: {
394
+ event: "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop" | "SubagentStop" | "PreCompact";
395
+ match?: string | undefined;
396
+ path_match?: string | undefined;
397
+ bash_match?: string | undefined;
398
+ extract?: Record<string, string> | undefined;
399
+ };
400
+ requires: {
401
+ ledger_tag: string;
402
+ within?: string | undefined;
403
+ count?: {
404
+ exact?: number | undefined;
405
+ min?: number | undefined;
406
+ max?: number | undefined;
407
+ } | undefined;
408
+ };
409
+ hook: string;
410
+ enforcement: "warn" | "block";
411
+ }[]>;
412
+ export type Policy = z.infer<typeof PolicySchema>;