skein-cli 0.1.0-alpha.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 (250) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +180 -0
  3. package/bin/skein.mjs +7 -0
  4. package/dist/adapters/aider/conv-reader.d.ts +7 -0
  5. package/dist/adapters/aider/conv-reader.js +203 -0
  6. package/dist/adapters/aider/conv-reader.js.map +1 -0
  7. package/dist/adapters/aider/index.d.ts +2 -0
  8. package/dist/adapters/aider/index.js +123 -0
  9. package/dist/adapters/aider/index.js.map +1 -0
  10. package/dist/adapters/base.d.ts +71 -0
  11. package/dist/adapters/base.js +38 -0
  12. package/dist/adapters/base.js.map +1 -0
  13. package/dist/adapters/claude-code/conv-reader.d.ts +2 -0
  14. package/dist/adapters/claude-code/conv-reader.js +155 -0
  15. package/dist/adapters/claude-code/conv-reader.js.map +1 -0
  16. package/dist/adapters/claude-code/index.d.ts +3 -0
  17. package/dist/adapters/claude-code/index.js +517 -0
  18. package/dist/adapters/claude-code/index.js.map +1 -0
  19. package/dist/adapters/claude-desktop/index.d.ts +2 -0
  20. package/dist/adapters/claude-desktop/index.js +95 -0
  21. package/dist/adapters/claude-desktop/index.js.map +1 -0
  22. package/dist/adapters/codex/index.d.ts +2 -0
  23. package/dist/adapters/codex/index.js +472 -0
  24. package/dist/adapters/codex/index.js.map +1 -0
  25. package/dist/adapters/cursor/index.d.ts +2 -0
  26. package/dist/adapters/cursor/index.js +255 -0
  27. package/dist/adapters/cursor/index.js.map +1 -0
  28. package/dist/adapters/opencode/conv-reader.d.ts +3 -0
  29. package/dist/adapters/opencode/conv-reader.js +190 -0
  30. package/dist/adapters/opencode/conv-reader.js.map +1 -0
  31. package/dist/adapters/opencode/index.d.ts +2 -0
  32. package/dist/adapters/opencode/index.js +349 -0
  33. package/dist/adapters/opencode/index.js.map +1 -0
  34. package/dist/adapters/registry.d.ts +4 -0
  35. package/dist/adapters/registry.js +26 -0
  36. package/dist/adapters/registry.js.map +1 -0
  37. package/dist/cli.d.ts +3 -0
  38. package/dist/cli.js +54 -0
  39. package/dist/cli.js.map +1 -0
  40. package/dist/commands/conv.d.ts +2 -0
  41. package/dist/commands/conv.js +261 -0
  42. package/dist/commands/conv.js.map +1 -0
  43. package/dist/commands/doctor.d.ts +2 -0
  44. package/dist/commands/doctor.js +85 -0
  45. package/dist/commands/doctor.js.map +1 -0
  46. package/dist/commands/init.d.ts +2 -0
  47. package/dist/commands/init.js +38 -0
  48. package/dist/commands/init.js.map +1 -0
  49. package/dist/commands/memory.d.ts +2 -0
  50. package/dist/commands/memory.js +197 -0
  51. package/dist/commands/memory.js.map +1 -0
  52. package/dist/commands/migrate.d.ts +2 -0
  53. package/dist/commands/migrate.js +102 -0
  54. package/dist/commands/migrate.js.map +1 -0
  55. package/dist/commands/profile.d.ts +2 -0
  56. package/dist/commands/profile.js +183 -0
  57. package/dist/commands/profile.js.map +1 -0
  58. package/dist/commands/redact.d.ts +2 -0
  59. package/dist/commands/redact.js +73 -0
  60. package/dist/commands/redact.js.map +1 -0
  61. package/dist/commands/trace.d.ts +2 -0
  62. package/dist/commands/trace.js +181 -0
  63. package/dist/commands/trace.js.map +1 -0
  64. package/dist/commands/view.d.ts +13 -0
  65. package/dist/commands/view.js +184 -0
  66. package/dist/commands/view.js.map +1 -0
  67. package/dist/commands/watch.d.ts +6 -0
  68. package/dist/commands/watch.js +61 -0
  69. package/dist/commands/watch.js.map +1 -0
  70. package/dist/commands/wrap.d.ts +2 -0
  71. package/dist/commands/wrap.js +131 -0
  72. package/dist/commands/wrap.js.map +1 -0
  73. package/dist/conv/chatgpt-import.d.ts +33 -0
  74. package/dist/conv/chatgpt-import.js +145 -0
  75. package/dist/conv/chatgpt-import.js.map +1 -0
  76. package/dist/conv/cursor.d.ts +12 -0
  77. package/dist/conv/cursor.js +55 -0
  78. package/dist/conv/cursor.js.map +1 -0
  79. package/dist/conv/export.d.ts +40 -0
  80. package/dist/conv/export.js +215 -0
  81. package/dist/conv/export.js.map +1 -0
  82. package/dist/conv/replay/aider.d.ts +24 -0
  83. package/dist/conv/replay/aider.js +56 -0
  84. package/dist/conv/replay/aider.js.map +1 -0
  85. package/dist/conv/replay/claude-code.d.ts +38 -0
  86. package/dist/conv/replay/claude-code.js +80 -0
  87. package/dist/conv/replay/claude-code.js.map +1 -0
  88. package/dist/conv/replay/context.d.ts +25 -0
  89. package/dist/conv/replay/context.js +63 -0
  90. package/dist/conv/replay/context.js.map +1 -0
  91. package/dist/conv/replay/index.d.ts +22 -0
  92. package/dist/conv/replay/index.js +84 -0
  93. package/dist/conv/replay/index.js.map +1 -0
  94. package/dist/conv/search.d.ts +67 -0
  95. package/dist/conv/search.js +379 -0
  96. package/dist/conv/search.js.map +1 -0
  97. package/dist/conv/sink.d.ts +26 -0
  98. package/dist/conv/sink.js +76 -0
  99. package/dist/conv/sink.js.map +1 -0
  100. package/dist/conv/sources/aider.d.ts +13 -0
  101. package/dist/conv/sources/aider.js +95 -0
  102. package/dist/conv/sources/aider.js.map +1 -0
  103. package/dist/conv/sources/claude-code.d.ts +13 -0
  104. package/dist/conv/sources/claude-code.js +189 -0
  105. package/dist/conv/sources/claude-code.js.map +1 -0
  106. package/dist/conv/sources/codex.d.ts +15 -0
  107. package/dist/conv/sources/codex.js +175 -0
  108. package/dist/conv/sources/codex.js.map +1 -0
  109. package/dist/conv/sources/opencode.d.ts +12 -0
  110. package/dist/conv/sources/opencode.js +92 -0
  111. package/dist/conv/sources/opencode.js.map +1 -0
  112. package/dist/conv/store.d.ts +10 -0
  113. package/dist/conv/store.js +75 -0
  114. package/dist/conv/store.js.map +1 -0
  115. package/dist/conv/title.d.ts +9 -0
  116. package/dist/conv/title.js +74 -0
  117. package/dist/conv/title.js.map +1 -0
  118. package/dist/conv/watcher.d.ts +28 -0
  119. package/dist/conv/watcher.js +75 -0
  120. package/dist/conv/watcher.js.map +1 -0
  121. package/dist/conv/zip.d.ts +11 -0
  122. package/dist/conv/zip.js +82 -0
  123. package/dist/conv/zip.js.map +1 -0
  124. package/dist/hf/client.d.ts +41 -0
  125. package/dist/hf/client.js +87 -0
  126. package/dist/hf/client.js.map +1 -0
  127. package/dist/index.d.ts +5 -0
  128. package/dist/index.js +6 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/ir/index.d.ts +24 -0
  131. package/dist/ir/index.js +23 -0
  132. package/dist/ir/index.js.map +1 -0
  133. package/dist/ir/profile.d.ts +55 -0
  134. package/dist/ir/profile.js +177 -0
  135. package/dist/ir/profile.js.map +1 -0
  136. package/dist/memory/index.d.ts +41 -0
  137. package/dist/memory/index.js +109 -0
  138. package/dist/memory/index.js.map +1 -0
  139. package/dist/memory/search.d.ts +24 -0
  140. package/dist/memory/search.js +114 -0
  141. package/dist/memory/search.js.map +1 -0
  142. package/dist/memory/sinks/claude-mem.d.ts +13 -0
  143. package/dist/memory/sinks/claude-mem.js +100 -0
  144. package/dist/memory/sinks/claude-mem.js.map +1 -0
  145. package/dist/memory/sinks/codex.d.ts +12 -0
  146. package/dist/memory/sinks/codex.js +82 -0
  147. package/dist/memory/sinks/codex.js.map +1 -0
  148. package/dist/memory/sinks/context.d.ts +21 -0
  149. package/dist/memory/sinks/context.js +42 -0
  150. package/dist/memory/sinks/context.js.map +1 -0
  151. package/dist/memory/sources/chatgpt.d.ts +22 -0
  152. package/dist/memory/sources/chatgpt.js +98 -0
  153. package/dist/memory/sources/chatgpt.js.map +1 -0
  154. package/dist/memory/sources/claude-mem.d.ts +8 -0
  155. package/dist/memory/sources/claude-mem.js +104 -0
  156. package/dist/memory/sources/claude-mem.js.map +1 -0
  157. package/dist/memory/sources/codex.d.ts +8 -0
  158. package/dist/memory/sources/codex.js +77 -0
  159. package/dist/memory/sources/codex.js.map +1 -0
  160. package/dist/memory/store.d.ts +19 -0
  161. package/dist/memory/store.js +82 -0
  162. package/dist/memory/store.js.map +1 -0
  163. package/dist/proxy/http.d.ts +21 -0
  164. package/dist/proxy/http.js +205 -0
  165. package/dist/proxy/http.js.map +1 -0
  166. package/dist/proxy/recorder.d.ts +35 -0
  167. package/dist/proxy/recorder.js +221 -0
  168. package/dist/proxy/recorder.js.map +1 -0
  169. package/dist/proxy/streaming.d.ts +33 -0
  170. package/dist/proxy/streaming.js +185 -0
  171. package/dist/proxy/streaming.js.map +1 -0
  172. package/dist/redactor/entropy.d.ts +29 -0
  173. package/dist/redactor/entropy.js +98 -0
  174. package/dist/redactor/entropy.js.map +1 -0
  175. package/dist/redactor/index.d.ts +52 -0
  176. package/dist/redactor/index.js +152 -0
  177. package/dist/redactor/index.js.map +1 -0
  178. package/dist/redactor/ner.d.ts +53 -0
  179. package/dist/redactor/ner.js +97 -0
  180. package/dist/redactor/ner.js.map +1 -0
  181. package/dist/redactor/pii-patterns.d.ts +22 -0
  182. package/dist/redactor/pii-patterns.js +187 -0
  183. package/dist/redactor/pii-patterns.js.map +1 -0
  184. package/dist/redactor/secret-patterns.d.ts +27 -0
  185. package/dist/redactor/secret-patterns.js +475 -0
  186. package/dist/redactor/secret-patterns.js.map +1 -0
  187. package/dist/schema/conv.d.ts +698 -0
  188. package/dist/schema/conv.js +85 -0
  189. package/dist/schema/conv.js.map +1 -0
  190. package/dist/schema/index.d.ts +2 -0
  191. package/dist/schema/index.js +3 -0
  192. package/dist/schema/index.js.map +1 -0
  193. package/dist/schema/manifest.d.ts +1531 -0
  194. package/dist/schema/manifest.js +179 -0
  195. package/dist/schema/manifest.js.map +1 -0
  196. package/dist/schema/memory.d.ts +107 -0
  197. package/dist/schema/memory.js +45 -0
  198. package/dist/schema/memory.js.map +1 -0
  199. package/dist/schema/trace.d.ts +164 -0
  200. package/dist/schema/trace.js +89 -0
  201. package/dist/schema/trace.js.map +1 -0
  202. package/dist/trace/consent.d.ts +30 -0
  203. package/dist/trace/consent.js +60 -0
  204. package/dist/trace/consent.js.map +1 -0
  205. package/dist/trace/extract.d.ts +22 -0
  206. package/dist/trace/extract.js +168 -0
  207. package/dist/trace/extract.js.map +1 -0
  208. package/dist/trace/ml-pii.d.ts +33 -0
  209. package/dist/trace/ml-pii.js +35 -0
  210. package/dist/trace/ml-pii.js.map +1 -0
  211. package/dist/trace/push.d.ts +59 -0
  212. package/dist/trace/push.js +141 -0
  213. package/dist/trace/push.js.map +1 -0
  214. package/dist/trace/serialize.d.ts +23 -0
  215. package/dist/trace/serialize.js +67 -0
  216. package/dist/trace/serialize.js.map +1 -0
  217. package/dist/ui/banner.d.ts +2 -0
  218. package/dist/ui/banner.js +17 -0
  219. package/dist/ui/banner.js.map +1 -0
  220. package/dist/ui/box.d.ts +4 -0
  221. package/dist/ui/box.js +38 -0
  222. package/dist/ui/box.js.map +1 -0
  223. package/dist/ui/index.d.ts +5 -0
  224. package/dist/ui/index.js +5 -0
  225. package/dist/ui/index.js.map +1 -0
  226. package/dist/ui/spinner.d.ts +10 -0
  227. package/dist/ui/spinner.js +44 -0
  228. package/dist/ui/spinner.js.map +1 -0
  229. package/dist/ui/table.d.ts +9 -0
  230. package/dist/ui/table.js +55 -0
  231. package/dist/ui/table.js.map +1 -0
  232. package/dist/util/frontmatter.d.ts +6 -0
  233. package/dist/util/frontmatter.js +20 -0
  234. package/dist/util/frontmatter.js.map +1 -0
  235. package/dist/util/fs.d.ts +5 -0
  236. package/dist/util/fs.js +41 -0
  237. package/dist/util/fs.js.map +1 -0
  238. package/dist/util/ids.d.ts +3 -0
  239. package/dist/util/ids.js +16 -0
  240. package/dist/util/ids.js.map +1 -0
  241. package/dist/util/log.d.ts +13 -0
  242. package/dist/util/log.js +33 -0
  243. package/dist/util/log.js.map +1 -0
  244. package/dist/util/paths.d.ts +18 -0
  245. package/dist/util/paths.js +36 -0
  246. package/dist/util/paths.js.map +1 -0
  247. package/dist/version.d.ts +5 -0
  248. package/dist/version.js +32 -0
  249. package/dist/version.js.map +1 -0
  250. package/package.json +86 -0
