@cmodjs/core 1.0.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/commands.md +22 -11
- package/docs/dependencies.md +6 -4
- package/docs/hooks.md +26 -3
- package/docs/index.md +1 -1
- package/docs/install-steps.md +5 -3
- package/docs/mod.md +29 -3
- package/docs/permissions.md +4 -4
- package/docs/session.md +126 -63
- package/docs/testing.md +7 -5
- package/docs/ui.md +9 -1
- package/jobs/program.d.ts.map +1 -1
- package/jobs/program.js +7 -2
- package/mod.d.ts +30 -6
- package/mod.d.ts.map +1 -1
- package/mod.js +34 -1
- package/package.json +1 -1
- package/records.d.ts +4 -1
- package/records.d.ts.map +1 -1
- package/records.js +6 -1
- package/register.d.ts.map +1 -1
- package/register.js +17 -0
- package/runtime/announce.d.ts.map +1 -1
- package/runtime/announce.js +2 -0
- package/runtime/before.d.ts +32 -0
- package/runtime/before.d.ts.map +1 -0
- package/runtime/before.js +214 -0
- package/runtime/claude.d.ts +2 -1
- package/runtime/claude.d.ts.map +1 -1
- package/runtime/conversations.d.ts +1 -0
- package/runtime/conversations.d.ts.map +1 -1
- package/runtime/conversations.js +333 -61
- package/runtime/dependencies.js +1 -1
- package/runtime/engine.d.ts +2 -6
- package/runtime/engine.d.ts.map +1 -1
- package/runtime/grants.d.ts.map +1 -1
- package/runtime/grants.js +8 -8
- package/runtime/hooks.d.ts +1 -1
- package/runtime/hooks.d.ts.map +1 -1
- package/runtime/hooks.js +19 -4
- package/runtime/installer.d.ts +1 -1
- package/runtime/installer.d.ts.map +1 -1
- package/runtime/installer.js +6 -5
- package/runtime/lifecycle.d.ts.map +1 -1
- package/runtime/lifecycle.js +129 -58
- package/runtime/metadata.d.ts.map +1 -1
- package/runtime/metadata.js +5 -4
- package/runtime/sessions.d.ts +26 -4
- package/runtime/sessions.d.ts.map +1 -1
- package/runtime/sessions.js +315 -117
- package/runtime/toaster.d.ts +5 -12
- package/runtime/toaster.d.ts.map +1 -1
- package/runtime/toaster.js +133 -23
- package/runtime/ui.d.ts.map +1 -1
- package/runtime/ui.js +26 -6
- package/session/context/context.d.ts +3 -1
- package/session/context/context.d.ts.map +1 -1
- package/session/context/turn/message/message.d.ts +1 -0
- package/session/context/turn/message/message.d.ts.map +1 -1
- package/session/context/turn/message/message.js +42 -1
- package/session/context/turn/turn.d.ts +2 -1
- package/session/context/turn/turn.d.ts.map +1 -1
- package/session/conversation.d.ts +20 -11
- package/session/conversation.d.ts.map +1 -1
- package/session/conversation.js +50 -27
- package/session/goal/goal.d.ts +3 -2
- package/session/goal/goal.d.ts.map +1 -1
- package/session/goal/task.d.ts +4 -4
- package/session/goal/task.d.ts.map +1 -1
- package/session/session.d.ts +80 -21
- package/session/session.d.ts.map +1 -1
- package/session/session.js +1 -0
- package/src/jobs/program.ts +7 -2
- package/src/mod.ts +48 -5
- package/src/records.ts +6 -1
- package/src/register.ts +17 -0
- package/src/runtime/announce.ts +2 -0
- package/src/runtime/before.ts +200 -0
- package/src/runtime/claude.ts +3 -0
- package/src/runtime/conversations.ts +337 -60
- package/src/runtime/dependencies.ts +1 -1
- package/src/runtime/engine.ts +2 -1
- package/src/runtime/grants.ts +8 -10
- package/src/runtime/hooks.ts +20 -4
- package/src/runtime/installer.ts +6 -5
- package/src/runtime/lifecycle.ts +135 -55
- package/src/runtime/metadata.ts +5 -4
- package/src/runtime/sessions.ts +316 -111
- package/src/runtime/toaster.ts +160 -44
- package/src/runtime/ui.ts +23 -4
- package/src/session/context/context.ts +3 -1
- package/src/session/context/turn/message/message.ts +39 -1
- package/src/session/context/turn/turn.ts +2 -1
- package/src/session/conversation.ts +56 -31
- package/src/session/goal/goal.ts +3 -2
- package/src/session/goal/task.ts +4 -4
- package/src/session/session.ts +62 -15
- package/src/testing/fake-claude.ts +4 -2
- package/src/testing/fake-sessions.ts +94 -20
- package/src/testing.ts +27 -3
- package/src/utils/call-effects.ts +2 -2
- package/src/utils/disposable.ts +3 -0
- package/src/utils/matcher.ts +1 -1
- package/src/utils/paths.ts +6 -3
- package/testing/fake-claude.d.ts +1 -0
- package/testing/fake-claude.d.ts.map +1 -1
- package/testing/fake-claude.js +3 -1
- package/testing/fake-sessions.d.ts +8 -1
- package/testing/fake-sessions.d.ts.map +1 -1
- package/testing/fake-sessions.js +97 -18
- package/testing.d.ts +1 -0
- package/testing.d.ts.map +1 -1
- package/testing.js +23 -2
- package/utils/call-effects.d.ts +1 -0
- package/utils/call-effects.d.ts.map +1 -1
- package/utils/call-effects.js +1 -1
- package/utils/disposable.d.ts +4 -0
- package/utils/disposable.d.ts.map +1 -0
- package/utils/disposable.js +1 -0
- package/utils/matcher.js +1 -1
- package/utils/paths.d.ts +2 -1
- package/utils/paths.d.ts.map +1 -1
- package/utils/paths.js +6 -3
package/mod.js
CHANGED
|
@@ -19,25 +19,55 @@ export const Stop = 'Stop';
|
|
|
19
19
|
export const StopFailure = 'StopFailure';
|
|
20
20
|
export const CwdChanged = 'CwdChanged';
|
|
21
21
|
export const FileChanged = 'FileChanged';
|
|
22
|
+
export const UserPromptExpansion = 'UserPromptExpansion';
|
|
23
|
+
export const Setup = 'Setup';
|
|
24
|
+
export const ConfigChange = 'ConfigChange';
|
|
25
|
+
export const DirectoryAdded = 'DirectoryAdded';
|
|
26
|
+
export const PreModelSwitch = 'PreModelSwitch';
|
|
27
|
+
export const PostModelSwitch = 'PostModelSwitch';
|
|
28
|
+
export const PostCompact = 'PostCompact';
|
|
29
|
+
export const MessageDisplay = 'MessageDisplay';
|
|
30
|
+
export const TodoCreated = 'TaskCreated';
|
|
31
|
+
export const TodoCompleted = 'TaskCompleted';
|
|
32
|
+
export const TeammateIdle = 'TeammateIdle';
|
|
33
|
+
export const Elicitation = 'Elicitation';
|
|
34
|
+
export const ElicitationResult = 'ElicitationResult';
|
|
35
|
+
export const WorktreeCreate = 'WorktreeCreate';
|
|
36
|
+
export const WorktreeRemove = 'WorktreeRemove';
|
|
22
37
|
export const hooks = [
|
|
38
|
+
Setup,
|
|
23
39
|
SessionStart,
|
|
24
40
|
SessionEnd,
|
|
25
41
|
UserPromptSubmit,
|
|
42
|
+
UserPromptExpansion,
|
|
26
43
|
InstructionsLoaded,
|
|
44
|
+
ConfigChange,
|
|
45
|
+
DirectoryAdded,
|
|
46
|
+
PreModelSwitch,
|
|
47
|
+
PostModelSwitch,
|
|
27
48
|
PreToolUse,
|
|
28
49
|
PermissionRequest,
|
|
29
50
|
PermissionDenied,
|
|
30
51
|
PostToolUse,
|
|
31
52
|
PostToolUseFailure,
|
|
32
53
|
PostToolBatch,
|
|
54
|
+
MessageDisplay,
|
|
33
55
|
SubagentStart,
|
|
34
56
|
SubagentStop,
|
|
57
|
+
TodoCreated,
|
|
58
|
+
TodoCompleted,
|
|
59
|
+
TeammateIdle,
|
|
60
|
+
Elicitation,
|
|
61
|
+
ElicitationResult,
|
|
35
62
|
Notification,
|
|
36
63
|
PreCompact,
|
|
64
|
+
PostCompact,
|
|
37
65
|
Stop,
|
|
38
66
|
StopFailure,
|
|
39
67
|
CwdChanged,
|
|
40
68
|
FileChanged,
|
|
69
|
+
WorktreeCreate,
|
|
70
|
+
WorktreeRemove,
|
|
41
71
|
];
|
|
42
72
|
export const sessions = {
|
|
43
73
|
get current() {
|
|
@@ -45,8 +75,11 @@ export const sessions = {
|
|
|
45
75
|
},
|
|
46
76
|
list: (options) => bound().sessions.list(options),
|
|
47
77
|
search: (text, options) => bound().sessions.search(text, options),
|
|
78
|
+
on: ((...args) => bound().sessions.on(...args)),
|
|
79
|
+
before: ((...args) => bound().sessions.before(...args)),
|
|
48
80
|
};
|
|
49
81
|
export const settings = {
|
|
82
|
+
list: () => bound().settings.list(),
|
|
50
83
|
user: { read: () => bound().settings.user.read(), update: (values) => bound().settings.user.update(values) },
|
|
51
84
|
project: { read: () => bound().settings.project.read(), update: (values) => bound().settings.project.update(values) },
|
|
52
85
|
local: { read: () => bound().settings.local.read(), update: (values) => bound().settings.local.update(values) },
|
|
@@ -82,7 +115,7 @@ export function defineMod(definition) {
|
|
|
82
115
|
return definition;
|
|
83
116
|
}
|
|
84
117
|
export { AbovePrompt, AskUserQuestion, CommandOutput, PromptHint, SessionMode, Spinner, ToolGroup, ToolProgress, TurnDuration } from './ui/places.js';
|
|
85
|
-
export { Session } from './session/session.js';
|
|
118
|
+
export { Session, UsageChange } from './session/session.js';
|
|
86
119
|
export { ContextEnd, ContextStart } from './session/context/context.js';
|
|
87
120
|
export { TurnEnd, TurnStart } from './session/context/turn/turn.js';
|
|
88
121
|
export { Message } from './session/context/turn/message/message.js';
|
package/package.json
CHANGED
package/records.d.ts
CHANGED
|
@@ -42,6 +42,9 @@ export type RunnerEvent = {
|
|
|
42
42
|
} | {
|
|
43
43
|
type: 'missing';
|
|
44
44
|
name: string;
|
|
45
|
+
} | {
|
|
46
|
+
type: 'retries';
|
|
47
|
+
when: 'changed' | 'later';
|
|
45
48
|
} | {
|
|
46
49
|
type: 'failed';
|
|
47
50
|
code: number;
|
|
@@ -69,7 +72,7 @@ export declare function marketplaceOf(root: string, name: string): string | unde
|
|
|
69
72
|
export declare function updatesToTurnOn(marketplace: string | undefined, settings: unknown, known: unknown): string | undefined;
|
|
70
73
|
export declare function consentPath(store: string): string;
|
|
71
74
|
export declare function parseConsent(value: unknown, path: string): Record<string, string[]>;
|
|
72
|
-
export declare const coreVersion = "1.
|
|
75
|
+
export declare const coreVersion = "1.5.0";
|
|
73
76
|
export declare function oldestCmodFor(steps: Steps): string;
|
|
74
77
|
export declare function keyWords(keys: Readonly<Record<string, string>> | undefined): string;
|
|
75
78
|
export declare function scriptPaths(command: string): string[];
|
package/records.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["src/records.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["src/records.ts"],"names":[],"mappings":"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"}
|
package/records.js
CHANGED
|
@@ -220,7 +220,7 @@ function readKeys(keys) {
|
|
|
220
220
|
}
|
|
221
221
|
return { keys: commands };
|
|
222
222
|
}
|
|
223
|
-
export const coreVersion = '1.
|
|
223
|
+
export const coreVersion = '1.5.0';
|
|
224
224
|
export function oldestCmodFor(steps) {
|
|
225
225
|
if (steps.permissions?.some((item) => item === 'tasks' || item.startsWith('config:')) === true)
|
|
226
226
|
return '1.0.0';
|
|
@@ -303,6 +303,8 @@ export function formatEvent(event) {
|
|
|
303
303
|
return `missing ${event.name}`;
|
|
304
304
|
case 'failed':
|
|
305
305
|
return `failed ${event.code}\t${event.message.replace(/\s*\n\s*/g, ' ')}`;
|
|
306
|
+
case 'retries':
|
|
307
|
+
return `retries ${event.when}`;
|
|
306
308
|
}
|
|
307
309
|
}
|
|
308
310
|
export function parseEvent(line) {
|
|
@@ -323,6 +325,9 @@ export function parseEvent(line) {
|
|
|
323
325
|
const failed = /^failed (-?\d+)(?:\t(.*))?$/.exec(line);
|
|
324
326
|
if (failed !== null)
|
|
325
327
|
return { type: 'failed', code: Number(failed[1]), message: failed[2] ?? '' };
|
|
328
|
+
const retries = /^retries (changed|later)$/.exec(line);
|
|
329
|
+
if (retries !== null)
|
|
330
|
+
return { type: 'retries', when: retries[1] };
|
|
326
331
|
return { type: 'log', text: line.replace(/^log /, '') };
|
|
327
332
|
}
|
|
328
333
|
export function isAtLeast(version, minimum) {
|
package/register.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["src/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoD,EAAE,EAAE,aAAa,EAAgB,MAAM,aAAa,CAAA;AACpH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAY3C,wBAAgB,aAAa,IAAI,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAEjE;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["src/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoD,EAAE,EAAE,aAAa,EAAgB,MAAM,aAAa,CAAA;AACpH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAY3C,wBAAgB,aAAa,IAAI,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAEjE;AAmFD,wBAAgB,WAAW,CAAC,KAAK,SAAS,MAAM,EAAE,QAAQ,SAAS,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAoDzK;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAIzD"}
|
package/register.js
CHANGED
|
@@ -20,6 +20,7 @@ async function startMod($, eventInput, passOn) {
|
|
|
20
20
|
panes: () => $.ui.panes(),
|
|
21
21
|
scroll: (args) => $.ui.scroll(args),
|
|
22
22
|
copy: (args) => $.ui.copy(args),
|
|
23
|
+
focus: (args) => $.ui.focus(args),
|
|
23
24
|
resolve: (render) => $.ui.resolve(render),
|
|
24
25
|
},
|
|
25
26
|
process: {
|
|
@@ -88,21 +89,36 @@ export function registerMod(addHook, definition, options) {
|
|
|
88
89
|
registered = definition;
|
|
89
90
|
lifecycle = createLifecycle(definition, () => checksPermissions, options);
|
|
90
91
|
addHook('session.start', startMod);
|
|
92
|
+
addHook('classic.Setup', routeToMod);
|
|
91
93
|
addHook('classic.SessionStart', routeToMod);
|
|
92
94
|
addHook('classic.SessionEnd', routeToMod);
|
|
93
95
|
addHook('classic.UserPromptSubmit', routeToMod);
|
|
96
|
+
addHook('classic.UserPromptExpansion', routeToMod);
|
|
94
97
|
addHook('classic.InstructionsLoaded', routeToMod);
|
|
98
|
+
addHook('classic.ConfigChange', routeToMod);
|
|
99
|
+
addHook('classic.DirectoryAdded', routeToMod);
|
|
100
|
+
addHook('classic.PreModelSwitch', routeToMod);
|
|
101
|
+
addHook('classic.PostModelSwitch', routeToMod);
|
|
95
102
|
addHook('classic.PermissionDenied', routeToMod);
|
|
96
103
|
addHook('classic.PostToolUse', routeToMod);
|
|
97
104
|
addHook('classic.PostToolUseFailure', routeToMod);
|
|
98
105
|
addHook('classic.PostToolBatch', routeToMod);
|
|
106
|
+
addHook('classic.MessageDisplay', routeToMod);
|
|
99
107
|
addHook('classic.SubagentStart', routeToMod);
|
|
100
108
|
addHook('classic.SubagentStop', routeToMod);
|
|
109
|
+
addHook('classic.TaskCreated', routeToMod);
|
|
110
|
+
addHook('classic.TaskCompleted', routeToMod);
|
|
111
|
+
addHook('classic.TeammateIdle', routeToMod);
|
|
112
|
+
addHook('classic.Elicitation', routeToMod);
|
|
113
|
+
addHook('classic.ElicitationResult', routeToMod);
|
|
101
114
|
addHook('classic.Notification', routeToMod);
|
|
102
115
|
addHook('classic.PreCompact', routeToMod);
|
|
116
|
+
addHook('classic.PostCompact', routeToMod);
|
|
103
117
|
addHook('classic.Stop', routeToMod);
|
|
104
118
|
addHook('classic.StopFailure', routeToMod);
|
|
105
119
|
addHook('classic.FileChanged', routeToMod);
|
|
120
|
+
addHook('classic.WorktreeCreate', routeToMod);
|
|
121
|
+
addHook('classic.WorktreeRemove', routeToMod);
|
|
106
122
|
addHook('tool.call', routeToMod);
|
|
107
123
|
addHook('prompt.submit', routeToMod);
|
|
108
124
|
addHook('prompt.context', routeToMod);
|
|
@@ -120,6 +136,7 @@ export function registerMod(addHook, definition, options) {
|
|
|
120
136
|
addHook('session.compact', routeToMod);
|
|
121
137
|
addHook('session.receive', routeToMod);
|
|
122
138
|
addHook('agent.spawn', routeToMod);
|
|
139
|
+
addHook('prompt.attachment', routeToMod);
|
|
123
140
|
}
|
|
124
141
|
export function registerPermissionCheck(addHook) {
|
|
125
142
|
checksPermissions = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"announce.d.ts","sourceRoot":"","sources":["../src/runtime/announce.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAA;AAEvF,MAAM,MAAM,YAAY,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAA;KAAE,CAAA;CAAE,CAAA;AAErK,eAAO,MAAM,cAAc,QAAS,CAAA;AAIpC,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAIjE;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"announce.d.ts","sourceRoot":"","sources":["../src/runtime/announce.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAA;AAEvF,MAAM,MAAM,YAAY,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAA;KAAE,CAAA;CAAE,CAAA;AAErK,eAAO,MAAM,cAAc,QAAS,CAAA;AAIpC,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAIjE;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAuCnL"}
|
package/runtime/announce.js
CHANGED
|
@@ -19,9 +19,11 @@ export async function announcementOf(claude, plugin, granted, added, previous) {
|
|
|
19
19
|
const open = (page) => () => claude.cmod.call({ to: cmodPluginName, method: 'openSettings', input: { mod: plugin.name, ...(page === undefined ? {} : { page }) } });
|
|
20
20
|
if (previous === undefined) {
|
|
21
21
|
const { program, keys } = plugin.steps;
|
|
22
|
+
const rules = (await claude.fs.list(`${plugin.root}/rules`).catch(ifMissing([]))).filter((entry) => entry.kind === 'file' && entry.name.endsWith('.md')).map((entry) => entry.name.slice(0, -'.md'.length)).toSorted();
|
|
22
23
|
const lines = [
|
|
23
24
|
field('description'),
|
|
24
25
|
added.length > 0 ? `Adds ${listed(added)}.` : undefined,
|
|
26
|
+
rules.length > 0 ? `Adds ${rules.length} ${rules.length === 1 ? 'rule' : 'rules'}: ${listed(rules)}.` : undefined,
|
|
25
27
|
program === undefined ? undefined : `Installed the ${program} program.`,
|
|
26
28
|
...Object.entries(keys ?? {}).map(([key, command]) => `Binds ${key} to /${command}.`),
|
|
27
29
|
...[...granted].map((item) => `${permissionWords(item)}.`),
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Args, Frozen } from 'claude-code';
|
|
2
|
+
import type { Disposable } from '../mod.js';
|
|
3
|
+
import type { ConversationState, SessionChange } from '../session/conversation.js';
|
|
4
|
+
import type { BeforeEvent } from '../session/session.js';
|
|
5
|
+
import type { Claude } from './claude.js';
|
|
6
|
+
import type { Router } from './router.js';
|
|
7
|
+
export type Place = Pick<ConversationState, 'session' | 'context' | 'contextOpenedAt' | 'turn' | 'tasks' | 'taskTurns'>;
|
|
8
|
+
export type Decide = (event: BeforeEvent, change: SessionChange) => Promise<Partial<Answers> | undefined>;
|
|
9
|
+
export type Answers = {
|
|
10
|
+
readonly text: string;
|
|
11
|
+
readonly refuse: string;
|
|
12
|
+
readonly input: Readonly<Record<string, unknown>>;
|
|
13
|
+
readonly result: string;
|
|
14
|
+
readonly owner: {
|
|
15
|
+
readonly model: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export type BeforeHooks = {
|
|
19
|
+
readonly place: () => Promise<Place>;
|
|
20
|
+
readonly wants: (event: BeforeEvent) => Promise<boolean>;
|
|
21
|
+
readonly decide: Decide;
|
|
22
|
+
};
|
|
23
|
+
export declare function relayOf(e: Frozen<Args<'session.receive'>>): string | undefined;
|
|
24
|
+
export declare function installBefore({ claude, router, hooks }: {
|
|
25
|
+
readonly claude: Claude;
|
|
26
|
+
readonly router: Router;
|
|
27
|
+
readonly hooks: BeforeHooks;
|
|
28
|
+
}): Disposable;
|
|
29
|
+
export declare function withAnswer(change: SessionChange, answer: Partial<Answers>): SessionChange;
|
|
30
|
+
export declare function foldAnswers(event: BeforeEvent, change: SessionChange, askers: readonly ((change: SessionChange) => Promise<unknown>)[], report: (error: unknown) => void): Promise<Partial<Answers> | undefined>;
|
|
31
|
+
export declare function answerOf(event: BeforeEvent, answer: unknown): Partial<Answers> | undefined;
|
|
32
|
+
//# sourceMappingURL=before.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"before.d.ts","sourceRoot":"","sources":["../src/runtime/before.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAa3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAY,MAAM,4BAA4B,CAAA;AAE5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,SAAS,GAAG,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC,CAAA;AAEvH,MAAM,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAA;AAEzG,MAAM,MAAM,OAAO,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAA;AAEhM,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAMrJ,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,CAG9E;AAED,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GAAG,UAAU,CAkHtJ;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,aAAa,CAKzF;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAetN;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAoB1F"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { ContextEnd } from '../session/context/context.js';
|
|
2
|
+
import { Document } from '../session/context/turn/message/document.js';
|
|
3
|
+
import { Message, messagesOf, rowOfAppend, withTexts } from '../session/context/turn/message/message.js';
|
|
4
|
+
import { Note } from '../session/context/turn/message/note.js';
|
|
5
|
+
import { Notice } from '../session/context/turn/message/notice.js';
|
|
6
|
+
import { Prompt } from '../session/context/turn/message/prompt.js';
|
|
7
|
+
import { Reply } from '../session/context/turn/message/reply.js';
|
|
8
|
+
import { senderOf } from '../session/context/turn/message/sender.js';
|
|
9
|
+
import { Skill } from '../session/context/turn/message/skill.js';
|
|
10
|
+
import { ToolCall } from '../session/context/turn/message/tool-call.js';
|
|
11
|
+
import { ToolResult } from '../session/context/turn/message/tool-result.js';
|
|
12
|
+
import { TurnEnd } from '../session/context/turn/turn.js';
|
|
13
|
+
import { TaskEnd, TaskStart } from '../session/goal/task.js';
|
|
14
|
+
import { cmodPluginName } from './dependencies.js';
|
|
15
|
+
import { toolInputOf } from './tool-calls.js';
|
|
16
|
+
const appended = [Note, Reply, ToolResult, Notice];
|
|
17
|
+
const relayTag = /^(?:<cross-session-message[^>]*>\s*)?<cmod-relay>([\s\S]*)<\/cmod-relay>(?:\s*<\/cross-session-message>[\s\S]*)?$/;
|
|
18
|
+
export function relayOf(e) {
|
|
19
|
+
const isFromCmod = e.origin.kind === 'peer' && !('teammate' in e.origin) && e.origin.plugin === cmodPluginName;
|
|
20
|
+
return isFromCmod ? relayTag.exec(e.text)?.[1] : undefined;
|
|
21
|
+
}
|
|
22
|
+
export function installBefore({ claude, router, hooks }) {
|
|
23
|
+
const { place, wants, decide } = hooks;
|
|
24
|
+
const now = () => new Date().toISOString();
|
|
25
|
+
const asked = async (event, change) => (await decide(event, change)) ?? {};
|
|
26
|
+
const message = (where, unplaced, task, isInTurn = true) => {
|
|
27
|
+
const turn = isInTurn ? (task === undefined ? where.turn : where.taskTurns[task]) : undefined;
|
|
28
|
+
const context = task === undefined ? where.context : (where.tasks[task]?.context ?? where.context);
|
|
29
|
+
return { type: Message, message: { ...unplaced, session: where.session, context, ...(turn === undefined ? {} : { turn: turn.prompt.id }), ...(task === undefined ? {} : { task }) } };
|
|
30
|
+
};
|
|
31
|
+
const added = [
|
|
32
|
+
router.add('prompt.submit', async (e, next) => {
|
|
33
|
+
if (!(await wants(Prompt)) || e.text.startsWith('/'))
|
|
34
|
+
return next(e);
|
|
35
|
+
const where = await place();
|
|
36
|
+
const answer = await asked(Prompt, message(where, { id: '', at: now(), type: Prompt, text: e.text, from: senderOf(e.origin, false) }, undefined, false));
|
|
37
|
+
if (answer.refuse !== undefined)
|
|
38
|
+
return { drop: answer.refuse };
|
|
39
|
+
return next(answer.text === undefined ? e : { ...e, text: answer.text });
|
|
40
|
+
}),
|
|
41
|
+
router.add('command.run', async (e, next) => {
|
|
42
|
+
if (!(await wants(Prompt)))
|
|
43
|
+
return next(e);
|
|
44
|
+
const typed = e.args === '' ? `/${e.command}` : `/${e.command} ${e.args}`;
|
|
45
|
+
const where = await place();
|
|
46
|
+
const answer = await asked(Prompt, message(where, { id: '', at: now(), type: Prompt, text: typed, from: senderOf(e.origin, false) }, undefined, false));
|
|
47
|
+
if (answer.refuse !== undefined)
|
|
48
|
+
return { text: answer.refuse };
|
|
49
|
+
if (answer.text === undefined || answer.text === typed)
|
|
50
|
+
return next(e);
|
|
51
|
+
const same = new RegExp(`^/${e.command}(?:\\s+|$)`).exec(answer.text);
|
|
52
|
+
if (same !== null)
|
|
53
|
+
return next({ ...e, args: answer.text.slice(same[0].length) });
|
|
54
|
+
void claude.prompt.submit({ text: answer.text });
|
|
55
|
+
return {};
|
|
56
|
+
}),
|
|
57
|
+
router.add('session.receive', async (e, next) => {
|
|
58
|
+
if (!(await wants(Prompt)) || relayOf(e) !== undefined)
|
|
59
|
+
return next(e);
|
|
60
|
+
const where = await place();
|
|
61
|
+
const answer = await asked(Prompt, message(where, { id: '', at: now(), type: Prompt, text: e.text, from: { type: 'session' } }, e.agentId, false));
|
|
62
|
+
if (answer.refuse !== undefined)
|
|
63
|
+
return { consumed: answer.refuse };
|
|
64
|
+
return next(answer.text === undefined ? e : { ...e, text: answer.text });
|
|
65
|
+
}),
|
|
66
|
+
router.add('skill.prompt', async (e, next) => {
|
|
67
|
+
if (!(await wants(Skill)))
|
|
68
|
+
return next(e);
|
|
69
|
+
const where = await place();
|
|
70
|
+
const answer = await asked(Skill, message(where, { id: '', at: now(), type: Skill, name: e.skill, text: e.text }, undefined));
|
|
71
|
+
return answer.text === undefined ? next(e) : { text: answer.text };
|
|
72
|
+
}),
|
|
73
|
+
router.add('prompt.attachment', async (e, next) => {
|
|
74
|
+
if (!(await wants(Document)) || e.type !== 'nested_memory')
|
|
75
|
+
return next(e);
|
|
76
|
+
const where = await place();
|
|
77
|
+
const path = /^Contents of (.+?) \(/.exec(e.text)?.[1] ?? '';
|
|
78
|
+
const answer = await asked(Document, message(where, { id: '', at: now(), type: Document, path, text: e.text }, e.agentId));
|
|
79
|
+
if (answer.refuse !== undefined)
|
|
80
|
+
return { text: null };
|
|
81
|
+
return answer.text === undefined ? next(e) : { text: answer.text };
|
|
82
|
+
}),
|
|
83
|
+
router.add('session.append', async (e, next) => {
|
|
84
|
+
const wanted = new Set((await Promise.all(appended.map(async (event) => ((await wants(event)) ? [event] : [])))).flat());
|
|
85
|
+
if (wanted.size === 0)
|
|
86
|
+
return next(e);
|
|
87
|
+
const row = rowOfAppend({ uuid: e.uuid, door: e.door, origin: e.origin, message: e.message }, now(), '');
|
|
88
|
+
const found = messagesOf(row, e.agentId !== undefined);
|
|
89
|
+
if (!found.some((each) => wanted.has(each.type)))
|
|
90
|
+
return next(e);
|
|
91
|
+
const where = await place();
|
|
92
|
+
const texts = new Map();
|
|
93
|
+
for (const [part, unplaced] of found.entries()) {
|
|
94
|
+
if (!wanted.has(unplaced.type))
|
|
95
|
+
continue;
|
|
96
|
+
const answer = await asked(unplaced.type, message(where, unplaced, e.agentId));
|
|
97
|
+
if (answer.text !== undefined)
|
|
98
|
+
texts.set(part, answer.text);
|
|
99
|
+
}
|
|
100
|
+
return next(texts.size === 0 ? e : { ...e, message: { ...e.message, content: withTexts(row, texts) } });
|
|
101
|
+
}),
|
|
102
|
+
router.add('tool.call', async (e, next) => {
|
|
103
|
+
if (!(await wants(ToolCall)))
|
|
104
|
+
return next(e);
|
|
105
|
+
const where = await place();
|
|
106
|
+
const input = toolInputOf(e);
|
|
107
|
+
const answer = await asked(ToolCall, message(where, { id: e.tool_use_id, at: now(), type: ToolCall, callId: e.tool_use_id, name: e.tool, input, cwd: await claude.session.cwd() }, e.agentId));
|
|
108
|
+
if (answer.refuse !== undefined)
|
|
109
|
+
return { deny: answer.refuse };
|
|
110
|
+
if (answer.result !== undefined)
|
|
111
|
+
return { result: answer.result };
|
|
112
|
+
if (answer.input === undefined)
|
|
113
|
+
return next(e);
|
|
114
|
+
const reserved = Object.fromEntries(Object.entries(e).filter(([key]) => !(key in input)));
|
|
115
|
+
return next({ ...reserved, ...answer.input });
|
|
116
|
+
}),
|
|
117
|
+
router.add('agent.spawn', async (e, next) => {
|
|
118
|
+
if (!(await wants(TaskStart)))
|
|
119
|
+
return next(e);
|
|
120
|
+
const where = await place();
|
|
121
|
+
const task = { id: '', title: e.description, agentType: e.subagentType, model: e.model ?? e.parentModel, openedBy: e.tool_use_id, openedAt: now(), ...(e.parentAgentId === undefined ? {} : { parent: e.parentAgentId }) };
|
|
122
|
+
const answer = await asked(TaskStart, { type: TaskStart, task: { ...task, context: where.context } });
|
|
123
|
+
if (answer.refuse !== undefined)
|
|
124
|
+
return { deny: answer.refuse };
|
|
125
|
+
return next(answer.owner === undefined ? e : { ...e, model: answer.owner.model });
|
|
126
|
+
}),
|
|
127
|
+
router.add('classic.SubagentStop', async (e, next) => {
|
|
128
|
+
if (!(await wants(TaskEnd)) && !(await wants(TurnEnd)))
|
|
129
|
+
return next(e);
|
|
130
|
+
const where = await place();
|
|
131
|
+
const task = where.tasks[e.agent_id];
|
|
132
|
+
if (task === undefined)
|
|
133
|
+
return next(e);
|
|
134
|
+
const turn = where.taskTurns[e.agent_id];
|
|
135
|
+
const ending = (await wants(TaskEnd)) ? await asked(TaskEnd, { type: TaskEnd, task: { ...task, closedAt: now() } }) : {};
|
|
136
|
+
const refuse = ending.refuse ?? ((await wants(TurnEnd)) && turn !== undefined ? (await asked(TurnEnd, { type: TurnEnd, turn: { ...turn, closedAt: now() } })).refuse : undefined);
|
|
137
|
+
const below = await next(e);
|
|
138
|
+
return refuse === undefined ? below : { ...below, block: refuse };
|
|
139
|
+
}),
|
|
140
|
+
router.add('classic.Stop', async (e, next) => {
|
|
141
|
+
if (!(await wants(TurnEnd)))
|
|
142
|
+
return next(e);
|
|
143
|
+
const where = await place();
|
|
144
|
+
if (where.turn === undefined)
|
|
145
|
+
return next(e);
|
|
146
|
+
const answer = await asked(TurnEnd, { type: TurnEnd, turn: { ...where.turn, closedAt: now() } });
|
|
147
|
+
const below = await next(e);
|
|
148
|
+
return answer.refuse === undefined ? below : { ...below, block: answer.refuse };
|
|
149
|
+
}),
|
|
150
|
+
router.add('session.compact', async (e, next) => {
|
|
151
|
+
if (!(await wants(ContextEnd)) || e.trigger === 'precompute')
|
|
152
|
+
return next(e);
|
|
153
|
+
const where = await place();
|
|
154
|
+
const task = e.agentId === undefined ? undefined : where.tasks[e.agentId];
|
|
155
|
+
if (e.agentId !== undefined && task === undefined)
|
|
156
|
+
return next(e);
|
|
157
|
+
const context = task === undefined ? { number: where.context, openedAt: where.contextOpenedAt } : { number: task.context, openedAt: task.contextOpenedAt ?? task.openedAt, task: task.id };
|
|
158
|
+
const answer = await asked(ContextEnd, { type: ContextEnd, context: { ...context, closedAt: now() } });
|
|
159
|
+
return answer.refuse === undefined ? next(e) : { skip: answer.refuse };
|
|
160
|
+
}),
|
|
161
|
+
];
|
|
162
|
+
return { dispose: () => added.forEach((each) => each.dispose()) };
|
|
163
|
+
}
|
|
164
|
+
export function withAnswer(change, answer) {
|
|
165
|
+
if (change.type === Message && answer.text !== undefined)
|
|
166
|
+
return { ...change, message: { ...change.message, text: answer.text } };
|
|
167
|
+
if (change.type === Message && answer.input !== undefined && change.message.type === ToolCall)
|
|
168
|
+
return { ...change, message: { ...change.message, input: answer.input } };
|
|
169
|
+
if (change.type === TaskStart && answer.owner !== undefined)
|
|
170
|
+
return { ...change, task: { ...change.task, model: answer.owner.model } };
|
|
171
|
+
return change;
|
|
172
|
+
}
|
|
173
|
+
export async function foldAnswers(event, change, askers, report) {
|
|
174
|
+
let latest = change;
|
|
175
|
+
let result;
|
|
176
|
+
for (const ask of askers) {
|
|
177
|
+
try {
|
|
178
|
+
const answer = answerOf(event, await ask(latest));
|
|
179
|
+
if (answer === undefined)
|
|
180
|
+
continue;
|
|
181
|
+
result = { ...result, ...answer };
|
|
182
|
+
if (answer.refuse !== undefined || answer.result !== undefined)
|
|
183
|
+
return result;
|
|
184
|
+
latest = withAnswer(latest, answer);
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
report(error);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return result;
|
|
191
|
+
}
|
|
192
|
+
export function answerOf(event, answer) {
|
|
193
|
+
if (typeof answer !== 'object' || answer === null)
|
|
194
|
+
return undefined;
|
|
195
|
+
const given = answer;
|
|
196
|
+
const allowed = {
|
|
197
|
+
prompt: ['text', 'refuse'],
|
|
198
|
+
note: ['text'],
|
|
199
|
+
skill: ['text'],
|
|
200
|
+
document: ['text', 'refuse'],
|
|
201
|
+
reply: ['text'],
|
|
202
|
+
toolCall: ['input', 'result', 'refuse'],
|
|
203
|
+
toolResult: ['text'],
|
|
204
|
+
notice: ['text'],
|
|
205
|
+
taskStart: ['owner', 'refuse'],
|
|
206
|
+
taskEnd: ['refuse'],
|
|
207
|
+
turnEnd: ['refuse'],
|
|
208
|
+
contextEnd: ['refuse'],
|
|
209
|
+
};
|
|
210
|
+
const unread = Object.keys(given).filter((key) => !allowed[event].includes(key));
|
|
211
|
+
if (unread.length > 0)
|
|
212
|
+
throw new Error(`a before(${event}) listener answered ${unread.join(' and ')}, which ${event} does not take. It takes ${allowed[event].map((key) => `{ ${key} }`).join(', ')}.`);
|
|
213
|
+
return given;
|
|
214
|
+
}
|
package/runtime/claude.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AgentInfo, AgentSpawnArgs, AgentSpawnResult, Args, EngineInterface, AskOptions, CommandSpec, ConfigRow, ElementTable, FsEntry, FsStat, FsStatOptions, HookStream, HttpInit, HttpResponse, InvalidatableEventName, PaneCloseArgs, PaneOpenArgs, ProcessRunInit, ProcessRunResult, ProcessSpawnChunk, ProcessSpawnRequest, ProcessSpawnResult, RenderSurface, ResolveInput, SessionUsage, Settings, SettingsReadArgs, Timer, ToolSpec, UiCopyArgs, UiCopyResult, UiLogOptions, UiOpenResult, UiPane, UiScrollArgs, UiScrollResult } from 'claude-code';
|
|
1
|
+
import type { AgentInfo, AgentSpawnArgs, AgentSpawnResult, Args, EngineInterface, AskOptions, CommandSpec, ConfigRow, ElementTable, FsEntry, FsStat, FsStatOptions, HookStream, HttpInit, HttpResponse, InvalidatableEventName, PaneCloseArgs, PaneOpenArgs, ProcessRunInit, ProcessRunResult, ProcessSpawnChunk, ProcessSpawnRequest, ProcessSpawnResult, RenderSurface, ResolveInput, SessionUsage, Settings, SettingsReadArgs, Timer, ToolSpec, UiCopyArgs, UiFocusArgs, UiFocusResult, UiCopyResult, UiLogOptions, UiOpenResult, UiPane, UiScrollArgs, UiScrollResult } from 'claude-code';
|
|
2
2
|
export type Claude = {
|
|
3
3
|
readonly plugin: {
|
|
4
4
|
readonly name: string;
|
|
@@ -15,6 +15,7 @@ export type Claude = {
|
|
|
15
15
|
panes(): Promise<readonly UiPane[]>;
|
|
16
16
|
scroll(args: UiScrollArgs): Promise<UiScrollResult>;
|
|
17
17
|
copy(args: UiCopyArgs): Promise<UiCopyResult>;
|
|
18
|
+
focus(args: UiFocusArgs): Promise<UiFocusResult>;
|
|
18
19
|
resolve(e: ResolveInput): ElementTable<RenderSurface>;
|
|
19
20
|
};
|
|
20
21
|
readonly process: {
|
package/runtime/claude.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../src/runtime/claude.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../src/runtime/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ export type Conversations = {
|
|
|
5
5
|
answer(e: Frozen<Args<'cmod.call'>> & {
|
|
6
6
|
readonly caller?: string;
|
|
7
7
|
}): Promise<EventResult<'cmod.call'> | undefined>;
|
|
8
|
+
moved(): void;
|
|
8
9
|
};
|
|
9
10
|
export declare function serveConversations({ claude, router, store, project, report }: {
|
|
10
11
|
readonly claude: Claude;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../src/runtime/conversations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../src/runtime/conversations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAY5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AA2BzC,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,CAAA;IAClH,KAAK,IAAI,IAAI,CAAA;CACd,CAAA;AAED,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CAAE,GAAG,aAAa,CAugBlR"}
|