@kynetic-ai/spec 0.1.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.
- package/README.md +263 -0
- package/dist/acp/client.d.ts +159 -0
- package/dist/acp/client.d.ts.map +1 -0
- package/dist/acp/client.js +255 -0
- package/dist/acp/client.js.map +1 -0
- package/dist/acp/framing.d.ts +119 -0
- package/dist/acp/framing.d.ts.map +1 -0
- package/dist/acp/framing.js +302 -0
- package/dist/acp/framing.js.map +1 -0
- package/dist/acp/index.d.ts +14 -0
- package/dist/acp/index.d.ts.map +1 -0
- package/dist/acp/index.js +13 -0
- package/dist/acp/index.js.map +1 -0
- package/dist/acp/types.d.ts +89 -0
- package/dist/acp/types.d.ts.map +1 -0
- package/dist/acp/types.js +99 -0
- package/dist/acp/types.js.map +1 -0
- package/dist/agents/adapters.d.ts +55 -0
- package/dist/agents/adapters.d.ts.map +1 -0
- package/dist/agents/adapters.js +84 -0
- package/dist/agents/adapters.js.map +1 -0
- package/dist/agents/index.d.ts +8 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +10 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/spawner.d.ts +53 -0
- package/dist/agents/spawner.d.ts.map +1 -0
- package/dist/agents/spawner.js +83 -0
- package/dist/agents/spawner.js.map +1 -0
- package/dist/cli/batch.d.ts +82 -0
- package/dist/cli/batch.d.ts.map +1 -0
- package/dist/cli/batch.js +162 -0
- package/dist/cli/batch.js.map +1 -0
- package/dist/cli/commands/clone-for-testing.d.ts +6 -0
- package/dist/cli/commands/clone-for-testing.d.ts.map +1 -0
- package/dist/cli/commands/clone-for-testing.js +176 -0
- package/dist/cli/commands/clone-for-testing.js.map +1 -0
- package/dist/cli/commands/derive.d.ts +6 -0
- package/dist/cli/commands/derive.d.ts.map +1 -0
- package/dist/cli/commands/derive.js +450 -0
- package/dist/cli/commands/derive.js.map +1 -0
- package/dist/cli/commands/help.d.ts +6 -0
- package/dist/cli/commands/help.d.ts.map +1 -0
- package/dist/cli/commands/help.js +196 -0
- package/dist/cli/commands/help.js.map +1 -0
- package/dist/cli/commands/inbox.d.ts +6 -0
- package/dist/cli/commands/inbox.d.ts.map +1 -0
- package/dist/cli/commands/inbox.js +235 -0
- package/dist/cli/commands/inbox.js.map +1 -0
- package/dist/cli/commands/index.d.ts +20 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +21 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +6 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +245 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/item.d.ts +6 -0
- package/dist/cli/commands/item.d.ts.map +1 -0
- package/dist/cli/commands/item.js +1311 -0
- package/dist/cli/commands/item.js.map +1 -0
- package/dist/cli/commands/link.d.ts +6 -0
- package/dist/cli/commands/link.d.ts.map +1 -0
- package/dist/cli/commands/link.js +288 -0
- package/dist/cli/commands/link.js.map +1 -0
- package/dist/cli/commands/log.d.ts +16 -0
- package/dist/cli/commands/log.d.ts.map +1 -0
- package/dist/cli/commands/log.js +291 -0
- package/dist/cli/commands/log.js.map +1 -0
- package/dist/cli/commands/meta.d.ts +15 -0
- package/dist/cli/commands/meta.d.ts.map +1 -0
- package/dist/cli/commands/meta.js +1378 -0
- package/dist/cli/commands/meta.js.map +1 -0
- package/dist/cli/commands/module.d.ts +6 -0
- package/dist/cli/commands/module.d.ts.map +1 -0
- package/dist/cli/commands/module.js +102 -0
- package/dist/cli/commands/module.js.map +1 -0
- package/dist/cli/commands/ralph.d.ts +9 -0
- package/dist/cli/commands/ralph.d.ts.map +1 -0
- package/dist/cli/commands/ralph.js +465 -0
- package/dist/cli/commands/ralph.js.map +1 -0
- package/dist/cli/commands/search.d.ts +6 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +134 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/session.d.ts +164 -0
- package/dist/cli/commands/session.d.ts.map +1 -0
- package/dist/cli/commands/session.js +745 -0
- package/dist/cli/commands/session.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +26 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +586 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/shadow.d.ts +6 -0
- package/dist/cli/commands/shadow.d.ts.map +1 -0
- package/dist/cli/commands/shadow.js +299 -0
- package/dist/cli/commands/shadow.js.map +1 -0
- package/dist/cli/commands/task.d.ts +6 -0
- package/dist/cli/commands/task.d.ts.map +1 -0
- package/dist/cli/commands/task.js +1514 -0
- package/dist/cli/commands/task.js.map +1 -0
- package/dist/cli/commands/tasks.d.ts +6 -0
- package/dist/cli/commands/tasks.d.ts.map +1 -0
- package/dist/cli/commands/tasks.js +347 -0
- package/dist/cli/commands/tasks.js.map +1 -0
- package/dist/cli/commands/trait.d.ts +10 -0
- package/dist/cli/commands/trait.d.ts.map +1 -0
- package/dist/cli/commands/trait.js +295 -0
- package/dist/cli/commands/trait.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +6 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +626 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/exit-codes.d.ts +62 -0
- package/dist/cli/exit-codes.d.ts.map +1 -0
- package/dist/cli/exit-codes.js +65 -0
- package/dist/cli/exit-codes.js.map +1 -0
- package/dist/cli/help/content.d.ts +35 -0
- package/dist/cli/help/content.d.ts.map +1 -0
- package/dist/cli/help/content.js +312 -0
- package/dist/cli/help/content.js.map +1 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +85 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/introspection.d.ts +87 -0
- package/dist/cli/introspection.d.ts.map +1 -0
- package/dist/cli/introspection.js +127 -0
- package/dist/cli/introspection.js.map +1 -0
- package/dist/cli/output.d.ts +56 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +467 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/suggest.d.ts +16 -0
- package/dist/cli/suggest.d.ts.map +1 -0
- package/dist/cli/suggest.js +72 -0
- package/dist/cli/suggest.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/alignment.d.ts +113 -0
- package/dist/parser/alignment.d.ts.map +1 -0
- package/dist/parser/alignment.js +261 -0
- package/dist/parser/alignment.js.map +1 -0
- package/dist/parser/assess.d.ts +81 -0
- package/dist/parser/assess.d.ts.map +1 -0
- package/dist/parser/assess.js +197 -0
- package/dist/parser/assess.js.map +1 -0
- package/dist/parser/convention-validation.d.ts +48 -0
- package/dist/parser/convention-validation.d.ts.map +1 -0
- package/dist/parser/convention-validation.js +167 -0
- package/dist/parser/convention-validation.js.map +1 -0
- package/dist/parser/fix.d.ts +38 -0
- package/dist/parser/fix.d.ts.map +1 -0
- package/dist/parser/fix.js +185 -0
- package/dist/parser/fix.js.map +1 -0
- package/dist/parser/index.d.ts +12 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +13 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/items.d.ts +138 -0
- package/dist/parser/items.d.ts.map +1 -0
- package/dist/parser/items.js +321 -0
- package/dist/parser/items.js.map +1 -0
- package/dist/parser/meta.d.ts +120 -0
- package/dist/parser/meta.d.ts.map +1 -0
- package/dist/parser/meta.js +441 -0
- package/dist/parser/meta.js.map +1 -0
- package/dist/parser/refs.d.ts +185 -0
- package/dist/parser/refs.d.ts.map +1 -0
- package/dist/parser/refs.js +404 -0
- package/dist/parser/refs.js.map +1 -0
- package/dist/parser/shadow.d.ts +253 -0
- package/dist/parser/shadow.d.ts.map +1 -0
- package/dist/parser/shadow.js +1053 -0
- package/dist/parser/shadow.js.map +1 -0
- package/dist/parser/traits.d.ts +72 -0
- package/dist/parser/traits.d.ts.map +1 -0
- package/dist/parser/traits.js +120 -0
- package/dist/parser/traits.js.map +1 -0
- package/dist/parser/validate.d.ts +89 -0
- package/dist/parser/validate.d.ts.map +1 -0
- package/dist/parser/validate.js +817 -0
- package/dist/parser/validate.js.map +1 -0
- package/dist/parser/yaml.d.ts +326 -0
- package/dist/parser/yaml.d.ts.map +1 -0
- package/dist/parser/yaml.js +1383 -0
- package/dist/parser/yaml.js.map +1 -0
- package/dist/ralph/cli-renderer.d.ts +20 -0
- package/dist/ralph/cli-renderer.d.ts.map +1 -0
- package/dist/ralph/cli-renderer.js +179 -0
- package/dist/ralph/cli-renderer.js.map +1 -0
- package/dist/ralph/events.d.ts +65 -0
- package/dist/ralph/events.d.ts.map +1 -0
- package/dist/ralph/events.js +397 -0
- package/dist/ralph/events.js.map +1 -0
- package/dist/ralph/index.d.ts +8 -0
- package/dist/ralph/index.d.ts.map +1 -0
- package/dist/ralph/index.js +10 -0
- package/dist/ralph/index.js.map +1 -0
- package/dist/schema/common.d.ts +46 -0
- package/dist/schema/common.d.ts.map +1 -0
- package/dist/schema/common.js +71 -0
- package/dist/schema/common.js.map +1 -0
- package/dist/schema/inbox.d.ts +90 -0
- package/dist/schema/inbox.d.ts.map +1 -0
- package/dist/schema/inbox.js +30 -0
- package/dist/schema/inbox.js.map +1 -0
- package/dist/schema/index.d.ts +6 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +7 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/meta.d.ts +762 -0
- package/dist/schema/meta.d.ts.map +1 -0
- package/dist/schema/meta.js +144 -0
- package/dist/schema/meta.js.map +1 -0
- package/dist/schema/spec.d.ts +912 -0
- package/dist/schema/spec.d.ts.map +1 -0
- package/dist/schema/spec.js +104 -0
- package/dist/schema/spec.js.map +1 -0
- package/dist/schema/task.d.ts +664 -0
- package/dist/schema/task.d.ts.map +1 -0
- package/dist/schema/task.js +130 -0
- package/dist/schema/task.js.map +1 -0
- package/dist/sessions/index.d.ts +11 -0
- package/dist/sessions/index.d.ts.map +1 -0
- package/dist/sessions/index.js +13 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/store.d.ts +144 -0
- package/dist/sessions/store.d.ts.map +1 -0
- package/dist/sessions/store.js +325 -0
- package/dist/sessions/store.js.map +1 -0
- package/dist/sessions/types.d.ts +157 -0
- package/dist/sessions/types.d.ts.map +1 -0
- package/dist/sessions/types.js +90 -0
- package/dist/sessions/types.js.map +1 -0
- package/dist/strings/errors.d.ts +420 -0
- package/dist/strings/errors.d.ts.map +1 -0
- package/dist/strings/errors.js +282 -0
- package/dist/strings/errors.js.map +1 -0
- package/dist/strings/guidance.d.ts +65 -0
- package/dist/strings/guidance.d.ts.map +1 -0
- package/dist/strings/guidance.js +66 -0
- package/dist/strings/guidance.js.map +1 -0
- package/dist/strings/index.d.ts +12 -0
- package/dist/strings/index.d.ts.map +1 -0
- package/dist/strings/index.js +12 -0
- package/dist/strings/index.js.map +1 -0
- package/dist/strings/labels.d.ts +74 -0
- package/dist/strings/labels.d.ts.map +1 -0
- package/dist/strings/labels.js +75 -0
- package/dist/strings/labels.js.map +1 -0
- package/dist/strings/validation.d.ts +126 -0
- package/dist/strings/validation.d.ts.map +1 -0
- package/dist/strings/validation.js +135 -0
- package/dist/strings/validation.js.map +1 -0
- package/dist/utils/commit.d.ts +23 -0
- package/dist/utils/commit.d.ts.map +1 -0
- package/dist/utils/commit.js +67 -0
- package/dist/utils/commit.js.map +1 -0
- package/dist/utils/git.d.ts +57 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +192 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/grep.d.ts +28 -0
- package/dist/utils/grep.d.ts.map +1 -0
- package/dist/utils/grep.js +86 -0
- package/dist/utils/grep.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/time.d.ts +18 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +61 -0
- package/dist/utils/time.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ralph Event System
|
|
3
|
+
*
|
|
4
|
+
* Translates ACP SessionUpdate events into structured RalphEvents.
|
|
5
|
+
* This layer is pure data - no rendering concerns. Enables future
|
|
6
|
+
* TUI or other renderers to consume the same event stream.
|
|
7
|
+
*/
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Tool Summary Extraction
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Extract a human-readable summary for a tool call.
|
|
13
|
+
* Based on kynetic ui-event-translator.ts patterns.
|
|
14
|
+
*/
|
|
15
|
+
function getToolSummary(tool, input) {
|
|
16
|
+
const inp = input;
|
|
17
|
+
switch (tool) {
|
|
18
|
+
case 'Bash': {
|
|
19
|
+
const cmd = inp.command;
|
|
20
|
+
if (cmd) {
|
|
21
|
+
return cmd.length > 50 ? cmd.slice(0, 47) + '...' : cmd;
|
|
22
|
+
}
|
|
23
|
+
return '';
|
|
24
|
+
}
|
|
25
|
+
case 'Read':
|
|
26
|
+
case 'Write':
|
|
27
|
+
case 'Edit': {
|
|
28
|
+
const filePath = inp.file_path;
|
|
29
|
+
if (filePath) {
|
|
30
|
+
// Extract filename from path
|
|
31
|
+
const parts = filePath.split('/');
|
|
32
|
+
return parts[parts.length - 1] || filePath;
|
|
33
|
+
}
|
|
34
|
+
return '';
|
|
35
|
+
}
|
|
36
|
+
case 'Grep': {
|
|
37
|
+
const pattern = inp.pattern;
|
|
38
|
+
return pattern ? `/${pattern}/` : '';
|
|
39
|
+
}
|
|
40
|
+
case 'Glob': {
|
|
41
|
+
const pattern = inp.pattern;
|
|
42
|
+
return pattern || '';
|
|
43
|
+
}
|
|
44
|
+
case 'WebSearch': {
|
|
45
|
+
const query = inp.query;
|
|
46
|
+
return query || '';
|
|
47
|
+
}
|
|
48
|
+
case 'Task': {
|
|
49
|
+
const desc = inp.description;
|
|
50
|
+
return desc || '';
|
|
51
|
+
}
|
|
52
|
+
case 'TodoWrite': {
|
|
53
|
+
const todos = inp.todos;
|
|
54
|
+
if (todos && todos.length > 0) {
|
|
55
|
+
return `${todos.length} item(s)`;
|
|
56
|
+
}
|
|
57
|
+
return '';
|
|
58
|
+
}
|
|
59
|
+
default:
|
|
60
|
+
return '';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Extract tool name from SessionUpdate.
|
|
65
|
+
* Handles Claude Code's _meta.claudeCode.toolName pattern and MCP prefixes.
|
|
66
|
+
*/
|
|
67
|
+
function extractToolName(update) {
|
|
68
|
+
// Try _meta.claudeCode.toolName first (Claude Code pattern)
|
|
69
|
+
const meta = update._meta;
|
|
70
|
+
if (meta) {
|
|
71
|
+
const claudeCode = meta.claudeCode;
|
|
72
|
+
if (claudeCode?.toolName) {
|
|
73
|
+
return normalizeTool(claudeCode.toolName);
|
|
74
|
+
}
|
|
75
|
+
if (meta.toolName) {
|
|
76
|
+
return normalizeTool(meta.toolName);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Fall back to name field
|
|
80
|
+
if (update.name) {
|
|
81
|
+
return normalizeTool(update.name);
|
|
82
|
+
}
|
|
83
|
+
// Fall back to title
|
|
84
|
+
if (update.title) {
|
|
85
|
+
return normalizeTool(update.title);
|
|
86
|
+
}
|
|
87
|
+
return 'unknown';
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Normalize tool name by stripping MCP prefixes.
|
|
91
|
+
*/
|
|
92
|
+
function normalizeTool(name) {
|
|
93
|
+
// Strip mcp__<namespace>__ prefix
|
|
94
|
+
const mcpMatch = name.match(/^mcp__[^_]+__(.+)$/);
|
|
95
|
+
if (mcpMatch) {
|
|
96
|
+
return mcpMatch[1];
|
|
97
|
+
}
|
|
98
|
+
return name;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Extract tool output, handling Claude Code's non-standard delivery.
|
|
102
|
+
*/
|
|
103
|
+
function extractToolOutput(update) {
|
|
104
|
+
// Try rawOutput first
|
|
105
|
+
if (update.rawOutput !== undefined) {
|
|
106
|
+
return truncateOutput(String(update.rawOutput));
|
|
107
|
+
}
|
|
108
|
+
// Try _meta.claudeCode.toolResponse (Claude Code pattern)
|
|
109
|
+
// toolResponse is an object with stdout/stderr, not a string
|
|
110
|
+
const meta = update._meta;
|
|
111
|
+
if (meta) {
|
|
112
|
+
const claudeCode = meta.claudeCode;
|
|
113
|
+
if (claudeCode?.toolResponse !== undefined) {
|
|
114
|
+
const toolResponse = claudeCode.toolResponse;
|
|
115
|
+
// Extract stdout, falling back to stringifying the whole response
|
|
116
|
+
if (typeof toolResponse.stdout === 'string') {
|
|
117
|
+
const combined = toolResponse.stdout + (toolResponse.stderr ? `\n${toolResponse.stderr}` : '');
|
|
118
|
+
return truncateOutput(combined.trim());
|
|
119
|
+
}
|
|
120
|
+
return truncateOutput(String(toolResponse));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Try output field
|
|
124
|
+
if (update.output !== undefined) {
|
|
125
|
+
return truncateOutput(String(update.output));
|
|
126
|
+
}
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Extract original (non-truncated) output for truncation detection.
|
|
131
|
+
*/
|
|
132
|
+
function extractOriginalOutput(update) {
|
|
133
|
+
if (update.rawOutput !== undefined) {
|
|
134
|
+
return String(update.rawOutput);
|
|
135
|
+
}
|
|
136
|
+
const meta = update._meta;
|
|
137
|
+
if (meta) {
|
|
138
|
+
const claudeCode = meta.claudeCode;
|
|
139
|
+
if (claudeCode?.toolResponse !== undefined) {
|
|
140
|
+
const toolResponse = claudeCode.toolResponse;
|
|
141
|
+
if (typeof toolResponse.stdout === 'string') {
|
|
142
|
+
return (toolResponse.stdout + (toolResponse.stderr ? `\n${toolResponse.stderr}` : '')).trim();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
if (update.output !== undefined) {
|
|
147
|
+
return String(update.output);
|
|
148
|
+
}
|
|
149
|
+
return undefined;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Truncate output to reasonable size.
|
|
153
|
+
*/
|
|
154
|
+
function truncateOutput(output) {
|
|
155
|
+
const MAX_LINES = 20;
|
|
156
|
+
const MAX_CHARS = 1000;
|
|
157
|
+
const lines = output.split('\n');
|
|
158
|
+
if (lines.length > MAX_LINES) {
|
|
159
|
+
return lines.slice(0, MAX_LINES).join('\n');
|
|
160
|
+
}
|
|
161
|
+
if (output.length > MAX_CHARS) {
|
|
162
|
+
return output.slice(0, MAX_CHARS);
|
|
163
|
+
}
|
|
164
|
+
return output;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Check if output was truncated.
|
|
168
|
+
*/
|
|
169
|
+
function wasOutputTruncated(original, truncated) {
|
|
170
|
+
if (!original || !truncated)
|
|
171
|
+
return false;
|
|
172
|
+
return original.length > truncated.length;
|
|
173
|
+
}
|
|
174
|
+
// ============================================================================
|
|
175
|
+
// Noise Suppression
|
|
176
|
+
// ============================================================================
|
|
177
|
+
const SUPPRESSED_PATTERNS = [
|
|
178
|
+
/No onPostToolUseHook found/i,
|
|
179
|
+
/No onPreToolUseHook found/i,
|
|
180
|
+
];
|
|
181
|
+
/**
|
|
182
|
+
* Check if a message should be suppressed from display.
|
|
183
|
+
*/
|
|
184
|
+
function shouldSuppress(content) {
|
|
185
|
+
return SUPPRESSED_PATTERNS.some((pattern) => pattern.test(content));
|
|
186
|
+
}
|
|
187
|
+
export function createTranslator() {
|
|
188
|
+
const state = {
|
|
189
|
+
sessionStart: Date.now(),
|
|
190
|
+
activeMessage: null,
|
|
191
|
+
pendingTools: new Map(),
|
|
192
|
+
};
|
|
193
|
+
function getTimestamp() {
|
|
194
|
+
return Date.now() - state.sessionStart;
|
|
195
|
+
}
|
|
196
|
+
function translate(update) {
|
|
197
|
+
const updateType = update.sessionUpdate;
|
|
198
|
+
const timestamp = getTimestamp();
|
|
199
|
+
switch (updateType) {
|
|
200
|
+
// ─── Content Chunks ─────────────────────────────────────────────────────
|
|
201
|
+
case 'agent_message_chunk': {
|
|
202
|
+
const content = update.content;
|
|
203
|
+
if (content?.type === 'text' && typeof content.text === 'string') {
|
|
204
|
+
// Check for noise
|
|
205
|
+
if (shouldSuppress(content.text)) {
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
// Empty string signals finalization
|
|
209
|
+
if (content.text === '') {
|
|
210
|
+
if (state.activeMessage?.type === 'agent_message') {
|
|
211
|
+
const final = {
|
|
212
|
+
type: 'agent_message',
|
|
213
|
+
timestamp,
|
|
214
|
+
data: {
|
|
215
|
+
kind: 'agent_message',
|
|
216
|
+
content: state.activeMessage.content,
|
|
217
|
+
isStreaming: false,
|
|
218
|
+
},
|
|
219
|
+
};
|
|
220
|
+
state.activeMessage = null;
|
|
221
|
+
return final;
|
|
222
|
+
}
|
|
223
|
+
return null;
|
|
224
|
+
}
|
|
225
|
+
// Accumulate content
|
|
226
|
+
if (state.activeMessage?.type === 'agent_message') {
|
|
227
|
+
state.activeMessage.content += content.text;
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
state.activeMessage = { type: 'agent_message', content: content.text };
|
|
231
|
+
}
|
|
232
|
+
return {
|
|
233
|
+
type: 'agent_message',
|
|
234
|
+
timestamp,
|
|
235
|
+
data: {
|
|
236
|
+
kind: 'agent_message',
|
|
237
|
+
content: content.text,
|
|
238
|
+
isStreaming: true,
|
|
239
|
+
},
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
case 'agent_thought_chunk': {
|
|
245
|
+
const content = update.content;
|
|
246
|
+
if (content?.type === 'text' && typeof content.text === 'string') {
|
|
247
|
+
if (shouldSuppress(content.text)) {
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
if (content.text === '') {
|
|
251
|
+
if (state.activeMessage?.type === 'agent_thought') {
|
|
252
|
+
const final = {
|
|
253
|
+
type: 'agent_thought',
|
|
254
|
+
timestamp,
|
|
255
|
+
data: {
|
|
256
|
+
kind: 'agent_thought',
|
|
257
|
+
content: state.activeMessage.content,
|
|
258
|
+
isStreaming: false,
|
|
259
|
+
},
|
|
260
|
+
};
|
|
261
|
+
state.activeMessage = null;
|
|
262
|
+
return final;
|
|
263
|
+
}
|
|
264
|
+
return null;
|
|
265
|
+
}
|
|
266
|
+
if (state.activeMessage?.type === 'agent_thought') {
|
|
267
|
+
state.activeMessage.content += content.text;
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
state.activeMessage = { type: 'agent_thought', content: content.text };
|
|
271
|
+
}
|
|
272
|
+
return {
|
|
273
|
+
type: 'agent_thought',
|
|
274
|
+
timestamp,
|
|
275
|
+
data: {
|
|
276
|
+
kind: 'agent_thought',
|
|
277
|
+
content: content.text,
|
|
278
|
+
isStreaming: true,
|
|
279
|
+
},
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
return null;
|
|
283
|
+
}
|
|
284
|
+
case 'user_message_chunk': {
|
|
285
|
+
// User messages are typically the prompt we sent, skip display
|
|
286
|
+
return null;
|
|
287
|
+
}
|
|
288
|
+
// ─── Tool Events ────────────────────────────────────────────────────────
|
|
289
|
+
case 'tool_call': {
|
|
290
|
+
const u = update;
|
|
291
|
+
const toolCallId = (u.tool_call_id || u.toolCallId || u.id);
|
|
292
|
+
const tool = extractToolName(u);
|
|
293
|
+
const input = u.rawInput || u.input || u.params || {};
|
|
294
|
+
const summary = getToolSummary(tool, input);
|
|
295
|
+
// Check if this is an update to an existing tool call (phased events)
|
|
296
|
+
const existing = state.pendingTools.get(toolCallId);
|
|
297
|
+
if (existing) {
|
|
298
|
+
// Update existing entry with new input if present
|
|
299
|
+
const hadSummary = getToolSummary(existing.tool, existing.input);
|
|
300
|
+
existing.input = input;
|
|
301
|
+
existing.tool = tool;
|
|
302
|
+
// Only emit update if we now have a summary we didn't have before
|
|
303
|
+
if (summary && !hadSummary) {
|
|
304
|
+
return {
|
|
305
|
+
type: 'tool_update',
|
|
306
|
+
timestamp,
|
|
307
|
+
data: {
|
|
308
|
+
kind: 'tool_update',
|
|
309
|
+
toolCallId,
|
|
310
|
+
tool,
|
|
311
|
+
status: 'pending',
|
|
312
|
+
summary,
|
|
313
|
+
},
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
// No meaningful change, suppress event
|
|
317
|
+
return null;
|
|
318
|
+
}
|
|
319
|
+
// First time seeing this tool_call_id - create entry and emit tool_start
|
|
320
|
+
state.pendingTools.set(toolCallId, { tool, input, startTime: timestamp });
|
|
321
|
+
return {
|
|
322
|
+
type: 'tool_start',
|
|
323
|
+
timestamp,
|
|
324
|
+
data: {
|
|
325
|
+
kind: 'tool_start',
|
|
326
|
+
toolCallId,
|
|
327
|
+
tool,
|
|
328
|
+
summary,
|
|
329
|
+
input,
|
|
330
|
+
},
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
case 'tool_call_update': {
|
|
334
|
+
const u = update;
|
|
335
|
+
const toolCallId = (u.tool_call_id || u.toolCallId || u.id);
|
|
336
|
+
const status = u.status;
|
|
337
|
+
const pending = state.pendingTools.get(toolCallId);
|
|
338
|
+
const tool = pending?.tool || extractToolName(u);
|
|
339
|
+
// Non-terminal status update
|
|
340
|
+
if (status === 'pending' || status === 'in_progress' || status === 'running') {
|
|
341
|
+
return {
|
|
342
|
+
type: 'tool_update',
|
|
343
|
+
timestamp,
|
|
344
|
+
data: {
|
|
345
|
+
kind: 'tool_update',
|
|
346
|
+
toolCallId,
|
|
347
|
+
tool,
|
|
348
|
+
status: status === 'in_progress' ? 'running' : status,
|
|
349
|
+
},
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
// Terminal status - treat as result
|
|
353
|
+
if (status === 'completed' || status === 'failed' || status === 'cancelled') {
|
|
354
|
+
const rawOutput = extractToolOutput(u);
|
|
355
|
+
const originalOutput = extractOriginalOutput(u);
|
|
356
|
+
state.pendingTools.delete(toolCallId);
|
|
357
|
+
return {
|
|
358
|
+
type: 'tool_result',
|
|
359
|
+
timestamp,
|
|
360
|
+
data: {
|
|
361
|
+
kind: 'tool_result',
|
|
362
|
+
toolCallId,
|
|
363
|
+
tool,
|
|
364
|
+
status,
|
|
365
|
+
output: rawOutput,
|
|
366
|
+
truncated: wasOutputTruncated(originalOutput, rawOutput),
|
|
367
|
+
},
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
return null;
|
|
371
|
+
}
|
|
372
|
+
// Note: 'status' is not a SessionUpdate type in the ACP spec.
|
|
373
|
+
// Status changes come through other mechanisms (e.g., prompt completion).
|
|
374
|
+
default:
|
|
375
|
+
// Unknown update type - ignore
|
|
376
|
+
return null;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
function finalize() {
|
|
380
|
+
if (state.activeMessage) {
|
|
381
|
+
const final = {
|
|
382
|
+
type: state.activeMessage.type,
|
|
383
|
+
timestamp: getTimestamp(),
|
|
384
|
+
data: {
|
|
385
|
+
kind: state.activeMessage.type,
|
|
386
|
+
content: state.activeMessage.content,
|
|
387
|
+
isStreaming: false,
|
|
388
|
+
},
|
|
389
|
+
};
|
|
390
|
+
state.activeMessage = null;
|
|
391
|
+
return final;
|
|
392
|
+
}
|
|
393
|
+
return null;
|
|
394
|
+
}
|
|
395
|
+
return { translate, finalize };
|
|
396
|
+
}
|
|
397
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/ralph/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ralph Module
|
|
3
|
+
*
|
|
4
|
+
* Event translation and rendering for the ralph autonomous task loop.
|
|
5
|
+
*/
|
|
6
|
+
export { type RalphEvent, type RalphEventType, type RalphEventData, type AgentMessageData, type AgentThoughtData, type ToolStartData, type ToolUpdateData, type ToolResultData, type StatusData, type RalphTranslator, createTranslator, } from './events.js';
|
|
7
|
+
export { type RalphRenderer, createCliRenderer } from './cli-renderer.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ralph/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ralph Module
|
|
3
|
+
*
|
|
4
|
+
* Event translation and rendering for the ralph autonomous task loop.
|
|
5
|
+
*/
|
|
6
|
+
// Event types and translator
|
|
7
|
+
export { createTranslator, } from './events.js';
|
|
8
|
+
// CLI renderer
|
|
9
|
+
export { createCliRenderer } from './cli-renderer.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ralph/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,6BAA6B;AAC7B,OAAO,EAWL,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,eAAe;AACf,OAAO,EAAsB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* ULID pattern - 26 character Crockford base32
|
|
4
|
+
* Excludes I, L, O, U to avoid confusion with 1, 1, 0, V
|
|
5
|
+
*/
|
|
6
|
+
export declare const ulidPattern: RegExp;
|
|
7
|
+
/**
|
|
8
|
+
* Slug pattern - lowercase alphanumeric with hyphens
|
|
9
|
+
*/
|
|
10
|
+
export declare const slugPattern: RegExp;
|
|
11
|
+
/**
|
|
12
|
+
* Reference pattern - @ prefix followed by slug or ULID (or short ULID)
|
|
13
|
+
*/
|
|
14
|
+
export declare const refPattern: RegExp;
|
|
15
|
+
export declare const UlidSchema: z.ZodString;
|
|
16
|
+
export declare const SlugSchema: z.ZodString;
|
|
17
|
+
export declare const RefSchema: z.ZodString;
|
|
18
|
+
export declare const PrioritySchema: z.ZodUnion<[z.ZodEnum<["high", "medium", "low"]>, z.ZodNumber]>;
|
|
19
|
+
export declare const DateTimeSchema: z.ZodUnion<[z.ZodString, z.ZodString]>;
|
|
20
|
+
export declare const MaturitySchema: z.ZodEnum<["draft", "proposed", "stable", "deferred", "deprecated"]>;
|
|
21
|
+
export declare const ImplementationStatusSchema: z.ZodEnum<["not_started", "in_progress", "implemented", "verified"]>;
|
|
22
|
+
export declare const TaskStatusSchema: z.ZodEnum<["pending", "in_progress", "pending_review", "blocked", "completed", "cancelled"]>;
|
|
23
|
+
export declare const TaskTypeSchema: z.ZodEnum<["epic", "task", "bug", "spike", "infra"]>;
|
|
24
|
+
export declare const ItemTypeSchema: z.ZodEnum<["module", "feature", "requirement", "constraint", "decision", "task", "trait"]>;
|
|
25
|
+
export declare const VcsRefSchema: z.ZodObject<{
|
|
26
|
+
ref: z.ZodString;
|
|
27
|
+
type: z.ZodOptional<z.ZodEnum<["branch", "tag", "commit"]>>;
|
|
28
|
+
}, "strip", z.ZodTypeAny, {
|
|
29
|
+
ref: string;
|
|
30
|
+
type?: "branch" | "tag" | "commit" | undefined;
|
|
31
|
+
}, {
|
|
32
|
+
ref: string;
|
|
33
|
+
type?: "branch" | "tag" | "commit" | undefined;
|
|
34
|
+
}>;
|
|
35
|
+
export type Ulid = z.infer<typeof UlidSchema>;
|
|
36
|
+
export type Slug = z.infer<typeof SlugSchema>;
|
|
37
|
+
export type Ref = z.infer<typeof RefSchema>;
|
|
38
|
+
export type Priority = z.infer<typeof PrioritySchema>;
|
|
39
|
+
export type DateTime = z.infer<typeof DateTimeSchema>;
|
|
40
|
+
export type Maturity = z.infer<typeof MaturitySchema>;
|
|
41
|
+
export type ImplementationStatus = z.infer<typeof ImplementationStatusSchema>;
|
|
42
|
+
export type TaskStatus = z.infer<typeof TaskStatusSchema>;
|
|
43
|
+
export type TaskType = z.infer<typeof TaskTypeSchema>;
|
|
44
|
+
export type ItemType = z.infer<typeof ItemTypeSchema>;
|
|
45
|
+
export type VcsRef = z.infer<typeof VcsRefSchema>;
|
|
46
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/schema/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;GAGG;AACH,eAAO,MAAM,WAAW,QAA8B,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,WAAW,QAAsB,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,UAAU,QAAqB,CAAC;AAG7C,eAAO,MAAM,UAAU,aAAuD,CAAC;AAC/E,eAAO,MAAM,UAAU,aAAuD,CAAC;AAC/E,eAAO,MAAM,SAAS,aAA2D,CAAC;AAGlF,eAAO,MAAM,cAAc,iEAGzB,CAAC;AAGH,eAAO,MAAM,cAAc,wCAGzB,CAAC;AAGH,eAAO,MAAM,cAAc,sEAAoE,CAAC;AAGhG,eAAO,MAAM,0BAA0B,sEAKrC,CAAC;AAGH,eAAO,MAAM,gBAAgB,8FAO3B,CAAC;AAGH,eAAO,MAAM,cAAc,sDAMzB,CAAC;AAGH,eAAO,MAAM,cAAc,4FAQzB,CAAC;AAGH,eAAO,MAAM,YAAY;;;;;;;;;EAGvB,CAAC;AAEH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAC9C,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAC5C,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
// Common types used across spec and task schemas
|
|
3
|
+
/**
|
|
4
|
+
* ULID pattern - 26 character Crockford base32
|
|
5
|
+
* Excludes I, L, O, U to avoid confusion with 1, 1, 0, V
|
|
6
|
+
*/
|
|
7
|
+
export const ulidPattern = /^[0-9A-HJKMNP-TV-Z]{26}$/i;
|
|
8
|
+
/**
|
|
9
|
+
* Slug pattern - lowercase alphanumeric with hyphens
|
|
10
|
+
*/
|
|
11
|
+
export const slugPattern = /^[a-z][a-z0-9-]*$/;
|
|
12
|
+
/**
|
|
13
|
+
* Reference pattern - @ prefix followed by slug or ULID (or short ULID)
|
|
14
|
+
*/
|
|
15
|
+
export const refPattern = /^@[a-zA-Z0-9-]+$/;
|
|
16
|
+
// Base schemas
|
|
17
|
+
export const UlidSchema = z.string().regex(ulidPattern, 'Invalid ULID format');
|
|
18
|
+
export const SlugSchema = z.string().regex(slugPattern, 'Invalid slug format');
|
|
19
|
+
export const RefSchema = z.string().regex(refPattern, 'Invalid reference format');
|
|
20
|
+
// Priority can be string or number
|
|
21
|
+
export const PrioritySchema = z.union([
|
|
22
|
+
z.enum(['high', 'medium', 'low']),
|
|
23
|
+
z.number().int().min(1).max(5),
|
|
24
|
+
]);
|
|
25
|
+
// ISO 8601 date or datetime
|
|
26
|
+
export const DateTimeSchema = z.union([
|
|
27
|
+
z.string().datetime(),
|
|
28
|
+
z.string().date(),
|
|
29
|
+
]);
|
|
30
|
+
// Maturity status
|
|
31
|
+
export const MaturitySchema = z.enum(['draft', 'proposed', 'stable', 'deferred', 'deprecated']);
|
|
32
|
+
// Implementation status
|
|
33
|
+
export const ImplementationStatusSchema = z.enum([
|
|
34
|
+
'not_started',
|
|
35
|
+
'in_progress',
|
|
36
|
+
'implemented',
|
|
37
|
+
'verified',
|
|
38
|
+
]);
|
|
39
|
+
// Task status
|
|
40
|
+
export const TaskStatusSchema = z.enum([
|
|
41
|
+
'pending',
|
|
42
|
+
'in_progress',
|
|
43
|
+
'pending_review',
|
|
44
|
+
'blocked',
|
|
45
|
+
'completed',
|
|
46
|
+
'cancelled',
|
|
47
|
+
]);
|
|
48
|
+
// Task type
|
|
49
|
+
export const TaskTypeSchema = z.enum([
|
|
50
|
+
'epic',
|
|
51
|
+
'task',
|
|
52
|
+
'bug',
|
|
53
|
+
'spike',
|
|
54
|
+
'infra',
|
|
55
|
+
]);
|
|
56
|
+
// Item type
|
|
57
|
+
export const ItemTypeSchema = z.enum([
|
|
58
|
+
'module',
|
|
59
|
+
'feature',
|
|
60
|
+
'requirement',
|
|
61
|
+
'constraint',
|
|
62
|
+
'decision',
|
|
63
|
+
'task',
|
|
64
|
+
'trait',
|
|
65
|
+
]);
|
|
66
|
+
// VCS reference
|
|
67
|
+
export const VcsRefSchema = z.object({
|
|
68
|
+
ref: z.string(),
|
|
69
|
+
type: z.enum(['branch', 'tag', 'commit']).optional(),
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/schema/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,iDAAiD;AAEjD;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,2BAA2B,CAAC;AAEvD;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,kBAAkB,CAAC;AAE7C,eAAe;AACf,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;AAC/E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;AAC/E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;AAElF,mCAAmC;AACnC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC;IACpC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,CAAC,CAAC;AAEH,4BAA4B;AAC5B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC;IACpC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrB,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;CAClB,CAAC,CAAC;AAEH,kBAAkB;AAClB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;AAEhG,wBAAwB;AACxB,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,IAAI,CAAC;IAC/C,aAAa;IACb,aAAa;IACb,aAAa;IACb,UAAU;CACX,CAAC,CAAC;AAEH,cAAc;AACd,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC;IACrC,SAAS;IACT,aAAa;IACb,gBAAgB;IAChB,SAAS;IACT,WAAW;IACX,WAAW;CACZ,CAAC,CAAC;AAEH,YAAY;AACZ,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC;IACnC,MAAM;IACN,MAAM;IACN,KAAK;IACL,OAAO;IACP,OAAO;CACR,CAAC,CAAC;AAEH,YAAY;AACZ,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC;IACnC,QAAQ;IACR,SAAS;IACT,aAAa;IACb,YAAY;IACZ,UAAU;IACV,MAAM;IACN,OAAO;CACR,CAAC,CAAC;AAEH,gBAAgB;AAChB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;CACrD,CAAC,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Inbox item - low-friction capture for ideas that aren't tasks yet.
|
|
4
|
+
* Intentionally simple: just text, timestamp, optional tags, and who added it.
|
|
5
|
+
*/
|
|
6
|
+
export declare const InboxItemSchema: z.ZodObject<{
|
|
7
|
+
_ulid: z.ZodString;
|
|
8
|
+
text: z.ZodString;
|
|
9
|
+
created_at: z.ZodUnion<[z.ZodString, z.ZodString]>;
|
|
10
|
+
tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
11
|
+
added_by: z.ZodOptional<z.ZodString>;
|
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
|
+
_ulid: string;
|
|
14
|
+
created_at: string;
|
|
15
|
+
text: string;
|
|
16
|
+
tags: string[];
|
|
17
|
+
added_by?: string | undefined;
|
|
18
|
+
}, {
|
|
19
|
+
_ulid: string;
|
|
20
|
+
created_at: string;
|
|
21
|
+
text: string;
|
|
22
|
+
added_by?: string | undefined;
|
|
23
|
+
tags?: string[] | undefined;
|
|
24
|
+
}>;
|
|
25
|
+
/**
|
|
26
|
+
* Inbox item input schema (for creating new items)
|
|
27
|
+
*/
|
|
28
|
+
export declare const InboxItemInputSchema: z.ZodObject<{
|
|
29
|
+
_ulid: z.ZodOptional<z.ZodString>;
|
|
30
|
+
text: z.ZodString;
|
|
31
|
+
created_at: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodString]>>;
|
|
32
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
33
|
+
added_by: z.ZodOptional<z.ZodString>;
|
|
34
|
+
}, "strip", z.ZodTypeAny, {
|
|
35
|
+
text: string;
|
|
36
|
+
_ulid?: string | undefined;
|
|
37
|
+
created_at?: string | undefined;
|
|
38
|
+
added_by?: string | undefined;
|
|
39
|
+
tags?: string[] | undefined;
|
|
40
|
+
}, {
|
|
41
|
+
text: string;
|
|
42
|
+
_ulid?: string | undefined;
|
|
43
|
+
created_at?: string | undefined;
|
|
44
|
+
added_by?: string | undefined;
|
|
45
|
+
tags?: string[] | undefined;
|
|
46
|
+
}>;
|
|
47
|
+
/**
|
|
48
|
+
* Inbox file schema (collection of inbox items)
|
|
49
|
+
*/
|
|
50
|
+
export declare const InboxFileSchema: z.ZodObject<{
|
|
51
|
+
inbox: z.ZodArray<z.ZodObject<{
|
|
52
|
+
_ulid: z.ZodString;
|
|
53
|
+
text: z.ZodString;
|
|
54
|
+
created_at: z.ZodUnion<[z.ZodString, z.ZodString]>;
|
|
55
|
+
tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
56
|
+
added_by: z.ZodOptional<z.ZodString>;
|
|
57
|
+
}, "strip", z.ZodTypeAny, {
|
|
58
|
+
_ulid: string;
|
|
59
|
+
created_at: string;
|
|
60
|
+
text: string;
|
|
61
|
+
tags: string[];
|
|
62
|
+
added_by?: string | undefined;
|
|
63
|
+
}, {
|
|
64
|
+
_ulid: string;
|
|
65
|
+
created_at: string;
|
|
66
|
+
text: string;
|
|
67
|
+
added_by?: string | undefined;
|
|
68
|
+
tags?: string[] | undefined;
|
|
69
|
+
}>, "many">;
|
|
70
|
+
}, "strip", z.ZodTypeAny, {
|
|
71
|
+
inbox: {
|
|
72
|
+
_ulid: string;
|
|
73
|
+
created_at: string;
|
|
74
|
+
text: string;
|
|
75
|
+
tags: string[];
|
|
76
|
+
added_by?: string | undefined;
|
|
77
|
+
}[];
|
|
78
|
+
}, {
|
|
79
|
+
inbox: {
|
|
80
|
+
_ulid: string;
|
|
81
|
+
created_at: string;
|
|
82
|
+
text: string;
|
|
83
|
+
added_by?: string | undefined;
|
|
84
|
+
tags?: string[] | undefined;
|
|
85
|
+
}[];
|
|
86
|
+
}>;
|
|
87
|
+
export type InboxItem = z.infer<typeof InboxItemSchema>;
|
|
88
|
+
export type InboxItemInput = z.infer<typeof InboxItemInputSchema>;
|
|
89
|
+
export type InboxFile = z.infer<typeof InboxFileSchema>;
|
|
90
|
+
//# sourceMappingURL=inbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/schema/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;EAM1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EAM/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
|