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.
- package/LICENSE +21 -0
- package/README.md +180 -0
- package/bin/skein.mjs +7 -0
- package/dist/adapters/aider/conv-reader.d.ts +7 -0
- package/dist/adapters/aider/conv-reader.js +203 -0
- package/dist/adapters/aider/conv-reader.js.map +1 -0
- package/dist/adapters/aider/index.d.ts +2 -0
- package/dist/adapters/aider/index.js +123 -0
- package/dist/adapters/aider/index.js.map +1 -0
- package/dist/adapters/base.d.ts +71 -0
- package/dist/adapters/base.js +38 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/claude-code/conv-reader.d.ts +2 -0
- package/dist/adapters/claude-code/conv-reader.js +155 -0
- package/dist/adapters/claude-code/conv-reader.js.map +1 -0
- package/dist/adapters/claude-code/index.d.ts +3 -0
- package/dist/adapters/claude-code/index.js +517 -0
- package/dist/adapters/claude-code/index.js.map +1 -0
- package/dist/adapters/claude-desktop/index.d.ts +2 -0
- package/dist/adapters/claude-desktop/index.js +95 -0
- package/dist/adapters/claude-desktop/index.js.map +1 -0
- package/dist/adapters/codex/index.d.ts +2 -0
- package/dist/adapters/codex/index.js +472 -0
- package/dist/adapters/codex/index.js.map +1 -0
- package/dist/adapters/cursor/index.d.ts +2 -0
- package/dist/adapters/cursor/index.js +255 -0
- package/dist/adapters/cursor/index.js.map +1 -0
- package/dist/adapters/opencode/conv-reader.d.ts +3 -0
- package/dist/adapters/opencode/conv-reader.js +190 -0
- package/dist/adapters/opencode/conv-reader.js.map +1 -0
- package/dist/adapters/opencode/index.d.ts +2 -0
- package/dist/adapters/opencode/index.js +349 -0
- package/dist/adapters/opencode/index.js.map +1 -0
- package/dist/adapters/registry.d.ts +4 -0
- package/dist/adapters/registry.js +26 -0
- package/dist/adapters/registry.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +54 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/conv.d.ts +2 -0
- package/dist/commands/conv.js +261 -0
- package/dist/commands/conv.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.js +85 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.js +38 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/memory.d.ts +2 -0
- package/dist/commands/memory.js +197 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/migrate.d.ts +2 -0
- package/dist/commands/migrate.js +102 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/profile.d.ts +2 -0
- package/dist/commands/profile.js +183 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/redact.d.ts +2 -0
- package/dist/commands/redact.js +73 -0
- package/dist/commands/redact.js.map +1 -0
- package/dist/commands/trace.d.ts +2 -0
- package/dist/commands/trace.js +181 -0
- package/dist/commands/trace.js.map +1 -0
- package/dist/commands/view.d.ts +13 -0
- package/dist/commands/view.js +184 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/commands/watch.d.ts +6 -0
- package/dist/commands/watch.js +61 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/commands/wrap.d.ts +2 -0
- package/dist/commands/wrap.js +131 -0
- package/dist/commands/wrap.js.map +1 -0
- package/dist/conv/chatgpt-import.d.ts +33 -0
- package/dist/conv/chatgpt-import.js +145 -0
- package/dist/conv/chatgpt-import.js.map +1 -0
- package/dist/conv/cursor.d.ts +12 -0
- package/dist/conv/cursor.js +55 -0
- package/dist/conv/cursor.js.map +1 -0
- package/dist/conv/export.d.ts +40 -0
- package/dist/conv/export.js +215 -0
- package/dist/conv/export.js.map +1 -0
- package/dist/conv/replay/aider.d.ts +24 -0
- package/dist/conv/replay/aider.js +56 -0
- package/dist/conv/replay/aider.js.map +1 -0
- package/dist/conv/replay/claude-code.d.ts +38 -0
- package/dist/conv/replay/claude-code.js +80 -0
- package/dist/conv/replay/claude-code.js.map +1 -0
- package/dist/conv/replay/context.d.ts +25 -0
- package/dist/conv/replay/context.js +63 -0
- package/dist/conv/replay/context.js.map +1 -0
- package/dist/conv/replay/index.d.ts +22 -0
- package/dist/conv/replay/index.js +84 -0
- package/dist/conv/replay/index.js.map +1 -0
- package/dist/conv/search.d.ts +67 -0
- package/dist/conv/search.js +379 -0
- package/dist/conv/search.js.map +1 -0
- package/dist/conv/sink.d.ts +26 -0
- package/dist/conv/sink.js +76 -0
- package/dist/conv/sink.js.map +1 -0
- package/dist/conv/sources/aider.d.ts +13 -0
- package/dist/conv/sources/aider.js +95 -0
- package/dist/conv/sources/aider.js.map +1 -0
- package/dist/conv/sources/claude-code.d.ts +13 -0
- package/dist/conv/sources/claude-code.js +189 -0
- package/dist/conv/sources/claude-code.js.map +1 -0
- package/dist/conv/sources/codex.d.ts +15 -0
- package/dist/conv/sources/codex.js +175 -0
- package/dist/conv/sources/codex.js.map +1 -0
- package/dist/conv/sources/opencode.d.ts +12 -0
- package/dist/conv/sources/opencode.js +92 -0
- package/dist/conv/sources/opencode.js.map +1 -0
- package/dist/conv/store.d.ts +10 -0
- package/dist/conv/store.js +75 -0
- package/dist/conv/store.js.map +1 -0
- package/dist/conv/title.d.ts +9 -0
- package/dist/conv/title.js +74 -0
- package/dist/conv/title.js.map +1 -0
- package/dist/conv/watcher.d.ts +28 -0
- package/dist/conv/watcher.js +75 -0
- package/dist/conv/watcher.js.map +1 -0
- package/dist/conv/zip.d.ts +11 -0
- package/dist/conv/zip.js +82 -0
- package/dist/conv/zip.js.map +1 -0
- package/dist/hf/client.d.ts +41 -0
- package/dist/hf/client.js +87 -0
- package/dist/hf/client.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/ir/index.d.ts +24 -0
- package/dist/ir/index.js +23 -0
- package/dist/ir/index.js.map +1 -0
- package/dist/ir/profile.d.ts +55 -0
- package/dist/ir/profile.js +177 -0
- package/dist/ir/profile.js.map +1 -0
- package/dist/memory/index.d.ts +41 -0
- package/dist/memory/index.js +109 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/search.d.ts +24 -0
- package/dist/memory/search.js +114 -0
- package/dist/memory/search.js.map +1 -0
- package/dist/memory/sinks/claude-mem.d.ts +13 -0
- package/dist/memory/sinks/claude-mem.js +100 -0
- package/dist/memory/sinks/claude-mem.js.map +1 -0
- package/dist/memory/sinks/codex.d.ts +12 -0
- package/dist/memory/sinks/codex.js +82 -0
- package/dist/memory/sinks/codex.js.map +1 -0
- package/dist/memory/sinks/context.d.ts +21 -0
- package/dist/memory/sinks/context.js +42 -0
- package/dist/memory/sinks/context.js.map +1 -0
- package/dist/memory/sources/chatgpt.d.ts +22 -0
- package/dist/memory/sources/chatgpt.js +98 -0
- package/dist/memory/sources/chatgpt.js.map +1 -0
- package/dist/memory/sources/claude-mem.d.ts +8 -0
- package/dist/memory/sources/claude-mem.js +104 -0
- package/dist/memory/sources/claude-mem.js.map +1 -0
- package/dist/memory/sources/codex.d.ts +8 -0
- package/dist/memory/sources/codex.js +77 -0
- package/dist/memory/sources/codex.js.map +1 -0
- package/dist/memory/store.d.ts +19 -0
- package/dist/memory/store.js +82 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/proxy/http.d.ts +21 -0
- package/dist/proxy/http.js +205 -0
- package/dist/proxy/http.js.map +1 -0
- package/dist/proxy/recorder.d.ts +35 -0
- package/dist/proxy/recorder.js +221 -0
- package/dist/proxy/recorder.js.map +1 -0
- package/dist/proxy/streaming.d.ts +33 -0
- package/dist/proxy/streaming.js +185 -0
- package/dist/proxy/streaming.js.map +1 -0
- package/dist/redactor/entropy.d.ts +29 -0
- package/dist/redactor/entropy.js +98 -0
- package/dist/redactor/entropy.js.map +1 -0
- package/dist/redactor/index.d.ts +52 -0
- package/dist/redactor/index.js +152 -0
- package/dist/redactor/index.js.map +1 -0
- package/dist/redactor/ner.d.ts +53 -0
- package/dist/redactor/ner.js +97 -0
- package/dist/redactor/ner.js.map +1 -0
- package/dist/redactor/pii-patterns.d.ts +22 -0
- package/dist/redactor/pii-patterns.js +187 -0
- package/dist/redactor/pii-patterns.js.map +1 -0
- package/dist/redactor/secret-patterns.d.ts +27 -0
- package/dist/redactor/secret-patterns.js +475 -0
- package/dist/redactor/secret-patterns.js.map +1 -0
- package/dist/schema/conv.d.ts +698 -0
- package/dist/schema/conv.js +85 -0
- package/dist/schema/conv.js.map +1 -0
- package/dist/schema/index.d.ts +2 -0
- package/dist/schema/index.js +3 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/manifest.d.ts +1531 -0
- package/dist/schema/manifest.js +179 -0
- package/dist/schema/manifest.js.map +1 -0
- package/dist/schema/memory.d.ts +107 -0
- package/dist/schema/memory.js +45 -0
- package/dist/schema/memory.js.map +1 -0
- package/dist/schema/trace.d.ts +164 -0
- package/dist/schema/trace.js +89 -0
- package/dist/schema/trace.js.map +1 -0
- package/dist/trace/consent.d.ts +30 -0
- package/dist/trace/consent.js +60 -0
- package/dist/trace/consent.js.map +1 -0
- package/dist/trace/extract.d.ts +22 -0
- package/dist/trace/extract.js +168 -0
- package/dist/trace/extract.js.map +1 -0
- package/dist/trace/ml-pii.d.ts +33 -0
- package/dist/trace/ml-pii.js +35 -0
- package/dist/trace/ml-pii.js.map +1 -0
- package/dist/trace/push.d.ts +59 -0
- package/dist/trace/push.js +141 -0
- package/dist/trace/push.js.map +1 -0
- package/dist/trace/serialize.d.ts +23 -0
- package/dist/trace/serialize.js +67 -0
- package/dist/trace/serialize.js.map +1 -0
- package/dist/ui/banner.d.ts +2 -0
- package/dist/ui/banner.js +17 -0
- package/dist/ui/banner.js.map +1 -0
- package/dist/ui/box.d.ts +4 -0
- package/dist/ui/box.js +38 -0
- package/dist/ui/box.js.map +1 -0
- package/dist/ui/index.d.ts +5 -0
- package/dist/ui/index.js +5 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/spinner.d.ts +10 -0
- package/dist/ui/spinner.js +44 -0
- package/dist/ui/spinner.js.map +1 -0
- package/dist/ui/table.d.ts +9 -0
- package/dist/ui/table.js +55 -0
- package/dist/ui/table.js.map +1 -0
- package/dist/util/frontmatter.d.ts +6 -0
- package/dist/util/frontmatter.js +20 -0
- package/dist/util/frontmatter.js.map +1 -0
- package/dist/util/fs.d.ts +5 -0
- package/dist/util/fs.js +41 -0
- package/dist/util/fs.js.map +1 -0
- package/dist/util/ids.d.ts +3 -0
- package/dist/util/ids.js +16 -0
- package/dist/util/ids.js.map +1 -0
- package/dist/util/log.d.ts +13 -0
- package/dist/util/log.js +33 -0
- package/dist/util/log.js.map +1 -0
- package/dist/util/paths.d.ts +18 -0
- package/dist/util/paths.js +36 -0
- package/dist/util/paths.js.map +1 -0
- package/dist/version.d.ts +5 -0
- package/dist/version.js +32 -0
- package/dist/version.js.map +1 -0
- 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":"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"}
|
|
@@ -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[]>;
|