@undefineds.co/linx 0.3.27 → 0.3.29
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/lib/linx-interactive-command-routing.js +9 -2
- package/dist/lib/linx-interactive-command-routing.js.map +1 -1
- package/dist/lib/linx-interactive-idea-capture.js +294 -0
- package/dist/lib/linx-interactive-idea-capture.js.map +1 -0
- package/dist/lib/linx-interactive-post-init.js +1 -1
- package/dist/lib/linx-interactive-post-init.js.map +1 -1
- package/dist/lib/linx-interactive-shell-state.js +37 -0
- package/dist/lib/linx-interactive-shell-state.js.map +1 -1
- package/dist/lib/linx-interactive-submit-router.js +14 -2
- package/dist/lib/linx-interactive-submit-router.js.map +1 -1
- package/dist/lib/linx-interactive-turn-response-watchdog.js +130 -0
- package/dist/lib/linx-interactive-turn-response-watchdog.js.map +1 -0
- package/dist/lib/linx-interrupt-control.js +21 -1
- package/dist/lib/linx-interrupt-control.js.map +1 -1
- package/dist/lib/linx-session-work-control.js +28 -4
- package/dist/lib/linx-session-work-control.js.map +1 -1
- package/dist/lib/linx-symphony-interactive-command.js +14 -61
- package/dist/lib/linx-symphony-interactive-command.js.map +1 -1
- package/dist/lib/linx-update-notification.js +38 -5
- package/dist/lib/linx-update-notification.js.map +1 -1
- package/dist/lib/shell-lifecycle.js +21 -1
- package/dist/lib/shell-lifecycle.js.map +1 -1
- package/dist/plugins/linx-symphony-codex/.codex-plugin/plugin.json +1 -1
- package/dist/plugins/linx-symphony-codex/skills/symphony/SKILL.md +6 -4
- package/dist/skills/symphony/SKILL.md +6 -4
- package/package.json +1 -1
- package/dist/lib/linx-auto-editor-indicator-host.js +0 -15
- package/dist/lib/linx-auto-editor-indicator-host.js.map +0 -1
- package/dist/lib/linx-auto-editor-indicator.js +0 -56
- package/dist/lib/linx-auto-editor-indicator.js.map +0 -1
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
import { parseLinxShellCommand } from './linx-shell-command-router.js';
|
|
2
|
-
import { installLinxAutoEditorIndicator } from './linx-auto-editor-indicator.js';
|
|
3
2
|
import { registerLinxInteractiveSubmitHandler } from './linx-interactive-submit-router.js';
|
|
4
3
|
import { setLinxInteractiveEditorText } from './linx-interactive-editor-text-host.js';
|
|
5
4
|
import { configureLinxInteractiveShellState, } from './linx-interactive-shell-state.js';
|
|
5
|
+
import { installLinxInteractiveIdeaCapture } from './linx-interactive-idea-capture.js';
|
|
6
|
+
import { installLinxInteractiveTurnResponseWatchdog } from './linx-interactive-turn-response-watchdog.js';
|
|
6
7
|
import { installLinxSessionCommandRouter as installOwnedLinxSessionCommandRouter, installLinxSessionCommandRouterAfterRebind as installOwnedLinxSessionCommandRouterAfterRebind, } from './linx-session-command-routing.js';
|
|
7
8
|
import { isGlobalCommandHandlerInstalled, markGlobalCommandHandlerInstalled, } from './linx-interactive-command-routing-host.js';
|
|
8
9
|
import { installLinxFinalSubmitCommandRouter as installOwnedLinxFinalSubmitCommandRouter, installLinxInputCommandRouter as installOwnedLinxInputCommandRouter, } from './linx-input-command-routing.js';
|
|
9
10
|
import { recordInteractiveSubmittedUserMessage } from './linx-submitted-user-message-recording.js';
|
|
10
11
|
import { executeLinxShellCommand } from './linx-shell-command-executor.js';
|
|
11
12
|
export function installLinxShellCommands(interactive, runtime, sessionCwd, options = {}) {
|
|
12
|
-
|
|
13
|
+
installLinxInteractiveTurnResponseWatchdog(interactive);
|
|
14
|
+
installLinxInteractiveIdeaCapture(interactive, runtime);
|
|
13
15
|
if (options.onAutoControlChange) {
|
|
14
16
|
configureLinxInteractiveShellState(interactive, {
|
|
15
17
|
autoControlChange: options.onAutoControlChange,
|
|
16
18
|
});
|
|
17
19
|
}
|
|
20
|
+
if (options.turnResponsePendingStatusTimeoutMs !== undefined) {
|
|
21
|
+
configureLinxInteractiveShellState(interactive, {
|
|
22
|
+
turnResponsePendingStatusTimeoutMs: options.turnResponsePendingStatusTimeoutMs,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
18
25
|
if (options.handleAiConnectCommand) {
|
|
19
26
|
configureLinxInteractiveShellState(interactive, {
|
|
20
27
|
aiConnectCommand: options.handleAiConnectCommand,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linx-interactive-command-routing.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-command-routing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAyB,MAAM,gCAAgC,CAAA;AAC7F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"linx-interactive-command-routing.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-command-routing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAyB,MAAM,gCAAgC,CAAA;AAC7F,OAAO,EAAE,oCAAoC,EAAE,MAAM,qCAAqC,CAAA;AAC1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAA;AACrF,OAAO,EACL,kCAAkC,GACnC,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAA;AACtF,OAAO,EAAE,0CAA0C,EAAE,MAAM,8CAA8C,CAAA;AACzG,OAAO,EACL,+BAA+B,IAAI,oCAAoC,EACvE,0CAA0C,IAAI,+CAA+C,GAC9F,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,+BAA+B,EAC/B,iCAAiC,GAClC,MAAM,4CAA4C,CAAA;AACnD,OAAO,EACL,mCAAmC,IAAI,wCAAwC,EAC/E,6BAA6B,IAAI,kCAAkC,GACpE,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,qCAAqC,EAAE,MAAM,4CAA4C,CAAA;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAY1E,MAAM,UAAU,wBAAwB,CACtC,WAAgB,EAChB,OAAY,EACZ,UAAkB,EAClB,UAA+B,EAAE;IAEjC,0CAA0C,CAAC,WAAW,CAAC,CAAA;IACvD,iCAAiC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IACvD,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAChC,kCAAkC,CAAC,WAAW,EAAE;YAC9C,iBAAiB,EAAE,OAAO,CAAC,mBAAmB;SAC/C,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,kCAAkC,KAAK,SAAS,EAAE,CAAC;QAC7D,kCAAkC,CAAC,WAAW,EAAE;YAC9C,kCAAkC,EAAE,OAAO,CAAC,kCAAkC;SAC/E,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;QACnC,kCAAkC,CAAC,WAAW,EAAE;YAC9C,gBAAgB,EAAE,OAAO,CAAC,sBAAsB;SACjD,CAAC,CAAA;IACJ,CAAC;IACD,8BAA8B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,wBAAwB,CAAA;AAEjE,SAAS,8BAA8B,CAAC,WAAgB,EAAE,OAAY;IACpE,IAAI,+BAA+B,CAAC,WAAW,CAAC,EAAE,CAAC;QACjD,OAAM;IACR,CAAC;IAED,oCAAoC,CAAC,WAAW,EAAE;QAChD,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,EAAE;QACZ,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE;YAChE,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;YAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,qCAAqC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;gBAC5D,OAAO,KAAK,CAAA;YACd,CAAC;YAED,4BAA4B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YACxC,MAAM,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YACvD,OAAO,IAAI,CAAA;QACb,CAAC;KACF,CAAC,CAAA;IAEF,iCAAiC,CAAC,WAAW,CAAC,CAAA;IAC9C,kCAAkC,CAAC,WAAW,EAAE;QAC9C,sBAAsB,EAAE,KAAK,EAAE,IAAY,EAAqC,EAAE;YAChF,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YAClD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,KAAK,CAAA;YACd,CAAC;YACD,MAAM,uBAAuB,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAC5D,IAAI,OAAO,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;gBACtC,OAAO,cAAc,CAAA;YACvB,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;KACF,CAAC,CAAA;IACF,6BAA6B,CAAC,WAAW,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,WAAgB,EAAE,OAAY;IAC1E,kCAAkC,CAAC,WAAW,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAA;AACnF,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,WAAgB,EAAE,OAAY;IAChF,wCAAwC,CAAC,WAAW,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAA;AACzF,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,WAAgB,EAAE,OAAY;IAC5E,oCAAoC,CAAC,WAAW,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAA;AACrF,CAAC;AAED,MAAM,UAAU,0CAA0C,CAAC,WAAgB,EAAE,OAAY;IACvF,+CAA+C,CAAC,WAAW,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAA;AAChG,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,WAAgB;IAC5D,kCAAkC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;AACrD,CAAC"}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { upsertExactRecord } from '@undefineds.co/drizzle-solid';
|
|
3
|
+
import { showLinxInteractiveError } from './linx-interactive-error-display.js';
|
|
4
|
+
import { showLinxInteractiveStatus } from './linx-interactive-status-display.js';
|
|
5
|
+
import { DEFAULT_SECRETARY_CHAT_ID, secretaryChatUri, secretaryThreadUri } from './pod-mirror-mapping.js';
|
|
6
|
+
import { resolveLinxInteractivePodWebId } from './linx-interactive-runtime-host.js';
|
|
7
|
+
import { resolveLinxSessionId } from './linx-session-metadata.js';
|
|
8
|
+
import { registerLinxInteractiveSubmitHandler } from './linx-interactive-submit-router.js';
|
|
9
|
+
import { getDefaultPodDataSession } from './pod-data-session.js';
|
|
10
|
+
import { getLinxInteractiveCaptureIdea, getLinxInteractiveIdeaCaptureForegroundTimeoutMs, setLinxInteractiveLastIdeaCapture, } from './linx-interactive-shell-state.js';
|
|
11
|
+
import { chatResource, drizzle, ideaResource, solidResources, threadResource, } from './models.js';
|
|
12
|
+
const ideaCaptureInstalled = new WeakSet();
|
|
13
|
+
const DEFAULT_IDEA_CAPTURE_FOREGROUND_TIMEOUT_MS = 1_500;
|
|
14
|
+
export function installLinxInteractiveIdeaCapture(interactive, runtime) {
|
|
15
|
+
if (!interactive || ideaCaptureInstalled.has(interactive)) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
registerLinxInteractiveSubmitHandler(interactive, {
|
|
19
|
+
name: 'linx-idea-capture',
|
|
20
|
+
priority: 10,
|
|
21
|
+
async handler({ interactive: target, input }) {
|
|
22
|
+
if (!shouldConsiderIdeaCaptureInput(input) || !shouldCaptureIdeaInput(input)) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
showLinxInteractiveStatus(target, 'Capturing Idea…');
|
|
26
|
+
const capture = captureInteractiveIdeaForInput(target, runtime, input);
|
|
27
|
+
const projection = await waitForForegroundIdeaCapture(capture, resolveIdeaCaptureForegroundTimeoutMs(target));
|
|
28
|
+
setLinxInteractiveLastIdeaCapture(target, input, projection);
|
|
29
|
+
if (projection?.kind === 'pending') {
|
|
30
|
+
showLinxInteractiveStatus(target, 'Idea capture is still running; continuing chat.');
|
|
31
|
+
void capture.catch((error) => {
|
|
32
|
+
const normalized = normalizeError(error);
|
|
33
|
+
showLinxInteractiveError(target, `Capture failed: ${normalized.message}`);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
return false;
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
ideaCaptureInstalled.add(interactive);
|
|
40
|
+
}
|
|
41
|
+
function resolveIdeaCaptureForegroundTimeoutMs(interactive) {
|
|
42
|
+
const configured = getLinxInteractiveIdeaCaptureForegroundTimeoutMs(interactive);
|
|
43
|
+
return typeof configured === 'number' && Number.isFinite(configured) && configured >= 0
|
|
44
|
+
? configured
|
|
45
|
+
: DEFAULT_IDEA_CAPTURE_FOREGROUND_TIMEOUT_MS;
|
|
46
|
+
}
|
|
47
|
+
async function waitForForegroundIdeaCapture(capture, timeoutMs) {
|
|
48
|
+
let timeout;
|
|
49
|
+
try {
|
|
50
|
+
return await Promise.race([
|
|
51
|
+
capture,
|
|
52
|
+
new Promise((resolve) => {
|
|
53
|
+
timeout = setTimeout(() => {
|
|
54
|
+
resolve({ kind: 'pending', message: 'Idea capture is still running downstream.' });
|
|
55
|
+
}, timeoutMs);
|
|
56
|
+
}),
|
|
57
|
+
]);
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
if (timeout) {
|
|
61
|
+
clearTimeout(timeout);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export async function captureInteractiveIdeaForInput(interactive, runtime, input, options = {}) {
|
|
66
|
+
try {
|
|
67
|
+
const source = await resolveIdeaSourceContext(interactive, runtime);
|
|
68
|
+
const context = await captureIdeaIfNeeded(input, source, getLinxInteractiveCaptureIdea(interactive), options.podRuntime);
|
|
69
|
+
if (!context) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
showLinxInteractiveStatus(interactive, `Captured Idea: ${context.summary} (${context.status}).`);
|
|
73
|
+
return { kind: 'captured', context };
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
const normalized = normalizeError(error);
|
|
77
|
+
showLinxInteractiveError(interactive, `Capture failed: ${normalized.message}`);
|
|
78
|
+
return { kind: 'failed', error: normalized };
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export function renderIdeaCaptureProjection(ideaCapture) {
|
|
82
|
+
if (!ideaCapture) {
|
|
83
|
+
return [];
|
|
84
|
+
}
|
|
85
|
+
if (ideaCapture.kind === 'captured') {
|
|
86
|
+
return [
|
|
87
|
+
'',
|
|
88
|
+
'Capture status:',
|
|
89
|
+
'Idea already captured before this model turn.',
|
|
90
|
+
`URI: ${ideaCapture.context.uri}`,
|
|
91
|
+
`Summary: ${ideaCapture.context.summary}`,
|
|
92
|
+
`Status: ${ideaCapture.context.status}`,
|
|
93
|
+
`Commitment: ${ideaCapture.context.commitment}`,
|
|
94
|
+
'Do not ask the user to repeat this capture and do not claim capture is still pending.',
|
|
95
|
+
];
|
|
96
|
+
}
|
|
97
|
+
if (ideaCapture.kind === 'pending') {
|
|
98
|
+
return [
|
|
99
|
+
'',
|
|
100
|
+
'Capture status:',
|
|
101
|
+
'Idea capture started before this model turn but is still waiting on a downstream Pod call.',
|
|
102
|
+
`Status: ${ideaCapture.message}`,
|
|
103
|
+
'Do not claim it was captured yet. Continue the answer normally and mention the pending capture only if relevant.',
|
|
104
|
+
];
|
|
105
|
+
}
|
|
106
|
+
return [
|
|
107
|
+
'',
|
|
108
|
+
'Capture status:',
|
|
109
|
+
'Idea capture was required but Pod write failed before this model turn.',
|
|
110
|
+
`Error: ${ideaCapture.error.message}`,
|
|
111
|
+
'Do not claim it was captured. Surface the persistence blocker briefly if the user-facing answer would otherwise imply durable capture.',
|
|
112
|
+
];
|
|
113
|
+
}
|
|
114
|
+
export function serializeIdeaCaptureProjection(ideaCapture) {
|
|
115
|
+
if (ideaCapture.kind === 'captured') {
|
|
116
|
+
return {
|
|
117
|
+
kind: 'captured',
|
|
118
|
+
...ideaCapture.context,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
if (ideaCapture.kind === 'pending') {
|
|
122
|
+
return {
|
|
123
|
+
kind: 'pending',
|
|
124
|
+
message: ideaCapture.message,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
kind: 'failed',
|
|
129
|
+
message: ideaCapture.error.message,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
function shouldConsiderIdeaCaptureInput(input) {
|
|
133
|
+
return Boolean(input)
|
|
134
|
+
&& !input.startsWith('/')
|
|
135
|
+
&& !input.startsWith('!');
|
|
136
|
+
}
|
|
137
|
+
async function captureIdeaIfNeeded(input, source, captureIdea, runtime) {
|
|
138
|
+
if (!shouldCaptureIdeaInput(input)) {
|
|
139
|
+
return undefined;
|
|
140
|
+
}
|
|
141
|
+
if (captureIdea) {
|
|
142
|
+
return normalizeCapturedIdeaContext(await captureIdea(input, source));
|
|
143
|
+
}
|
|
144
|
+
return persistCapturedIdeaToPod({
|
|
145
|
+
input,
|
|
146
|
+
source,
|
|
147
|
+
affectedArea: inferIdeaAffectedArea(input),
|
|
148
|
+
runtime,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
async function persistCapturedIdeaToPod(input) {
|
|
152
|
+
const runtime = input.runtime ?? createDefaultIdeaCaptureRuntime();
|
|
153
|
+
const podSession = await runtime.getPodDataSession();
|
|
154
|
+
if (!podSession) {
|
|
155
|
+
throw new Error('No active Pod session; Idea capture requires LinX/Solid login.');
|
|
156
|
+
}
|
|
157
|
+
const db = runtime.createDb(podSession);
|
|
158
|
+
const now = new Date();
|
|
159
|
+
const row = buildCapturedIdeaRow({
|
|
160
|
+
input: input.input,
|
|
161
|
+
source: input.source,
|
|
162
|
+
webId: podSession.webId,
|
|
163
|
+
now,
|
|
164
|
+
affectedArea: input.affectedArea,
|
|
165
|
+
});
|
|
166
|
+
await db.init([
|
|
167
|
+
runtime.ideaResource,
|
|
168
|
+
runtime.chatResource,
|
|
169
|
+
runtime.threadResource,
|
|
170
|
+
]).catch(() => undefined);
|
|
171
|
+
await upsertExactRecord(db, runtime.ideaResource, { id: row.id }, row, {
|
|
172
|
+
operation: 'linx.capture.idea.upsert',
|
|
173
|
+
});
|
|
174
|
+
return {
|
|
175
|
+
uri: runtime.ideaResource.buildIri(podSession.webId, { id: row.id, createdAt: row.createdAt }),
|
|
176
|
+
summary: row.summary,
|
|
177
|
+
status: row.status,
|
|
178
|
+
commitment: row.commitment,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
function createDefaultIdeaCaptureRuntime() {
|
|
182
|
+
return {
|
|
183
|
+
getPodDataSession: getDefaultPodDataSession,
|
|
184
|
+
createDb(podSession) {
|
|
185
|
+
return drizzle(podSession.solidSession, {
|
|
186
|
+
logger: false,
|
|
187
|
+
disableInteropDiscovery: true,
|
|
188
|
+
podUrl: podSession.podUrl,
|
|
189
|
+
resourcePreparation: 'best-effort',
|
|
190
|
+
schema: solidResources,
|
|
191
|
+
});
|
|
192
|
+
},
|
|
193
|
+
ideaResource,
|
|
194
|
+
chatResource,
|
|
195
|
+
threadResource,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
function buildCapturedIdeaRow(input) {
|
|
199
|
+
const text = input.input.trim();
|
|
200
|
+
const summary = summarizeIdeaInput(text);
|
|
201
|
+
const id = buildIdeaResourceId(input.now);
|
|
202
|
+
return {
|
|
203
|
+
id,
|
|
204
|
+
summary,
|
|
205
|
+
input: text,
|
|
206
|
+
status: 'captured',
|
|
207
|
+
commitment: 'thought',
|
|
208
|
+
affectedArea: input.affectedArea,
|
|
209
|
+
currentUnderstanding: text,
|
|
210
|
+
openQuestions: [],
|
|
211
|
+
related: [],
|
|
212
|
+
conflicts: [],
|
|
213
|
+
nextStep: 'Review this captured Idea against related conversation and promote only after scope and commitment are clear.',
|
|
214
|
+
chat: input.source?.chat,
|
|
215
|
+
thread: input.source?.thread,
|
|
216
|
+
sourceMessages: [],
|
|
217
|
+
createdBy: input.webId,
|
|
218
|
+
metadata: {
|
|
219
|
+
surface: 'linx-capture',
|
|
220
|
+
source: 'interactive-user-message',
|
|
221
|
+
...(input.source?.sessionId ? { sessionId: input.source.sessionId } : {}),
|
|
222
|
+
},
|
|
223
|
+
createdAt: input.now,
|
|
224
|
+
updatedAt: input.now,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
function buildIdeaResourceId(now) {
|
|
228
|
+
const yyyy = String(now.getUTCFullYear()).padStart(4, '0');
|
|
229
|
+
const mm = String(now.getUTCMonth() + 1).padStart(2, '0');
|
|
230
|
+
const dd = String(now.getUTCDate()).padStart(2, '0');
|
|
231
|
+
return `${yyyy}/${mm}/${dd}.ttl#idea_${now.toISOString().replace(/[-:.TZ]/g, '')}_${randomUUID().slice(0, 8)}`;
|
|
232
|
+
}
|
|
233
|
+
function shouldCaptureIdeaInput(input) {
|
|
234
|
+
const normalized = input.trim();
|
|
235
|
+
if (normalized.length < 12) {
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
return /\b(idea|maybe|perhaps|could we|should we|what if|proposal|direction)\b/iu.test(normalized)
|
|
239
|
+
|| /(我觉得|感觉|也许|可能|考虑|想法|方向|要不要|能不能|是不是|是否|应该)/u.test(normalized);
|
|
240
|
+
}
|
|
241
|
+
function inferIdeaAffectedArea(input) {
|
|
242
|
+
const normalized = input.toLowerCase();
|
|
243
|
+
if (/symphony|secretary|auto|approval|grant|pod|xpod|skill|worker|agent|capture/u.test(normalized)) {
|
|
244
|
+
return normalized.match(/symphony|secretary|auto|approval|grant|pod|xpod|skill|worker|agent|capture/u)?.[0];
|
|
245
|
+
}
|
|
246
|
+
if (/(建模|模型|数据|同步|权限|审批|托管|多端|工作流|指标|质检|抓取|收藏|记忆)/u.test(input)) {
|
|
247
|
+
return input.match(/建模|模型|数据|同步|权限|审批|托管|多端|工作流|指标|质检|抓取|收藏|记忆/u)?.[0];
|
|
248
|
+
}
|
|
249
|
+
return undefined;
|
|
250
|
+
}
|
|
251
|
+
function summarizeIdeaInput(input) {
|
|
252
|
+
const normalized = input.replace(/\s+/g, ' ').trim();
|
|
253
|
+
return normalized.length <= 80 ? normalized : `${normalized.slice(0, 77)}...`;
|
|
254
|
+
}
|
|
255
|
+
function normalizeCapturedIdeaContext(value) {
|
|
256
|
+
if (!isRecord(value)) {
|
|
257
|
+
return undefined;
|
|
258
|
+
}
|
|
259
|
+
const uri = normalizeString(value.uri);
|
|
260
|
+
const summary = normalizeString(value.summary);
|
|
261
|
+
if (!uri || !summary) {
|
|
262
|
+
return undefined;
|
|
263
|
+
}
|
|
264
|
+
return {
|
|
265
|
+
uri,
|
|
266
|
+
summary,
|
|
267
|
+
status: normalizeString(value.status) ?? 'captured',
|
|
268
|
+
commitment: normalizeString(value.commitment) ?? 'thought',
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
async function resolveIdeaSourceContext(interactive, runtime) {
|
|
272
|
+
const sessionId = resolveLinxSessionId({ interactive, runtime });
|
|
273
|
+
const webId = await resolveLinxInteractivePodWebId(interactive);
|
|
274
|
+
if (typeof sessionId !== 'string' || !sessionId.trim() || !webId) {
|
|
275
|
+
return undefined;
|
|
276
|
+
}
|
|
277
|
+
const trimmedSessionId = sessionId.trim();
|
|
278
|
+
return {
|
|
279
|
+
chat: secretaryChatUri(webId),
|
|
280
|
+
thread: secretaryThreadUri(webId, trimmedSessionId, DEFAULT_SECRETARY_CHAT_ID),
|
|
281
|
+
sessionId: trimmedSessionId,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
function normalizeString(value) {
|
|
285
|
+
const normalized = typeof value === 'string' ? value.trim() : '';
|
|
286
|
+
return normalized || undefined;
|
|
287
|
+
}
|
|
288
|
+
function normalizeError(error) {
|
|
289
|
+
return error instanceof Error ? error : new Error(String(error));
|
|
290
|
+
}
|
|
291
|
+
function isRecord(value) {
|
|
292
|
+
return Boolean(value) && typeof value === 'object';
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=linx-interactive-idea-capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linx-interactive-idea-capture.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-idea-capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,7 +53,7 @@ function installPostInitInteractiveControls(interactive, runtime, sessionCwd, op
|
|
|
53
53
|
export function installLinxEscapeInterrupt(interactive) {
|
|
54
54
|
installLinxInterruptControl(interactive, {
|
|
55
55
|
disableAutoMode(target) {
|
|
56
|
-
|
|
56
|
+
return handleInteractiveAutoCommand(target, getLinxInteractiveRuntime(target), false);
|
|
57
57
|
},
|
|
58
58
|
});
|
|
59
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linx-interactive-post-init.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-post-init.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"linx-interactive-post-init.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-post-init.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,15 @@ export function configureLinxInteractiveShellState(interactive, options) {
|
|
|
43
43
|
if (options.projectedBackendCommand) {
|
|
44
44
|
state.projectedBackendCommand = options.projectedBackendCommand;
|
|
45
45
|
}
|
|
46
|
+
if (options.captureIdea) {
|
|
47
|
+
state.captureIdea = options.captureIdea;
|
|
48
|
+
}
|
|
49
|
+
if (options.ideaCaptureForegroundTimeoutMs !== undefined) {
|
|
50
|
+
state.ideaCaptureForegroundTimeoutMs = options.ideaCaptureForegroundTimeoutMs;
|
|
51
|
+
}
|
|
52
|
+
if (options.turnResponsePendingStatusTimeoutMs !== undefined) {
|
|
53
|
+
state.turnResponsePendingStatusTimeoutMs = options.turnResponsePendingStatusTimeoutMs;
|
|
54
|
+
}
|
|
46
55
|
if (options.symphony) {
|
|
47
56
|
Object.assign(state.symphony, options.symphony);
|
|
48
57
|
}
|
|
@@ -97,6 +106,34 @@ export function getLinxInteractiveSymphonyStatusPodTimeoutMs(interactive) {
|
|
|
97
106
|
export function getLinxInteractiveRunSymphony(interactive) {
|
|
98
107
|
return getLinxInteractiveSymphonyState(interactive).runSymphony;
|
|
99
108
|
}
|
|
109
|
+
export function getLinxInteractiveCaptureIdea(interactive) {
|
|
110
|
+
return getLinxInteractiveShellState(interactive).captureIdea;
|
|
111
|
+
}
|
|
112
|
+
export function getLinxInteractiveIdeaCaptureForegroundTimeoutMs(interactive) {
|
|
113
|
+
return getLinxInteractiveShellState(interactive).ideaCaptureForegroundTimeoutMs;
|
|
114
|
+
}
|
|
115
|
+
export function getLinxInteractiveTurnResponsePendingStatusTimeoutMs(interactive) {
|
|
116
|
+
return getLinxInteractiveShellState(interactive).turnResponsePendingStatusTimeoutMs;
|
|
117
|
+
}
|
|
118
|
+
export function setLinxInteractiveLastIdeaCapture(interactive, input, projection) {
|
|
119
|
+
const state = getLinxInteractiveShellState(interactive);
|
|
120
|
+
if (!projection) {
|
|
121
|
+
if (state.lastIdeaCapture?.input === input) {
|
|
122
|
+
delete state.lastIdeaCapture;
|
|
123
|
+
}
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
state.lastIdeaCapture = { input, projection };
|
|
127
|
+
}
|
|
128
|
+
export function takeLinxInteractiveLastIdeaCapture(interactive, input) {
|
|
129
|
+
const state = getLinxInteractiveShellState(interactive);
|
|
130
|
+
if (state.lastIdeaCapture?.input !== input) {
|
|
131
|
+
return undefined;
|
|
132
|
+
}
|
|
133
|
+
const projection = state.lastIdeaCapture.projection;
|
|
134
|
+
delete state.lastIdeaCapture;
|
|
135
|
+
return projection;
|
|
136
|
+
}
|
|
100
137
|
export function getLinxInteractiveListSymphonyIssues(interactive) {
|
|
101
138
|
return getLinxInteractiveSymphonyState(interactive).listSymphonyIssues;
|
|
102
139
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linx-interactive-shell-state.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-shell-state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"linx-interactive-shell-state.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-shell-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { clearLinxInteractiveTurnResponseWatchdog, startLinxInteractiveTurnResponseWatchdog, } from './linx-interactive-turn-response-watchdog.js';
|
|
1
2
|
const LINX_INTERACTIVE_SUBMIT_ROUTER = Symbol.for('linx.tui.submitRouter');
|
|
2
3
|
const LINX_INTERACTIVE_SUBMIT_WRAPPED = Symbol.for('linx.tui.submitRouter.wrapped');
|
|
3
4
|
export function registerLinxInteractiveSubmitHandler(interactive, entry) {
|
|
@@ -50,12 +51,23 @@ function wrapLinxInteractiveEditorSubmit(interactive, state) {
|
|
|
50
51
|
}
|
|
51
52
|
const wrappedSubmit = async (text) => {
|
|
52
53
|
const input = String(text ?? '').trim();
|
|
54
|
+
const submitOriginal = async (submittedText) => {
|
|
55
|
+
const submittedInput = String(submittedText ?? '').trim();
|
|
56
|
+
startLinxInteractiveTurnResponseWatchdog(interactive, submittedInput);
|
|
57
|
+
try {
|
|
58
|
+
await originalSubmit(submittedText);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
clearLinxInteractiveTurnResponseWatchdog(interactive);
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
53
65
|
for (const entry of state.handlers) {
|
|
54
|
-
if (await entry.handler({ interactive, text, input, originalSubmit })) {
|
|
66
|
+
if (await entry.handler({ interactive, text, input, originalSubmit: submitOriginal })) {
|
|
55
67
|
return;
|
|
56
68
|
}
|
|
57
69
|
}
|
|
58
|
-
await
|
|
70
|
+
await submitOriginal(text);
|
|
59
71
|
};
|
|
60
72
|
wrappedSubmit[LINX_INTERACTIVE_SUBMIT_WRAPPED] = true;
|
|
61
73
|
editor.onSubmit = wrappedSubmit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linx-interactive-submit-router.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-submit-router.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"linx-interactive-submit-router.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-submit-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { registerLinxInteractiveEventHandler } from './linx-interactive-event-router.js';
|
|
2
|
+
import { showLinxInteractiveStatus } from './linx-interactive-status-display.js';
|
|
3
|
+
import { getLinxInteractiveTurnResponsePendingStatusTimeoutMs } from './linx-interactive-shell-state.js';
|
|
4
|
+
const DEFAULT_TURN_RESPONSE_PENDING_STATUS_TIMEOUT_MS = 8_000;
|
|
5
|
+
const turnResponseWatchdogs = new WeakMap();
|
|
6
|
+
const turnResponseWatchdogInstalled = new WeakSet();
|
|
7
|
+
export function installLinxInteractiveTurnResponseWatchdog(interactive) {
|
|
8
|
+
if (!interactive || turnResponseWatchdogInstalled.has(interactive)) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
registerLinxInteractiveEventHandler(interactive, {
|
|
12
|
+
name: 'linx-turn-response-watchdog',
|
|
13
|
+
priority: -10,
|
|
14
|
+
handler({ interactive: target, event }) {
|
|
15
|
+
handleLinxInteractiveTurnResponseEvent(target, event);
|
|
16
|
+
return { handled: false };
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
turnResponseWatchdogInstalled.add(interactive);
|
|
20
|
+
}
|
|
21
|
+
export function startLinxInteractiveTurnResponseWatchdog(interactive, input) {
|
|
22
|
+
if (!interactive || !shouldWatchTurnResponseInput(input)) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const state = {
|
|
26
|
+
input,
|
|
27
|
+
phase: 'submitted',
|
|
28
|
+
};
|
|
29
|
+
replaceTurnResponseWatchdog(interactive, state);
|
|
30
|
+
}
|
|
31
|
+
function handleLinxInteractiveTurnResponseEvent(interactive, event) {
|
|
32
|
+
const state = getTurnResponseWatchdog(interactive);
|
|
33
|
+
if (!state || !isRecord(event)) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const type = event.type;
|
|
37
|
+
if (type === 'agent_start') {
|
|
38
|
+
state.phase = 'agent-started';
|
|
39
|
+
scheduleTurnResponseStatus(interactive, state);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (type === 'message_update' && isAssistantMessageWithVisibleContent(event.message)) {
|
|
43
|
+
clearTurnResponseWatchdog(interactive);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (type === 'message_end' && isAssistantMessage(event.message)) {
|
|
47
|
+
clearTurnResponseWatchdog(interactive);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (type === 'agent_end') {
|
|
51
|
+
clearTurnResponseWatchdog(interactive);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function replaceTurnResponseWatchdog(interactive, state) {
|
|
55
|
+
clearTurnResponseWatchdog(interactive);
|
|
56
|
+
if (interactive && typeof interactive === 'object') {
|
|
57
|
+
turnResponseWatchdogs.set(interactive, state);
|
|
58
|
+
scheduleTurnResponseStatus(interactive, state);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function getTurnResponseWatchdog(interactive) {
|
|
62
|
+
return interactive && typeof interactive === 'object'
|
|
63
|
+
? turnResponseWatchdogs.get(interactive)
|
|
64
|
+
: undefined;
|
|
65
|
+
}
|
|
66
|
+
export function clearLinxInteractiveTurnResponseWatchdog(interactive) {
|
|
67
|
+
clearTurnResponseWatchdog(interactive);
|
|
68
|
+
}
|
|
69
|
+
function clearTurnResponseWatchdog(interactive) {
|
|
70
|
+
const state = getTurnResponseWatchdog(interactive);
|
|
71
|
+
if (state?.timer) {
|
|
72
|
+
clearTimeout(state.timer);
|
|
73
|
+
}
|
|
74
|
+
if (interactive && typeof interactive === 'object') {
|
|
75
|
+
turnResponseWatchdogs.delete(interactive);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function scheduleTurnResponseStatus(interactive, state) {
|
|
79
|
+
if (state.timer) {
|
|
80
|
+
clearTimeout(state.timer);
|
|
81
|
+
}
|
|
82
|
+
state.timer = setTimeout(() => {
|
|
83
|
+
const current = getTurnResponseWatchdog(interactive);
|
|
84
|
+
if (current !== state) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
showLinxInteractiveStatus(interactive, formatTurnResponsePendingStatus(state));
|
|
88
|
+
}, resolveTurnResponsePendingStatusTimeoutMs(interactive));
|
|
89
|
+
state.timer.unref?.();
|
|
90
|
+
}
|
|
91
|
+
function resolveTurnResponsePendingStatusTimeoutMs(interactive) {
|
|
92
|
+
const configured = getLinxInteractiveTurnResponsePendingStatusTimeoutMs(interactive);
|
|
93
|
+
return typeof configured === 'number' && Number.isFinite(configured) && configured >= 0
|
|
94
|
+
? configured
|
|
95
|
+
: DEFAULT_TURN_RESPONSE_PENDING_STATUS_TIMEOUT_MS;
|
|
96
|
+
}
|
|
97
|
+
function formatTurnResponsePendingStatus(state) {
|
|
98
|
+
if (state.phase === 'agent-started') {
|
|
99
|
+
return 'Still waiting for a response from LinX Cloud/backend; the model call has not produced content yet.';
|
|
100
|
+
}
|
|
101
|
+
return 'Still waiting for a response; the submitted message is queued but no backend activity has arrived yet.';
|
|
102
|
+
}
|
|
103
|
+
function shouldWatchTurnResponseInput(input) {
|
|
104
|
+
const normalized = input.trim();
|
|
105
|
+
return Boolean(normalized)
|
|
106
|
+
&& !normalized.startsWith('/')
|
|
107
|
+
&& !normalized.startsWith('!');
|
|
108
|
+
}
|
|
109
|
+
function isAssistantMessage(value) {
|
|
110
|
+
return isRecord(value) && value.role === 'assistant';
|
|
111
|
+
}
|
|
112
|
+
function isAssistantMessageWithVisibleContent(value) {
|
|
113
|
+
if (!isAssistantMessage(value)) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
const content = value.content;
|
|
117
|
+
return Array.isArray(content) && content.some((entry) => {
|
|
118
|
+
if (!isRecord(entry)) {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
if (entry.type === 'text') {
|
|
122
|
+
return typeof entry.text === 'string' && entry.text.length > 0;
|
|
123
|
+
}
|
|
124
|
+
return entry.type === 'toolCall';
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function isRecord(value) {
|
|
128
|
+
return Boolean(value) && typeof value === 'object';
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=linx-interactive-turn-response-watchdog.js.map
|