@@ -0,0 +1,179 @@
1
+ import { z } from 'zod';
2
+ import { PROFILE_SCHEMA } from '../version.js';
3
+ export const ProvenanceSchema = z.object({
4
+ sourceTool: z.string(),
5
+ sourcePath: z.string().optional(),
6
+ sourceKey: z.string().optional(),
7
+ capturedAt: z.string().optional(),
8
+ });
9
+ export const IdentitySchema = z.object({
10
+ name: z.string().optional(),
11
+ email: z.string().optional(),
12
+ pronouns: z.string().optional(),
13
+ timezone: z.string().optional(),
14
+ language: z.string().optional(),
15
+ bio: z.string().optional(),
16
+ preferences: z.string().optional(),
17
+ provenance: ProvenanceSchema.optional(),
18
+ });
19
+ export const RuleScopeSchema = z.enum(['global', 'project']);
20
+ export const RuleActivationSchema = z.enum(['always', 'auto', 'agent', 'manual']);
21
+ export const RuleSchema = z.object({
22
+ id: z.string(),
23
+ scope: RuleScopeSchema,
24
+ activation: RuleActivationSchema.default('always'),
25
+ description: z.string().optional(),
26
+ globs: z.array(z.string()).optional(),
27
+ body: z.string(),
28
+ sources: z.array(z.string()).optional(),
29
+ provenance: ProvenanceSchema.optional(),
30
+ });
31
+ export const ToolPermissionSchema = z.object({
32
+ allow: z.array(z.string()).optional(),
33
+ deny: z.array(z.string()).optional(),
34
+ ask: z.array(z.string()).optional(),
35
+ });
36
+ export const AgentRoleSchema = z.enum(['primary', 'subagent', 'both']);
37
+ export const AgentSchema = z.object({
38
+ id: z.string(),
39
+ name: z.string(),
40
+ description: z.string(),
41
+ role: AgentRoleSchema.default('subagent'),
42
+ model: z.string().optional(),
43
+ temperature: z.number().optional(),
44
+ systemPrompt: z.string(),
45
+ tools: ToolPermissionSchema.optional(),
46
+ isolation: z.enum(['none', 'worktree']).optional(),
47
+ color: z.string().optional(),
48
+ provenance: ProvenanceSchema.optional(),
49
+ });
50
+ export const CommandSchema = z.object({
51
+ id: z.string(),
52
+ name: z.string(),
53
+ description: z.string().optional(),
54
+ argumentHint: z.string().optional(),
55
+ allowedTools: z.array(z.string()).optional(),
56
+ model: z.string().optional(),
57
+ body: z.string(),
58
+ provenance: ProvenanceSchema.optional(),
59
+ });
60
+ export const SkillTriggerSchema = z.enum(['model', 'user', 'both']);
61
+ export const SkillSchema = z.object({
62
+ id: z.string(),
63
+ name: z.string(),
64
+ description: z.string(),
65
+ whenToUse: z.string().optional(),
66
+ trigger: SkillTriggerSchema.default('both'),
67
+ allowedTools: z.array(z.string()).optional(),
68
+ disallowedTools: z.array(z.string()).optional(),
69
+ model: z.string().optional(),
70
+ argumentHint: z.string().optional(),
71
+ paths: z.array(z.string()).optional(),
72
+ body: z.string(),
73
+ files: z.record(z.string(), z.string()).optional(),
74
+ ui: z
75
+ .object({
76
+ displayName: z.string().optional(),
77
+ shortDescription: z.string().optional(),
78
+ iconSmall: z.string().optional(),
79
+ iconLarge: z.string().optional(),
80
+ brandColor: z.string().optional(),
81
+ })
82
+ .optional(),
83
+ provenance: ProvenanceSchema.optional(),
84
+ });
85
+ export const McpTransportSchema = z.enum(['stdio', 'http', 'sse', 'ws']);
86
+ export const McpServerSchema = z.object({
87
+ id: z.string(),
88
+ scope: z.enum(['global', 'project']).default('global'),
89
+ transport: McpTransportSchema,
90
+ command: z.string().optional(),
91
+ args: z.array(z.string()).optional(),
92
+ env: z.record(z.string(), z.string()).optional(),
93
+ url: z.string().optional(),
94
+ headers: z.record(z.string(), z.string()).optional(),
95
+ enabled: z.boolean().default(true),
96
+ startupTimeoutSec: z.number().optional(),
97
+ provenance: ProvenanceSchema.optional(),
98
+ });
99
+ export const HookEventSchema = z.enum([
100
+ 'PreToolUse',
101
+ 'PostToolUse',
102
+ 'PostToolUseFailure',
103
+ 'UserPromptSubmit',
104
+ 'SessionStart',
105
+ 'SessionEnd',
106
+ 'Stop',
107
+ 'StopFailure',
108
+ 'Notification',
109
+ 'SubagentStart',
110
+ 'SubagentStop',
111
+ 'PreCompact',
112
+ 'PostCompact',
113
+ ]);
114
+ export const HookActionSchema = z.object({
115
+ type: z.enum(['command', 'http', 'mcp_tool', 'prompt', 'agent']).default('command'),
116
+ command: z.string().optional(),
117
+ args: z.array(z.string()).optional(),
118
+ url: z.string().optional(),
119
+ server: z.string().optional(),
120
+ prompt: z.string().optional(),
121
+ timeout: z.number().optional(),
122
+ shell: z.string().optional(),
123
+ });
124
+ export const HookSchema = z.object({
125
+ event: HookEventSchema,
126
+ matcher: z.string().optional(),
127
+ actions: z.array(HookActionSchema),
128
+ description: z.string().optional(),
129
+ provenance: ProvenanceSchema.optional(),
130
+ });
131
+ export const PermissionSchema = z.object({
132
+ allow: z.array(z.string()).default([]),
133
+ deny: z.array(z.string()).default([]),
134
+ ask: z.array(z.string()).default([]),
135
+ defaultMode: z.enum(['default', 'auto', 'acceptEdits', 'plan']).optional(),
136
+ additionalDirectories: z.array(z.string()).optional(),
137
+ });
138
+ export const ProviderConfigSchema = z.object({
139
+ npm: z.string().optional(),
140
+ baseUrl: z.string().optional(),
141
+ envKey: z.string().optional(),
142
+ wireApi: z.enum(['responses', 'chat']).optional(),
143
+ options: z.record(z.string(), z.unknown()).optional(),
144
+ });
145
+ export const ModelConfigSchema = z.object({
146
+ defaultModel: z.string().optional(),
147
+ smallModel: z.string().optional(),
148
+ reasoningEffort: z.enum(['minimal', 'low', 'medium', 'high', 'xhigh']).optional(),
149
+ providers: z.record(z.string(), ProviderConfigSchema).optional(),
150
+ });
151
+ export const ProfileManifestSchema = z.object({
152
+ schema: z.literal(PROFILE_SCHEMA),
153
+ createdAt: z.string(),
154
+ sourceTool: z.string(),
155
+ sourceVersion: z.string().optional(),
156
+ identity: IdentitySchema.optional(),
157
+ rules: z.array(RuleSchema).default([]),
158
+ agents: z.array(AgentSchema).default([]),
159
+ commands: z.array(CommandSchema).default([]),
160
+ skills: z.array(SkillSchema).default([]),
161
+ mcpServers: z.array(McpServerSchema).default([]),
162
+ hooks: z.array(HookSchema).default([]),
163
+ permissions: PermissionSchema.optional(),
164
+ models: ModelConfigSchema.optional(),
165
+ });
166
+ export function emptyProfile(sourceTool) {
167
+ return {
168
+ schema: PROFILE_SCHEMA,
169
+ createdAt: new Date().toISOString(),
170
+ sourceTool,
171
+ rules: [],
172
+ agents: [],
173
+ commands: [],
174
+ skills: [],
175
+ mcpServers: [],
176
+ hooks: [],
177
+ };
178
+ }
179
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/schema/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;AAC5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;AAEjF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,eAAe;IACtB,UAAU,EAAE,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC;IAClD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;AAEtE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,KAAK,EAAE,oBAAoB,CAAC,QAAQ,EAAE;IACtC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAEnE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC;IAC3C,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5C,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAClD,EAAE,EAAE,CAAC;SACF,MAAM,CAAC;QACN,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC;SACD,QAAQ,EAAE;IACb,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AAExE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACtD,SAAS,EAAE,kBAAkB;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAChD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACpC,YAAY;IACZ,aAAa;IACb,oBAAoB;IACpB,kBAAkB;IAClB,cAAc;IACd,YAAY;IACZ,MAAM;IACN,aAAa;IACb,cAAc;IACd,eAAe;IACf,cAAc;IACd,YAAY;IACZ,aAAa;CACd,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IACnF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,eAAe;IACtB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACpC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1E,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACtD,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACtD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjF,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,QAAQ,EAAE;CACjE,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;IACnC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAChD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,WAAW,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACxC,MAAM,EAAE,iBAAiB,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAA;AAGF,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,OAAO;QACL,MAAM,EAAE,cAAc;QACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,UAAU;QACV,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,EAAE;KACV,CAAA;AACH,CAAC"}
@@ -0,0 +1,107 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * `skein-memory/1` — the canonical Memory IR.
4
+ *
5
+ * One JSONL line per Memory event. Updates emit a new line with the
6
+ * same `id` and a fresher `updatedAt`. The FTS index always reflects
7
+ * the latest version per id.
8
+ */
9
+ export declare const MemoryScopeSchema: z.ZodEnum<["global", "project"]>;
10
+ export type MemoryScope = z.infer<typeof MemoryScopeSchema>;
11
+ export declare const MemoryProvenanceSchema: z.ZodObject<{
12
+ sourceTool: z.ZodString;
13
+ sourcePath: z.ZodOptional<z.ZodString>;
14
+ sourceKey: z.ZodOptional<z.ZodString>;
15
+ capturedAt: z.ZodString;
16
+ }, "strip", z.ZodTypeAny, {
17
+ sourceTool: string;
18
+ capturedAt: string;
19
+ sourcePath?: string | undefined;
20
+ sourceKey?: string | undefined;
21
+ }, {
22
+ sourceTool: string;
23
+ capturedAt: string;
24
+ sourcePath?: string | undefined;
25
+ sourceKey?: string | undefined;
26
+ }>;
27
+ export type MemoryProvenance = z.infer<typeof MemoryProvenanceSchema>;
28
+ export declare const MemorySchema: z.ZodObject<{
29
+ schema: z.ZodDefault<z.ZodLiteral<"skein-memory/1">>;
30
+ id: z.ZodString;
31
+ tool: z.ZodString;
32
+ scope: z.ZodEnum<["global", "project"]>;
33
+ project: z.ZodOptional<z.ZodString>;
34
+ fact: z.ZodString;
35
+ tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
36
+ sourceConv: z.ZodOptional<z.ZodString>;
37
+ provenance: z.ZodObject<{
38
+ sourceTool: z.ZodString;
39
+ sourcePath: z.ZodOptional<z.ZodString>;
40
+ sourceKey: z.ZodOptional<z.ZodString>;
41
+ capturedAt: z.ZodString;
42
+ }, "strip", z.ZodTypeAny, {
43
+ sourceTool: string;
44
+ capturedAt: string;
45
+ sourcePath?: string | undefined;
46
+ sourceKey?: string | undefined;
47
+ }, {
48
+ sourceTool: string;
49
+ capturedAt: string;
50
+ sourcePath?: string | undefined;
51
+ sourceKey?: string | undefined;
52
+ }>;
53
+ addedAt: z.ZodString;
54
+ updatedAt: z.ZodString;
55
+ }, "strip", z.ZodTypeAny, {
56
+ provenance: {
57
+ sourceTool: string;
58
+ capturedAt: string;
59
+ sourcePath?: string | undefined;
60
+ sourceKey?: string | undefined;
61
+ };
62
+ id: string;
63
+ scope: "global" | "project";
64
+ schema: "skein-memory/1";
65
+ tool: string;
66
+ fact: string;
67
+ tags: string[];
68
+ addedAt: string;
69
+ updatedAt: string;
70
+ project?: string | undefined;
71
+ sourceConv?: string | undefined;
72
+ }, {
73
+ provenance: {
74
+ sourceTool: string;
75
+ capturedAt: string;
76
+ sourcePath?: string | undefined;
77
+ sourceKey?: string | undefined;
78
+ };
79
+ id: string;
80
+ scope: "global" | "project";
81
+ tool: string;
82
+ fact: string;
83
+ addedAt: string;
84
+ updatedAt: string;
85
+ project?: string | undefined;
86
+ schema?: "skein-memory/1" | undefined;
87
+ tags?: string[] | undefined;
88
+ sourceConv?: string | undefined;
89
+ }>;
90
+ export type Memory = z.infer<typeof MemorySchema>;
91
+ export interface MemorySummary {
92
+ id: string;
93
+ tool: string;
94
+ scope: MemoryScope;
95
+ project?: string;
96
+ title: string;
97
+ tags: string[];
98
+ startedAt: string;
99
+ updatedAt: string;
100
+ }
101
+ /**
102
+ * Compute the stable Skein memory id from (tool, sourceKey).
103
+ *
104
+ * Re-capturing the same upstream row produces the same id every time
105
+ * so the JSONL log de-duplicates by id during read.
106
+ */
107
+ export declare function memoryId(tool: string, sourceKey: string): string;
@@ -0,0 +1,45 @@
1
+ import { z } from 'zod';
2
+ import { MEMORY_SCHEMA } from '../version.js';
3
+ /**
4
+ * `skein-memory/1` — the canonical Memory IR.
5
+ *
6
+ * One JSONL line per Memory event. Updates emit a new line with the
7
+ * same `id` and a fresher `updatedAt`. The FTS index always reflects
8
+ * the latest version per id.
9
+ */
10
+ export const MemoryScopeSchema = z.enum(['global', 'project']);
11
+ export const MemoryProvenanceSchema = z.object({
12
+ sourceTool: z.string(),
13
+ sourcePath: z.string().optional(),
14
+ sourceKey: z.string().optional(),
15
+ capturedAt: z.string(),
16
+ });
17
+ export const MemorySchema = z.object({
18
+ schema: z.literal(MEMORY_SCHEMA).default(MEMORY_SCHEMA),
19
+ id: z.string(),
20
+ tool: z.string(),
21
+ scope: MemoryScopeSchema,
22
+ project: z.string().optional(),
23
+ fact: z.string(),
24
+ tags: z.array(z.string()).default([]),
25
+ sourceConv: z.string().optional(),
26
+ provenance: MemoryProvenanceSchema,
27
+ addedAt: z.string(),
28
+ updatedAt: z.string(),
29
+ });
30
+ /**
31
+ * Compute the stable Skein memory id from (tool, sourceKey).
32
+ *
33
+ * Re-capturing the same upstream row produces the same id every time
34
+ * so the JSONL log de-duplicates by id during read.
35
+ */
36
+ export function memoryId(tool, sourceKey) {
37
+ return `mem-${tool}-${sanitizeKey(sourceKey)}`;
38
+ }
39
+ function sanitizeKey(raw) {
40
+ const cleaned = raw.replace(/[^A-Za-z0-9_-]+/g, '-').replace(/-+/g, '-');
41
+ if (cleaned.length <= 40)
42
+ return cleaned;
43
+ return cleaned.slice(0, 40);
44
+ }
45
+ //# 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,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;AAG9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACvD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,iBAAiB;IACxB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,sBAAsB;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAA;AAcF;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,SAAiB;IACtD,OAAO,OAAO,IAAI,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAA;AAChD,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACxE,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE;QAAE,OAAO,OAAO,CAAA;IACxC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAC7B,CAAC"}
@@ -0,0 +1,164 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * `skein-trace/1` — a content-bearing, per-turn telemetry row.
4
+ *
5
+ * Design invariant: this row carries conversation content (prompt, output,
6
+ * reasoning, and tool-call inputs/results) ONLY after every text value has been
7
+ * passed through the tiered secret/PII redactor. No raw, un-redacted content is
8
+ * ever stored in a row. Alongside the redacted content, each row keeps the
9
+ * harness-sourced labels, REAL per-turn metrics (actual token counts, latency,
10
+ * cost — no bucketing), surrogate keys, and tool-call structure. The schema is
11
+ * `.strict()` so no un-allowlisted field can ride along, and every string field
12
+ * is redacted at extraction time.
13
+ */
14
+ export declare const EFFORT_LEVELS: readonly ["minimal", "low", "medium", "high", "xhigh", "unknown"];
15
+ export type EffortLevel = (typeof EFFORT_LEVELS)[number];
16
+ export declare const OUTCOMES: readonly ["ok", "error", "unknown"];
17
+ export type Outcome = (typeof OUTCOMES)[number];
18
+ export declare const ToolCallStructureSchema: z.ZodObject<{
19
+ name: z.ZodString;
20
+ count: z.ZodNumber;
21
+ }, "strict", z.ZodTypeAny, {
22
+ name: string;
23
+ count: number;
24
+ }, {
25
+ name: string;
26
+ count: number;
27
+ }>;
28
+ export type ToolCallStructure = z.infer<typeof ToolCallStructureSchema>;
29
+ /**
30
+ * Redacted tool-call I/O for one `tool_use` block and its matching result.
31
+ * `input` and `result` are redactor-scrubbed strings (never raw values).
32
+ */
33
+ export declare const ToolIoSchema: z.ZodObject<{
34
+ name: z.ZodString;
35
+ input: z.ZodString;
36
+ result: z.ZodOptional<z.ZodString>;
37
+ isError: z.ZodOptional<z.ZodBoolean>;
38
+ }, "strict", z.ZodTypeAny, {
39
+ name: string;
40
+ input: string;
41
+ result?: string | undefined;
42
+ isError?: boolean | undefined;
43
+ }, {
44
+ name: string;
45
+ input: string;
46
+ result?: string | undefined;
47
+ isError?: boolean | undefined;
48
+ }>;
49
+ export type ToolIo = z.infer<typeof ToolIoSchema>;
50
+ export declare const TraceRowSchema: z.ZodObject<{
51
+ schema: z.ZodLiteral<"skein-trace/1">;
52
+ rowId: z.ZodString;
53
+ sessionKey: z.ZodString;
54
+ turnIndex: z.ZodNumber;
55
+ provider: z.ZodString;
56
+ model: z.ZodString;
57
+ modelKind: z.ZodString;
58
+ harness: z.ZodString;
59
+ harnessVersion: z.ZodOptional<z.ZodString>;
60
+ effort: z.ZodEnum<["minimal", "low", "medium", "high", "xhigh", "unknown"]>;
61
+ tokensIn: z.ZodNullable<z.ZodNumber>;
62
+ tokensOut: z.ZodNullable<z.ZodNumber>;
63
+ latencyMs: z.ZodNullable<z.ZodNumber>;
64
+ costUsd: z.ZodNullable<z.ZodNumber>;
65
+ toolCalls: z.ZodArray<z.ZodObject<{
66
+ name: z.ZodString;
67
+ count: z.ZodNumber;
68
+ }, "strict", z.ZodTypeAny, {
69
+ name: string;
70
+ count: number;
71
+ }, {
72
+ name: string;
73
+ count: number;
74
+ }>, "many">;
75
+ toolCallDepth: z.ZodNumber;
76
+ prompt: z.ZodString;
77
+ output: z.ZodString;
78
+ reasoning: z.ZodOptional<z.ZodString>;
79
+ toolIO: z.ZodArray<z.ZodObject<{
80
+ name: z.ZodString;
81
+ input: z.ZodString;
82
+ result: z.ZodOptional<z.ZodString>;
83
+ isError: z.ZodOptional<z.ZodBoolean>;
84
+ }, "strict", z.ZodTypeAny, {
85
+ name: string;
86
+ input: string;
87
+ result?: string | undefined;
88
+ isError?: boolean | undefined;
89
+ }, {
90
+ name: string;
91
+ input: string;
92
+ result?: string | undefined;
93
+ isError?: boolean | undefined;
94
+ }>, "many">;
95
+ outcome: z.ZodEnum<["ok", "error", "unknown"]>;
96
+ errorClass: z.ZodOptional<z.ZodString>;
97
+ ts: z.ZodString;
98
+ }, "strict", z.ZodTypeAny, {
99
+ model: string;
100
+ prompt: string;
101
+ schema: "skein-trace/1";
102
+ modelKind: string;
103
+ provider: string;
104
+ effort: "unknown" | "minimal" | "low" | "medium" | "high" | "xhigh";
105
+ ts: string;
106
+ latencyMs: number | null;
107
+ costUsd: number | null;
108
+ output: string;
109
+ tokensIn: number | null;
110
+ tokensOut: number | null;
111
+ rowId: string;
112
+ sessionKey: string;
113
+ turnIndex: number;
114
+ harness: string;
115
+ toolCalls: {
116
+ name: string;
117
+ count: number;
118
+ }[];
119
+ toolCallDepth: number;
120
+ toolIO: {
121
+ name: string;
122
+ input: string;
123
+ result?: string | undefined;
124
+ isError?: boolean | undefined;
125
+ }[];
126
+ outcome: "unknown" | "error" | "ok";
127
+ reasoning?: string | undefined;
128
+ harnessVersion?: string | undefined;
129
+ errorClass?: string | undefined;
130
+ }, {
131
+ model: string;
132
+ prompt: string;
133
+ schema: "skein-trace/1";
134
+ modelKind: string;
135
+ provider: string;
136
+ effort: "unknown" | "minimal" | "low" | "medium" | "high" | "xhigh";
137
+ ts: string;
138
+ latencyMs: number | null;
139
+ costUsd: number | null;
140
+ output: string;
141
+ tokensIn: number | null;
142
+ tokensOut: number | null;
143
+ rowId: string;
144
+ sessionKey: string;
145
+ turnIndex: number;
146
+ harness: string;
147
+ toolCalls: {
148
+ name: string;
149
+ count: number;
150
+ }[];
151
+ toolCallDepth: number;
152
+ toolIO: {
153
+ name: string;
154
+ input: string;
155
+ result?: string | undefined;
156
+ isError?: boolean | undefined;
157
+ }[];
158
+ outcome: "unknown" | "error" | "ok";
159
+ reasoning?: string | undefined;
160
+ harnessVersion?: string | undefined;
161
+ errorClass?: string | undefined;
162
+ }>;
163
+ export type TraceRow = z.infer<typeof TraceRowSchema>;
164
+ export declare const TRACE_COLUMNS: readonly (keyof TraceRow)[];
@@ -0,0 +1,89 @@
1
+ import { z } from 'zod';
2
+ import { TRACE_SCHEMA } from '../version.js';
3
+ /**
4
+ * `skein-trace/1` — a content-bearing, per-turn telemetry row.
5
+ *
6
+ * Design invariant: this row carries conversation content (prompt, output,
7
+ * reasoning, and tool-call inputs/results) ONLY after every text value has been
8
+ * passed through the tiered secret/PII redactor. No raw, un-redacted content is
9
+ * ever stored in a row. Alongside the redacted content, each row keeps the
10
+ * harness-sourced labels, REAL per-turn metrics (actual token counts, latency,
11
+ * cost — no bucketing), surrogate keys, and tool-call structure. The schema is
12
+ * `.strict()` so no un-allowlisted field can ride along, and every string field
13
+ * is redacted at extraction time.
14
+ */
15
+ export const EFFORT_LEVELS = ['minimal', 'low', 'medium', 'high', 'xhigh', 'unknown'];
16
+ export const OUTCOMES = ['ok', 'error', 'unknown'];
17
+ export const ToolCallStructureSchema = z
18
+ .object({
19
+ name: z.string(),
20
+ count: z.number().int().nonnegative(),
21
+ })
22
+ .strict();
23
+ /**
24
+ * Redacted tool-call I/O for one `tool_use` block and its matching result.
25
+ * `input` and `result` are redactor-scrubbed strings (never raw values).
26
+ */
27
+ export const ToolIoSchema = z
28
+ .object({
29
+ name: z.string(),
30
+ input: z.string(),
31
+ result: z.string().optional(),
32
+ isError: z.boolean().optional(),
33
+ })
34
+ .strict();
35
+ export const TraceRowSchema = z
36
+ .object({
37
+ schema: z.literal(TRACE_SCHEMA),
38
+ rowId: z.string(),
39
+ sessionKey: z.string(),
40
+ turnIndex: z.number().int().nonnegative(),
41
+ provider: z.string(),
42
+ model: z.string(),
43
+ modelKind: z.string(),
44
+ harness: z.string(),
45
+ harnessVersion: z.string().optional(),
46
+ effort: z.enum(EFFORT_LEVELS),
47
+ // Real per-turn metrics — no bucketing. Null when the source didn't report it.
48
+ tokensIn: z.number().int().nonnegative().nullable(),
49
+ tokensOut: z.number().int().nonnegative().nullable(),
50
+ latencyMs: z.number().nonnegative().nullable(),
51
+ costUsd: z.number().nonnegative().nullable(),
52
+ toolCalls: z.array(ToolCallStructureSchema),
53
+ toolCallDepth: z.number().int().nonnegative(),
54
+ // Redacted conversation content (every string scrubbed at extraction time).
55
+ prompt: z.string(),
56
+ output: z.string(),
57
+ reasoning: z.string().optional(),
58
+ toolIO: z.array(ToolIoSchema),
59
+ outcome: z.enum(OUTCOMES),
60
+ errorClass: z.string().optional(),
61
+ ts: z.string(),
62
+ })
63
+ .strict();
64
+ export const TRACE_COLUMNS = [
65
+ 'schema',
66
+ 'rowId',
67
+ 'sessionKey',
68
+ 'turnIndex',
69
+ 'provider',
70
+ 'model',
71
+ 'modelKind',
72
+ 'harness',
73
+ 'harnessVersion',
74
+ 'effort',
75
+ 'tokensIn',
76
+ 'tokensOut',
77
+ 'latencyMs',
78
+ 'costUsd',
79
+ 'toolCalls',
80
+ 'toolCallDepth',
81
+ 'prompt',
82
+ 'output',
83
+ 'reasoning',
84
+ 'toolIO',
85
+ 'outcome',
86
+ 'errorClass',
87
+ 'ts',
88
+ ];
89
+ //# sourceMappingURL=trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/schema/trace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ export declare const TRACE_CONSENT_SCHEMA: "skein-trace-consent/1";
2
+ /** Bump when the publishing terms change; older consent is then treated as stale. */
3
+ export declare const TRACE_TERMS_VERSION = "2026-06-26";
4
+ export interface TraceConsent {
5
+ schema: typeof TRACE_CONSENT_SCHEMA;
6
+ acceptedAt: string;
7
+ termsVersion: string;
8
+ publish: true;
9
+ handle?: string;
10
+ }
11
+ /**
12
+ * Local-only mapping from a published surrogate `sessionKey` to the real source
13
+ * session id. Never published — it is what lets a contributor identify and
14
+ * request deletion of their own rows later.
15
+ */
16
+ export interface KeyMapEntry {
17
+ sessionKey: string;
18
+ sourceSessionId: string;
19
+ harness: string;
20
+ rowCount: number;
21
+ builtAt: string;
22
+ }
23
+ export declare function readConsent(): Promise<TraceConsent | undefined>;
24
+ export declare function recordConsent(input: {
25
+ acceptedAt: string;
26
+ handle?: string;
27
+ }): Promise<TraceConsent>;
28
+ export declare function hasConsent(): Promise<boolean>;
29
+ export declare function appendKeyMap(entries: readonly KeyMapEntry[]): Promise<void>;
30
+ export declare function readKeyMap(): Promise<KeyMapEntry[]>;