@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.
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TuiRuntime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TuiRuntime.js","sourceRoot":"","sources":["../../src/core/TuiRuntime.ts"],"names":[],"mappings":""}
@@ -1,4 +1,4 @@
1
- import type { Mode, NoticeTone } from './appState.js';
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
- notify(text: string, tone?: NoticeTone): void;
10
- setMode(mode: Mode): void;
11
- /** Persist `mode` as the current profile's default (profile.toml) and apply it now. */
12
- setDefaultMode(mode: Mode): void;
13
- newSession(): void;
14
- clear(): void;
15
- stop(): void;
16
- steer(text: string): void;
17
- exit(): void;
18
- setThink(on: boolean): void;
19
- openModelPicker(): void;
20
- openProfilePicker(): void;
21
- selectProfile(name: string): void;
22
- openSkills(scope?: 'global' | 'profile'): void;
23
- showPermissions(): void;
24
- showHelp(): void;
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,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9C,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,uFAAuF;IACvF,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IACjC,UAAU,IAAI,IAAI,CAAC;IACnB,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,IAAI,IAAI,CAAC;IACb,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,eAAe,IAAI,IAAI,CAAC;IACxB,iBAAiB,IAAI,IAAI,CAAC;IAC1B,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC;IAC/C,eAAe,IAAI,IAAI,CAAC;IACxB,QAAQ,IAAI,IAAI,CAAC;IACjB,UAAU,IAAI,IAAI,CAAC;IACnB,8EAA8E;IAC9E,eAAe,IAAI,IAAI,CAAC;IACxB,QAAQ,IAAI,IAAI,CAAC;IACjB,iFAAiF;IACjF,SAAS,IAAI,IAAI,CAAC;IAClB,oEAAoE;IACpE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,YAAY,IAAI,IAAI,CAAC;IACrB,SAAS,IAAI,IAAI,CAAC;IAClB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,+CAA+C;IAC/C,iBAAiB,IAAI,IAAI,CAAC;IAC1B,mFAAmF;IACnF,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,kFAAkF;IAClF,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,sDAAsD;IACtD,UAAU,IAAI,IAAI,CAAC;IACnB,8EAA8E;IAC9E,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AA8KD,wBAAgB,YAAY,IAAI,WAAW,EAAE,CAE5C;AAED,4EAA4E;AAC5E,wBAAgB,sBAAsB,IAAI,iBAAiB,EAAE,CAQ5D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAEjE;AAED;yBACyB;AACzB,wBAAgB,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAKnF"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":"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"}
@@ -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, mode, model, thinking, and session.', run: ctx => ctx.showStatus() },
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 skills: /skills (this profile) or /skills --global.',
89
- run: (ctx, args) => ctx.openSkills(args.trim() === '--global' ? 'global' : 'profile'),
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 a skill: /install-skill [--global] <path|url>.',
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.installSkill(arg);
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
- spec.run(ctx, args);
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":"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"}
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 (or chat in `/chat` mode).
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;
@@ -1 +1 @@
1
- {"version":3,"file":"runTui.d.ts","sourceRoot":"","sources":["../src/runTui.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAA4C,MAAM,gBAAgB,CAAC;AAgBrG,MAAM,WAAW,aAAa;IAC5B,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,CAuGlE"}
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 chat` or `marifold agent "<objective>"` for non-interactive use.\n');
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
- mode: settings.mode,
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,