@marifold/tui 0.67.0 → 0.70.5
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/dist/core/RemoteRuntime.d.ts +38 -0
- package/dist/core/RemoteRuntime.d.ts.map +1 -0
- package/dist/core/RemoteRuntime.js +131 -0
- package/dist/core/RemoteRuntime.js.map +1 -0
- package/dist/core/TuiRuntime.d.ts +11 -0
- package/dist/core/TuiRuntime.d.ts.map +1 -0
- package/dist/core/TuiRuntime.js +2 -0
- package/dist/core/TuiRuntime.js.map +1 -0
- package/dist/core/commands.d.ts +35 -36
- package/dist/core/commands.d.ts.map +1 -1
- package/dist/core/commands.js +50 -30
- package/dist/core/commands.js.map +1 -1
- package/dist/core/inputGrammar.d.ts +1 -1
- package/dist/runTui.d.ts +2 -0
- package/dist/runTui.d.ts.map +1 -1
- package/dist/runTui.js +18 -2
- package/dist/runTui.js.map +1 -1
- package/dist/ui/App.d.ts +6 -3
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +171 -79
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/Header.js +1 -1
- package/dist/ui/Header.js.map +1 -1
- package/dist/ui/InputBox.js +1 -1
- package/dist/ui/InputBox.js.map +1 -1
- package/dist/ui/StatusLine.js +2 -2
- package/dist/ui/StatusLine.js.map +1 -1
- package/dist/ui/WorkspaceShell.d.ts +14 -0
- package/dist/ui/WorkspaceShell.d.ts.map +1 -0
- package/dist/ui/WorkspaceShell.js +176 -0
- package/dist/ui/WorkspaceShell.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type ApiClientOptions, type ApiClient } from '@marifold/client';
|
|
2
|
+
import type { AgentEvent, AgentRunOptions, LoadedMarifoldConfig } from '@marifold/core';
|
|
3
|
+
import type { TuiRuntime } from './TuiRuntime.js';
|
|
4
|
+
export declare class RemoteRuntime implements TuiRuntime {
|
|
5
|
+
readonly api: ApiClient;
|
|
6
|
+
private snapshot;
|
|
7
|
+
loadedConfig: LoadedMarifoldConfig;
|
|
8
|
+
constructor(options: ApiClientOptions);
|
|
9
|
+
refresh(): Promise<void>;
|
|
10
|
+
private call;
|
|
11
|
+
private mutate;
|
|
12
|
+
private entry;
|
|
13
|
+
listProfiles: TuiRuntime['listProfiles'];
|
|
14
|
+
getProfile: TuiRuntime['getProfile'];
|
|
15
|
+
resolveSettings: TuiRuntime['resolveSettings'];
|
|
16
|
+
resolveAgentConfigForProfile: TuiRuntime['resolveAgentConfigForProfile'];
|
|
17
|
+
listSkills: TuiRuntime['listSkills'];
|
|
18
|
+
getSkill: TuiRuntime['getSkill'];
|
|
19
|
+
listSessions: TuiRuntime['listSessions'];
|
|
20
|
+
getSession: TuiRuntime['getSession'];
|
|
21
|
+
setProfileAgentApproval: TuiRuntime['setProfileAgentApproval'];
|
|
22
|
+
addProfileTrustedFolder: TuiRuntime['addProfileTrustedFolder'];
|
|
23
|
+
migrateProfileInstructions: TuiRuntime['migrateProfileInstructions'];
|
|
24
|
+
installSkillFromText: TuiRuntime['installSkillFromText'];
|
|
25
|
+
installSkillFromFile: TuiRuntime['installSkillFromFile'];
|
|
26
|
+
removeSkill: TuiRuntime['removeSkill'];
|
|
27
|
+
rememberMemory: TuiRuntime['rememberMemory'];
|
|
28
|
+
forgetMemories: TuiRuntime['forgetMemories'];
|
|
29
|
+
deleteMemories: TuiRuntime['deleteMemories'];
|
|
30
|
+
setProfileMaxContextTokens: TuiRuntime['setProfileMaxContextTokens'];
|
|
31
|
+
compactSession: TuiRuntime['compactSession'];
|
|
32
|
+
createAgentRunner(): {
|
|
33
|
+
run: (options: AgentRunOptions) => AsyncGenerator<AgentEvent, void, unknown>;
|
|
34
|
+
};
|
|
35
|
+
private run;
|
|
36
|
+
stream: TuiRuntime['stream'];
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=RemoteRuntime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoteRuntime.d.ts","sourceRoot":"","sources":["../../src/core/RemoteRuntime.ts"],"names":[],"mappings":"AACA,OAAO,EAAoC,KAAK,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE3G,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,oBAAoB,EAOrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQlD,qBAAa,aAAc,YAAW,UAAU;IAC9C,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAkB;IAClC,YAAY,EAAG,oBAAoB,CAAC;IACpC,YAAY,OAAO,EAAE,gBAAgB,EAEpC;IACK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAW7B;YACa,IAAI;YAGJ,MAAM;IAKpB,OAAO,CAAC,KAAK;IAKb,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,CAA6C;IACrF,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAqC;IACzE,eAAe,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAQ5C;IACF,4BAA4B,EAAE,UAAU,CAAC,8BAA8B,CAAC,CAAoC;IAC5G,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAkE;IACtG,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,CAA4E;IAC5G,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,CAM3B;IACb,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAMxB;IACZ,uBAAuB,EAAE,UAAU,CAAC,yBAAyB,CAAC,CACH;IAC3D,uBAAuB,EAAE,UAAU,CAAC,yBAAyB,CAAC,CACV;IACpD,0BAA0B,EAAE,UAAU,CAAC,4BAA4B,CAAC,CACtB;IAC9C,oBAAoB,EAAE,UAAU,CAAC,sBAAsB,CAAC,CAII;IAC5D,oBAAoB,EAAE,UAAU,CAAC,sBAAsB,CAAC,CACmB;IAC3E,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC,CAIqB;IAC3D,cAAc,EAAE,UAAU,CAAC,gBAAgB,CAAC,CACmB;IAC/D,cAAc,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAwE;IACpH,cAAc,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAwE;IACpH,0BAA0B,EAAE,UAAU,CAAC,4BAA4B,CAAC,CACE;IACtE,cAAc,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAKxC;IACJ,iBAAiB;QACN,GAAG,YAAY,eAAe;MACxC;YACc,GAAG;IAqClB,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAsBf;CACd"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import { createApiClient, followRunEvents } from '@marifold/client';
|
|
3
|
+
import { prepareImageInputs } from '@marifold/core';
|
|
4
|
+
export class RemoteRuntime {
|
|
5
|
+
api;
|
|
6
|
+
snapshot = [];
|
|
7
|
+
loadedConfig;
|
|
8
|
+
constructor(options) {
|
|
9
|
+
this.api = createApiClient(options);
|
|
10
|
+
}
|
|
11
|
+
async refresh() {
|
|
12
|
+
const [snapshot, config] = await Promise.all([
|
|
13
|
+
this.call('snapshot', {}),
|
|
14
|
+
this.api.request('GET', '/v1/config'),
|
|
15
|
+
]);
|
|
16
|
+
this.snapshot = snapshot;
|
|
17
|
+
this.loadedConfig = {
|
|
18
|
+
config: config.config,
|
|
19
|
+
foundConfig: true,
|
|
20
|
+
configPath: '(workspace host)',
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
async call(operation, input) {
|
|
24
|
+
return (await this.api.request('POST', `/v1/terminal/${operation}`, input)).result;
|
|
25
|
+
}
|
|
26
|
+
async mutate(operation, input) {
|
|
27
|
+
const result = await this.call(operation, input);
|
|
28
|
+
await this.refresh();
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
entry(profile) {
|
|
32
|
+
const p = this.snapshot.find((e) => e.summary.name === (profile ?? this.loadedConfig.config.default.profile));
|
|
33
|
+
if (!p)
|
|
34
|
+
throw new Error('Profile not found.');
|
|
35
|
+
return p;
|
|
36
|
+
}
|
|
37
|
+
listProfiles = () => this.snapshot.map((e) => e.summary);
|
|
38
|
+
getProfile = (name) => this.entry(name).detail;
|
|
39
|
+
resolveSettings = (request) => {
|
|
40
|
+
const s = this.entry(request.profile).settings;
|
|
41
|
+
if (!s)
|
|
42
|
+
throw new Error('Profile has no configured model.');
|
|
43
|
+
return {
|
|
44
|
+
...s,
|
|
45
|
+
...(request.provider ? { provider: request.provider } : {}),
|
|
46
|
+
...(request.model ? { model: request.model } : {}),
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
resolveAgentConfigForProfile = (name) => this.entry(name).agent;
|
|
50
|
+
listSkills = (profile, scope) => this.entry(profile).skills[scope ?? 'all'];
|
|
51
|
+
getSkill = (name, profile) => this.listSkills(profile).find((s) => s.name === name);
|
|
52
|
+
listSessions = async (limit = 20, profile) => (await this.api.request('GET', `/v1/sessions?limit=${limit}${profile ? `&profile=${encodeURIComponent(profile)}` : ''}`)).sessions;
|
|
53
|
+
getSession = async (id) => (await this.api.request('GET', `/v1/sessions/${encodeURIComponent(id)}`)).session;
|
|
54
|
+
setProfileAgentApproval = (profile, kind, mode) => this.mutate('profile.approval', { profile, kind, mode });
|
|
55
|
+
addProfileTrustedFolder = (profile, folder) => this.mutate('profile.trust', { profile, folder });
|
|
56
|
+
migrateProfileInstructions = (profile) => this.mutate('profile.migrate', { profile });
|
|
57
|
+
installSkillFromText = (text, scope = 'global', profile = this.loadedConfig.config.default.profile) => this.mutate('skill.install', { text, scope, profile });
|
|
58
|
+
installSkillFromFile = (file, scope, profile) => this.installSkillFromText(fs.readFileSync(file, 'utf8'), scope, profile);
|
|
59
|
+
removeSkill = (name, profile = this.loadedConfig.config.default.profile, scope = 'global') => this.mutate('skill.remove', { name, profile, scope });
|
|
60
|
+
rememberMemory = (profile, _kind, text, sessionId) => this.mutate('memory.remember', { profile, text, sessionId });
|
|
61
|
+
forgetMemories = (profile, query) => this.mutate('memory.forget', { profile, query });
|
|
62
|
+
deleteMemories = (profile, query) => this.mutate('memory.delete', { profile, query });
|
|
63
|
+
setProfileMaxContextTokens = (profile, tokens) => this.mutate('profile.context', { profile, tokens: tokens ?? null });
|
|
64
|
+
compactSession = async (id, input) => await this.api.request('POST', `/v1/sessions/${encodeURIComponent(id)}/compact`, input);
|
|
65
|
+
createAgentRunner() {
|
|
66
|
+
return { run: (options) => this.run(options) };
|
|
67
|
+
}
|
|
68
|
+
async *run(options) {
|
|
69
|
+
const { signal, approvalHandler, userInputHandler, steering, ...input } = options;
|
|
70
|
+
if (signal?.aborted)
|
|
71
|
+
return;
|
|
72
|
+
if (input.images?.length)
|
|
73
|
+
input.images = (await prepareImageInputs(input.images)).images;
|
|
74
|
+
const { run } = await this.api.request('POST', '/v1/runs', input);
|
|
75
|
+
const post = (suffix, body) => this.api.request('POST', `/v1/runs/${run.id}/${suffix}`, body);
|
|
76
|
+
const cancel = () => {
|
|
77
|
+
void post('cancel', {}).catch(() => undefined);
|
|
78
|
+
};
|
|
79
|
+
signal?.addEventListener('abort', cancel, { once: true });
|
|
80
|
+
if (signal?.aborted)
|
|
81
|
+
cancel();
|
|
82
|
+
const failures = [];
|
|
83
|
+
const report = (error) => {
|
|
84
|
+
failures.push(error instanceof Error ? error.message : String(error));
|
|
85
|
+
};
|
|
86
|
+
const timer = setInterval(() => {
|
|
87
|
+
for (const text of steering?.() ?? [])
|
|
88
|
+
void post('steer', { text }).catch(report);
|
|
89
|
+
}, 500);
|
|
90
|
+
try {
|
|
91
|
+
for await (const event of followRunEvents(this.api, run.id, signal)) {
|
|
92
|
+
for (const message of failures.splice(0))
|
|
93
|
+
yield { type: 'error', code: 'WORKSPACE_INTERACTION_FAILED', message };
|
|
94
|
+
yield event;
|
|
95
|
+
if (event.type === 'approval_request')
|
|
96
|
+
void Promise.resolve(approvalHandler?.(event.request))
|
|
97
|
+
.then((decision) => post(`approvals/${event.request.id}`, { action: decision?.approved ? 'once' : 'deny' }))
|
|
98
|
+
.catch(report);
|
|
99
|
+
if (event.type === 'user_input_request')
|
|
100
|
+
void Promise.resolve(userInputHandler?.(event.request))
|
|
101
|
+
.then((submission) => post(`inputs/${event.request.id}`, submission ?? { skipped: true }))
|
|
102
|
+
.catch(report);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
clearInterval(timer);
|
|
107
|
+
signal?.removeEventListener('abort', cancel);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
stream = async function* (request, onSummary, onReasoning) {
|
|
111
|
+
for await (const event of this.run({
|
|
112
|
+
objective: request.prompt,
|
|
113
|
+
profile: request.profile,
|
|
114
|
+
provider: request.provider,
|
|
115
|
+
model: request.model,
|
|
116
|
+
sessionId: request.sessionId,
|
|
117
|
+
images: request.images,
|
|
118
|
+
think: request.think,
|
|
119
|
+
lean: true,
|
|
120
|
+
instructions: request.instructions,
|
|
121
|
+
userTurn: request.userTurn,
|
|
122
|
+
signal: request.signal,
|
|
123
|
+
})) {
|
|
124
|
+
if (event.type === 'text')
|
|
125
|
+
yield event.text;
|
|
126
|
+
if (event.type === 'reasoning')
|
|
127
|
+
onReasoning?.(event.summary);
|
|
128
|
+
}
|
|
129
|
+
}.bind(this);
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=RemoteRuntime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoteRuntime.js","sourceRoot":"","sources":["../../src/core/RemoteRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AgentRunner, MarifoldRuntime } from '@marifold/core';
|
|
2
|
+
type Reads = 'listProfiles' | 'listSkills' | 'getProfile' | 'getSkill' | 'resolveSettings' | 'resolveAgentConfigForProfile' | 'stream';
|
|
3
|
+
type AsyncMethods = 'listSessions' | 'getSession' | 'setProfileAgentApproval' | 'addProfileTrustedFolder' | 'migrateProfileInstructions' | 'installSkillFromText' | 'installSkillFromFile' | 'rememberMemory' | 'forgetMemories' | 'deleteMemories' | 'setProfileMaxContextTokens' | 'compactSession' | 'removeSkill';
|
|
4
|
+
export type TuiRuntime = Pick<MarifoldRuntime, Reads> & {
|
|
5
|
+
[K in AsyncMethods]: (...args: Parameters<MarifoldRuntime[K]>) => ReturnType<MarifoldRuntime[K]> | Promise<Awaited<ReturnType<MarifoldRuntime[K]>>>;
|
|
6
|
+
} & {
|
|
7
|
+
createAgentRunner(profile?: string): Pick<AgentRunner, 'run'>;
|
|
8
|
+
refresh?: () => Promise<void>;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=TuiRuntime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TuiRuntime.d.ts","sourceRoot":"","sources":["../../src/core/TuiRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACnE,KAAK,KAAK,GACN,cAAc,GACd,YAAY,GACZ,YAAY,GACZ,UAAU,GACV,iBAAiB,GACjB,8BAA8B,GAC9B,QAAQ,CAAC;AACb,KAAK,YAAY,GACb,cAAc,GACd,YAAY,GACZ,yBAAyB,GACzB,yBAAyB,GACzB,4BAA4B,GAC5B,sBAAsB,GACtB,sBAAsB,GACtB,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,4BAA4B,GAC5B,gBAAgB,GAChB,aAAa,CAAC;AAClB,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,GAAG;KACrD,CAAC,IAAI,YAAY,GAAG,CACnB,GAAG,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KACpC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACvF,GAAG;IAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TuiRuntime.js","sourceRoot":"","sources":["../../src/core/TuiRuntime.ts"],"names":[],"mappings":""}
|
package/dist/core/commands.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { NoticeTone } from './appState.js';
|
|
2
2
|
/**
|
|
3
3
|
* Operations a `/command` can perform. The App implements this against the
|
|
4
4
|
* live runtime and dispatcher; tests pass a fake to assert dispatch. Commands
|
|
@@ -6,55 +6,54 @@ import type { Mode, NoticeTone } from './appState.js';
|
|
|
6
6
|
* separates `/command` (code) from `$skill` (model-backed).
|
|
7
7
|
*/
|
|
8
8
|
export interface CommandContext {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
showStatus(): void;
|
|
9
|
+
workspace?(args: string): void | Promise<void>;
|
|
10
|
+
device?(args: string): void | Promise<void>;
|
|
11
|
+
notify(text: string, tone?: NoticeTone): void | Promise<void>;
|
|
12
|
+
newSession(): void | Promise<void>;
|
|
13
|
+
clear(): void | Promise<void>;
|
|
14
|
+
stop(): void | Promise<void>;
|
|
15
|
+
steer(text: string): void | Promise<void>;
|
|
16
|
+
exit(): void | Promise<void>;
|
|
17
|
+
setThink(on: boolean): void | Promise<void>;
|
|
18
|
+
openModelPicker(): void | Promise<void>;
|
|
19
|
+
openProfilePicker(): void | Promise<void>;
|
|
20
|
+
selectProfile(name: string): void | Promise<void>;
|
|
21
|
+
openSkills(scope?: 'global' | 'profile', profile?: string): void | Promise<void>;
|
|
22
|
+
showPermissions(): void | Promise<void>;
|
|
23
|
+
showHelp(): void | Promise<void>;
|
|
24
|
+
showStatus(): void | Promise<void>;
|
|
26
25
|
/** Arm a one-shot forced plan for the next message (toggles off if armed). */
|
|
27
|
-
toggleForcePlan(): void
|
|
28
|
-
copyLast(): void
|
|
26
|
+
toggleForcePlan(): void | Promise<void>;
|
|
27
|
+
copyLast(): void | Promise<void>;
|
|
29
28
|
/** Re-run the last plain-text message through the current profile/model/mode. */
|
|
30
|
-
retryLast(): void
|
|
29
|
+
retryLast(): void | Promise<void>;
|
|
31
30
|
/** Send one prompt with attached images preserved byte-for-byte. */
|
|
32
|
-
sendOriginal(text: string): void
|
|
33
|
-
showSessions(): void
|
|
34
|
-
runDoctor(): void
|
|
35
|
-
installSkill(arg: string): void
|
|
36
|
-
readFile(path: string): void
|
|
37
|
-
setImage(arg: string): void
|
|
38
|
-
remember(text: string): void
|
|
39
|
-
forget(query: string): void
|
|
40
|
-
deleteMemory(query: string): void
|
|
31
|
+
sendOriginal(text: string): void | Promise<void>;
|
|
32
|
+
showSessions(): void | Promise<void>;
|
|
33
|
+
runDoctor(fix?: boolean): void | Promise<void>;
|
|
34
|
+
installSkill(arg: string): void | Promise<void>;
|
|
35
|
+
readFile(path: string): void | Promise<void>;
|
|
36
|
+
setImage(arg: string): void | Promise<void>;
|
|
37
|
+
remember(text: string): void | Promise<void>;
|
|
38
|
+
forget(query: string): void | Promise<void>;
|
|
39
|
+
deleteMemory(query: string): void | Promise<void>;
|
|
41
40
|
/** Show the current context budget + usage. */
|
|
42
|
-
showContextWindow(): void
|
|
41
|
+
showContextWindow(): void | Promise<void>;
|
|
43
42
|
/** Set the context budget for this session (tokens), or 0/undefined to disable. */
|
|
44
|
-
setContextWindow(tokens?: number): void
|
|
43
|
+
setContextWindow(tokens?: number): void | Promise<void>;
|
|
45
44
|
/** Persist the context budget as the current profile's default (profile.toml). */
|
|
46
|
-
setDefaultContextWindow(tokens?: number): void
|
|
45
|
+
setDefaultContextWindow(tokens?: number): void | Promise<void>;
|
|
47
46
|
/** Compact the current session now (model-backed). */
|
|
48
|
-
compactNow(): void
|
|
47
|
+
compactNow(): void | Promise<void>;
|
|
49
48
|
/** Trust a folder for the active profile — file writes there won't prompt. */
|
|
50
|
-
trustFolder(path: string): void
|
|
49
|
+
trustFolder(path: string): void | Promise<void>;
|
|
51
50
|
}
|
|
52
51
|
export interface CommandSpec {
|
|
53
52
|
name: string;
|
|
54
53
|
/** Alternate invocations (e.g. quit → exit). */
|
|
55
54
|
aliases?: string[];
|
|
56
55
|
summary: string;
|
|
57
|
-
run(ctx: CommandContext, args: string): void
|
|
56
|
+
run(ctx: CommandContext, args: string): void | Promise<void>;
|
|
58
57
|
}
|
|
59
58
|
export interface CommandCompletion {
|
|
60
59
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/core/commands.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
const COMMANDS = [
|
|
2
|
+
{ name: 'workspace', summary: 'List, join, or leave a workspace: /workspace list|join <name|id>|leave.', run: (ctx, args) => ctx.workspace ? ctx.workspace(args) : ctx.notify('Start marifold service before using workspaces.', 'warn') },
|
|
3
|
+
{ name: 'device', summary: 'Show devices or choose tools: /device list|use <host|auto|id>.', run: (ctx, args) => ctx.device ? ctx.device(args) : ctx.notify('Join a workspace before selecting another device.', 'warn') },
|
|
2
4
|
{ name: 'help', summary: 'List commands and input syntax.', run: ctx => ctx.showHelp() },
|
|
3
|
-
{ name: 'status', summary: 'Show profile,
|
|
5
|
+
{ name: 'status', summary: 'Show profile, model, thinking, and session.', run: ctx => ctx.showStatus() },
|
|
4
6
|
{ name: 'copy', summary: "Copy the last response's original text to the clipboard.", run: ctx => ctx.copyLast() },
|
|
5
7
|
{ name: 'retry', aliases: ['regenerate'], summary: 'Re-run your last message (e.g. after /model to compare).', run: ctx => ctx.retryLast() },
|
|
6
8
|
{
|
|
@@ -11,21 +13,11 @@ const COMMANDS = [
|
|
|
11
13
|
if (!text)
|
|
12
14
|
ctx.notify('Usage: /attach-original <prompt>', 'warn');
|
|
13
15
|
else
|
|
14
|
-
ctx.sendOriginal(text);
|
|
16
|
+
return ctx.sendOriginal(text);
|
|
15
17
|
},
|
|
16
18
|
},
|
|
17
19
|
{ name: 'exit', aliases: ['quit'], summary: 'Leave the TUI.', run: ctx => ctx.exit() },
|
|
18
20
|
{ name: 'new', summary: 'Start a fresh session (clear transcript).', run: ctx => ctx.newSession() },
|
|
19
|
-
{
|
|
20
|
-
name: 'agent',
|
|
21
|
-
summary: 'Agent mode: /agent (this session) or /agent default (save to profile).',
|
|
22
|
-
run: (ctx, args) => (args.trim() === 'default' ? ctx.setDefaultMode('agent') : ctx.setMode('agent')),
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
name: 'chat',
|
|
26
|
-
summary: 'Chat mode: /chat (this session) or /chat default (save to profile).',
|
|
27
|
-
run: (ctx, args) => (args.trim() === 'default' ? ctx.setDefaultMode('chat') : ctx.setMode('chat')),
|
|
28
|
-
},
|
|
29
21
|
{ name: 'clear', summary: 'Clear the transcript.', run: ctx => ctx.clear() },
|
|
30
22
|
{ name: 'steps', summary: 'Force a step-by-step plan on your next message (one-shot).', run: ctx => ctx.toggleForcePlan() },
|
|
31
23
|
{ name: 'stop', summary: 'Cancel the running task.', run: ctx => ctx.stop() },
|
|
@@ -37,7 +29,7 @@ const COMMANDS = [
|
|
|
37
29
|
if (!text)
|
|
38
30
|
ctx.notify('Usage: /btw <text>', 'warn');
|
|
39
31
|
else
|
|
40
|
-
ctx.steer(text);
|
|
32
|
+
return ctx.steer(text);
|
|
41
33
|
},
|
|
42
34
|
},
|
|
43
35
|
{ name: 'model', summary: 'Pick the active model.', run: ctx => ctx.openModelPicker() },
|
|
@@ -47,9 +39,9 @@ const COMMANDS = [
|
|
|
47
39
|
run: (ctx, args) => {
|
|
48
40
|
const name = args.trim();
|
|
49
41
|
if (name)
|
|
50
|
-
ctx.selectProfile(name);
|
|
42
|
+
return ctx.selectProfile(name);
|
|
51
43
|
else
|
|
52
|
-
ctx.openProfilePicker();
|
|
44
|
+
return ctx.openProfilePicker();
|
|
53
45
|
},
|
|
54
46
|
},
|
|
55
47
|
{
|
|
@@ -68,7 +60,7 @@ const COMMANDS = [
|
|
|
68
60
|
else if (value === 'off')
|
|
69
61
|
ctx.setThink(false);
|
|
70
62
|
else
|
|
71
|
-
ctx.notify('Usage: /think on|off', 'warn');
|
|
63
|
+
return ctx.notify('Usage: /think on|off', 'warn');
|
|
72
64
|
},
|
|
73
65
|
},
|
|
74
66
|
{ name: 'permissions', summary: 'Show approval modes and active session grants.', run: ctx => ctx.showPermissions() },
|
|
@@ -80,26 +72,49 @@ const COMMANDS = [
|
|
|
80
72
|
if (!target)
|
|
81
73
|
ctx.notify('Usage: /trust-folder <path>', 'warn');
|
|
82
74
|
else
|
|
83
|
-
ctx.trustFolder(target);
|
|
75
|
+
return ctx.trustFolder(target);
|
|
84
76
|
},
|
|
85
77
|
},
|
|
86
78
|
{
|
|
87
79
|
name: 'skills',
|
|
88
|
-
summary: 'Manage
|
|
89
|
-
run: (ctx, args) =>
|
|
80
|
+
summary: 'Manage global skills, or use /skills --profile <name>.',
|
|
81
|
+
run: (ctx, args) => {
|
|
82
|
+
const value = args.trim();
|
|
83
|
+
if (!value || value === '--global' || value === '-g') {
|
|
84
|
+
ctx.openSkills('global');
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const match = /^--profile\s+([A-Za-z0-9_-]+)$/.exec(value);
|
|
88
|
+
if (match)
|
|
89
|
+
ctx.openSkills('profile', match[1]);
|
|
90
|
+
else
|
|
91
|
+
return ctx.notify('Usage: /skills [--profile <name>]', 'warn');
|
|
92
|
+
},
|
|
90
93
|
},
|
|
91
94
|
{
|
|
92
95
|
name: 'install-skill',
|
|
93
|
-
summary: 'Install
|
|
96
|
+
summary: 'Install globally, or use /install-skill --profile <name> <path|url>.',
|
|
94
97
|
run: (ctx, args) => {
|
|
95
98
|
const arg = args.trim();
|
|
96
99
|
if (!arg)
|
|
97
|
-
ctx.notify('Usage: /install-skill <path>', 'warn');
|
|
100
|
+
ctx.notify('Usage: /install-skill [--profile <name>] <path|url>', 'warn');
|
|
101
|
+
else
|
|
102
|
+
return ctx.installSkill(arg);
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: 'doctor',
|
|
107
|
+
summary: 'Check health; /doctor --fix migrates this profile\'s legacy instructions.',
|
|
108
|
+
run: (ctx, args) => {
|
|
109
|
+
const value = args.trim();
|
|
110
|
+
if (!value)
|
|
111
|
+
return ctx.runDoctor(false);
|
|
112
|
+
else if (value === '--fix')
|
|
113
|
+
return ctx.runDoctor(true);
|
|
98
114
|
else
|
|
99
|
-
ctx.
|
|
115
|
+
return ctx.notify('Usage: /doctor [--fix]', 'warn');
|
|
100
116
|
},
|
|
101
117
|
},
|
|
102
|
-
{ name: 'doctor', summary: 'Check provider/model health.', run: ctx => ctx.runDoctor() },
|
|
103
118
|
{
|
|
104
119
|
name: 'read',
|
|
105
120
|
summary: 'Read a file into context: /read <path>.',
|
|
@@ -108,7 +123,7 @@ const COMMANDS = [
|
|
|
108
123
|
if (!file)
|
|
109
124
|
ctx.notify('Usage: /read <path>', 'warn');
|
|
110
125
|
else
|
|
111
|
-
ctx.readFile(file);
|
|
126
|
+
return ctx.readFile(file);
|
|
112
127
|
},
|
|
113
128
|
},
|
|
114
129
|
{
|
|
@@ -124,7 +139,7 @@ const COMMANDS = [
|
|
|
124
139
|
if (!text)
|
|
125
140
|
ctx.notify('Usage: /remember <text>', 'warn');
|
|
126
141
|
else
|
|
127
|
-
ctx.remember(text);
|
|
142
|
+
return ctx.remember(text);
|
|
128
143
|
},
|
|
129
144
|
},
|
|
130
145
|
{
|
|
@@ -135,7 +150,7 @@ const COMMANDS = [
|
|
|
135
150
|
if (!query)
|
|
136
151
|
ctx.notify('Usage: /forget <query>', 'warn');
|
|
137
152
|
else
|
|
138
|
-
ctx.forget(query);
|
|
153
|
+
return ctx.forget(query);
|
|
139
154
|
},
|
|
140
155
|
},
|
|
141
156
|
{
|
|
@@ -146,7 +161,7 @@ const COMMANDS = [
|
|
|
146
161
|
if (!query)
|
|
147
162
|
ctx.notify('Usage: /delete-memory <query>', 'warn');
|
|
148
163
|
else
|
|
149
|
-
ctx.deleteMemory(query);
|
|
164
|
+
return ctx.deleteMemory(query);
|
|
150
165
|
},
|
|
151
166
|
},
|
|
152
167
|
{
|
|
@@ -169,7 +184,7 @@ const COMMANDS = [
|
|
|
169
184
|
if (toDefault)
|
|
170
185
|
ctx.setDefaultContextWindow(undefined);
|
|
171
186
|
else
|
|
172
|
-
ctx.setContextWindow(undefined);
|
|
187
|
+
return ctx.setContextWindow(undefined);
|
|
173
188
|
return;
|
|
174
189
|
}
|
|
175
190
|
const tokens = parseTokens(raw);
|
|
@@ -180,7 +195,7 @@ const COMMANDS = [
|
|
|
180
195
|
if (toDefault)
|
|
181
196
|
ctx.setDefaultContextWindow(tokens);
|
|
182
197
|
else
|
|
183
|
-
ctx.setContextWindow(tokens);
|
|
198
|
+
return ctx.setContextWindow(tokens);
|
|
184
199
|
},
|
|
185
200
|
},
|
|
186
201
|
{ name: 'compact', summary: 'Compact the current session now (summarize older turns).', run: ctx => ctx.compactNow() },
|
|
@@ -221,7 +236,12 @@ export function runCommand(ctx, name, args) {
|
|
|
221
236
|
const spec = findCommand(name);
|
|
222
237
|
if (!spec)
|
|
223
238
|
return false;
|
|
224
|
-
|
|
239
|
+
try {
|
|
240
|
+
void Promise.resolve(spec.run(ctx, args)).catch(error => ctx.notify(error instanceof Error ? error.message : String(error), 'error'));
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
ctx.notify(error instanceof Error ? error.message : String(error), 'error');
|
|
244
|
+
}
|
|
225
245
|
return true;
|
|
226
246
|
}
|
|
227
247
|
//# sourceMappingURL=commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Classifies a submitted input line into the three TUI primitives:
|
|
3
3
|
* - `/command [args]` → a deterministic, code-executed command (no model).
|
|
4
4
|
* - `$skill [args]` → invoke a model-backed skill (`$<name>` *is* the run).
|
|
5
|
-
* - plain text → talk to the agent
|
|
5
|
+
* - plain text → talk to the agent.
|
|
6
6
|
*
|
|
7
7
|
* Pure and renderer-agnostic so it can be unit-tested without Ink.
|
|
8
8
|
*/
|
package/dist/runTui.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import type { ApiClientOptions } from '@marifold/client';
|
|
1
2
|
import type { LoadedMarifoldConfig } from '@marifold/core';
|
|
2
3
|
export interface RunTuiOptions {
|
|
4
|
+
service?: ApiClientOptions;
|
|
3
5
|
loadedConfig: LoadedMarifoldConfig;
|
|
4
6
|
/** Profile to launch with; defaults to the configured default profile. */
|
|
5
7
|
profile?: string;
|
package/dist/runTui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runTui.d.ts","sourceRoot":"","sources":["../src/runTui.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runTui.d.ts","sourceRoot":"","sources":["../src/runTui.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAKzD,OAAO,KAAK,EAAE,oBAAoB,EAA4C,MAAM,gBAAgB,CAAC;AAgBrG,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,YAAY,EAAE,oBAAoB,CAAC;IACnC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;4BAGwB;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAmHlE"}
|
package/dist/runTui.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { WorkspaceShell } from './ui/WorkspaceShell.js';
|
|
2
3
|
import { readFileSync } from 'fs';
|
|
3
4
|
import { Box, render, Text } from 'ink';
|
|
4
5
|
import { MarifoldRuntime } from '@marifold/core';
|
|
@@ -22,10 +23,23 @@ function readVersion() {
|
|
|
22
23
|
*/
|
|
23
24
|
export async function runTui(options) {
|
|
24
25
|
if (!process.stdout.isTTY) {
|
|
25
|
-
process.stderr.write('The marifold TUI needs an interactive terminal. Use `marifold
|
|
26
|
+
process.stderr.write('The marifold TUI needs an interactive terminal. Use `marifold agent "<objective>"` for non-interactive use.\n');
|
|
26
27
|
process.exitCode = 1;
|
|
27
28
|
return;
|
|
28
29
|
}
|
|
30
|
+
if (options.service) {
|
|
31
|
+
const local = new MarifoldRuntime({ loadedConfig: options.loadedConfig });
|
|
32
|
+
process.stdout.write('\x1b[?2004h');
|
|
33
|
+
try {
|
|
34
|
+
const app = render(_jsx(WorkspaceShell, { local: local, loadedConfig: options.loadedConfig, service: options.service, profile: options.profile, resume: options.resume, version: readVersion() }), { exitOnCtrlC: false });
|
|
35
|
+
await app.waitUntilExit();
|
|
36
|
+
}
|
|
37
|
+
finally {
|
|
38
|
+
process.stdout.write('\x1b[?2004l');
|
|
39
|
+
local.close();
|
|
40
|
+
}
|
|
41
|
+
process.exit(process.exitCode ?? 0);
|
|
42
|
+
}
|
|
29
43
|
// Not initialized yet: no config file. Show one clear hint instead of a
|
|
30
44
|
// pointless profile picker that can't resolve a provider/model anyway.
|
|
31
45
|
if (!options.loadedConfig.foundConfig) {
|
|
@@ -79,7 +93,9 @@ export async function runTui(options) {
|
|
|
79
93
|
provider: settings.provider,
|
|
80
94
|
model: settings.model,
|
|
81
95
|
think: settings.think,
|
|
82
|
-
|
|
96
|
+
// The primary TUI is agent-only. Keep the internal mode machinery for
|
|
97
|
+
// explicit Skill compatibility without exposing a session toggle.
|
|
98
|
+
mode: 'agent',
|
|
83
99
|
cwd: process.cwd(),
|
|
84
100
|
version: readVersion(),
|
|
85
101
|
maxContextTokens: settings.maxContextTokens ?? options.loadedConfig.config.default.maxContextTokens,
|