@undefineds.co/linx 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +91 -0
- package/dist/index.js +578 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/account-api.js +100 -0
- package/dist/lib/account-api.js.map +1 -0
- package/dist/lib/account-session.js +30 -0
- package/dist/lib/account-session.js.map +1 -0
- package/dist/lib/ai-command.js +411 -0
- package/dist/lib/ai-command.js.map +1 -0
- package/dist/lib/chat-api.js +122 -0
- package/dist/lib/chat-api.js.map +1 -0
- package/dist/lib/codex-plugin/bridge.js +109 -0
- package/dist/lib/codex-plugin/bridge.js.map +1 -0
- package/dist/lib/codex-plugin/codex-native-proxy.js +358 -0
- package/dist/lib/codex-plugin/codex-native-proxy.js.map +1 -0
- package/dist/lib/codex-plugin/index.js +4 -0
- package/dist/lib/codex-plugin/index.js.map +1 -0
- package/dist/lib/codex-plugin/runner.js +38 -0
- package/dist/lib/codex-plugin/runner.js.map +1 -0
- package/dist/lib/credentials-store.js +74 -0
- package/dist/lib/credentials-store.js.map +1 -0
- package/dist/lib/default-model.js +8 -0
- package/dist/lib/default-model.js.map +1 -0
- package/dist/lib/login-command.js +51 -0
- package/dist/lib/login-command.js.map +1 -0
- package/dist/lib/models.js +6 -0
- package/dist/lib/models.js.map +1 -0
- package/dist/lib/oidc-auth.js +451 -0
- package/dist/lib/oidc-auth.js.map +1 -0
- package/dist/lib/oidc-session-storage.js +37 -0
- package/dist/lib/oidc-session-storage.js.map +1 -0
- package/dist/lib/pi-adapter/auth.js +38 -0
- package/dist/lib/pi-adapter/auth.js.map +1 -0
- package/dist/lib/pi-adapter/branding.js +239 -0
- package/dist/lib/pi-adapter/branding.js.map +1 -0
- package/dist/lib/pi-adapter/index.js +4 -0
- package/dist/lib/pi-adapter/index.js.map +1 -0
- package/dist/lib/pi-adapter/interactive.js +63 -0
- package/dist/lib/pi-adapter/interactive.js.map +1 -0
- package/dist/lib/pi-adapter/runtime.js +271 -0
- package/dist/lib/pi-adapter/runtime.js.map +1 -0
- package/dist/lib/pi-adapter/stream.js +314 -0
- package/dist/lib/pi-adapter/stream.js.map +1 -0
- package/dist/lib/pi-adapter/theme.js +84 -0
- package/dist/lib/pi-adapter/theme.js.map +1 -0
- package/dist/lib/pod-chat-store.js +200 -0
- package/dist/lib/pod-chat-store.js.map +1 -0
- package/dist/lib/profile-identity.js +116 -0
- package/dist/lib/profile-identity.js.map +1 -0
- package/dist/lib/prompt.js +82 -0
- package/dist/lib/prompt.js.map +1 -0
- package/dist/lib/runtime-target.js +12 -0
- package/dist/lib/runtime-target.js.map +1 -0
- package/dist/lib/solid-auth.js +55 -0
- package/dist/lib/solid-auth.js.map +1 -0
- package/dist/lib/thread-utils.js +12 -0
- package/dist/lib/thread-utils.js.map +1 -0
- package/dist/lib/watch/archive.js +110 -0
- package/dist/lib/watch/archive.js.map +1 -0
- package/dist/lib/watch/auth.js +56 -0
- package/dist/lib/watch/auth.js.map +1 -0
- package/dist/lib/watch/codex-composer.js +219 -0
- package/dist/lib/watch/codex-composer.js.map +1 -0
- package/dist/lib/watch/codex-footer.js +88 -0
- package/dist/lib/watch/codex-footer.js.map +1 -0
- package/dist/lib/watch/codex-overlay.js +154 -0
- package/dist/lib/watch/codex-overlay.js.map +1 -0
- package/dist/lib/watch/codex-request-form.js +341 -0
- package/dist/lib/watch/codex-request-form.js.map +1 -0
- package/dist/lib/watch/codex-request-input.js +187 -0
- package/dist/lib/watch/codex-request-input.js.map +1 -0
- package/dist/lib/watch/display.js +1514 -0
- package/dist/lib/watch/display.js.map +1 -0
- package/dist/lib/watch/format.js +161 -0
- package/dist/lib/watch/format.js.map +1 -0
- package/dist/lib/watch/hooks/claude.js +12 -0
- package/dist/lib/watch/hooks/claude.js.map +1 -0
- package/dist/lib/watch/hooks/codebuddy.js +18 -0
- package/dist/lib/watch/hooks/codebuddy.js.map +1 -0
- package/dist/lib/watch/hooks/codex.js +13 -0
- package/dist/lib/watch/hooks/codex.js.map +1 -0
- package/dist/lib/watch/hooks/index.js +24 -0
- package/dist/lib/watch/hooks/index.js.map +1 -0
- package/dist/lib/watch/hooks/shared.js +19 -0
- package/dist/lib/watch/hooks/shared.js.map +1 -0
- package/dist/lib/watch/index.js +10 -0
- package/dist/lib/watch/index.js.map +1 -0
- package/dist/lib/watch/pod-ai.js +168 -0
- package/dist/lib/watch/pod-ai.js.map +1 -0
- package/dist/lib/watch/pod-approval.js +578 -0
- package/dist/lib/watch/pod-approval.js.map +1 -0
- package/dist/lib/watch/pod-persistence.js +226 -0
- package/dist/lib/watch/pod-persistence.js.map +1 -0
- package/dist/lib/watch/runner.js +1124 -0
- package/dist/lib/watch/runner.js.map +1 -0
- package/dist/lib/watch/types.js +2 -0
- package/dist/lib/watch/types.js.map +1 -0
- package/dist/watch-cli.js +142 -0
- package/dist/watch-cli.js.map +1 -0
- package/package.json +38 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { buildWatchThreadMetadata, buildWatchTranscriptMessages, } from '@undefineds.co/models/watch';
|
|
2
|
+
import { loadWatchEvents } from './archive.js';
|
|
3
|
+
const WATCH_CHAT_ID = 'linx-watch';
|
|
4
|
+
const WATCH_CHAT_TITLE = 'LinX Watch';
|
|
5
|
+
const WATCH_AGENT_ID = 'linx-watch-assistant';
|
|
6
|
+
async function dynamicImport(specifier) {
|
|
7
|
+
const loader = new Function('modulePath', 'return import(modulePath)');
|
|
8
|
+
return loader(specifier);
|
|
9
|
+
}
|
|
10
|
+
async function createDefaultRuntime() {
|
|
11
|
+
const [credentialsStore, solidAuth, models] = await Promise.all([
|
|
12
|
+
dynamicImport(new URL('../credentials-store.js', import.meta.url).href),
|
|
13
|
+
dynamicImport(new URL('../solid-auth.js', import.meta.url).href),
|
|
14
|
+
dynamicImport(new URL('../models.js', import.meta.url).href),
|
|
15
|
+
]);
|
|
16
|
+
return {
|
|
17
|
+
loadCredentials: credentialsStore.loadCredentials,
|
|
18
|
+
getClientCredentials: credentialsStore.getClientCredentials,
|
|
19
|
+
authenticate: solidAuth.authenticate,
|
|
20
|
+
createDb(session) {
|
|
21
|
+
return models.drizzle(session, {
|
|
22
|
+
logger: false,
|
|
23
|
+
disableInteropDiscovery: true,
|
|
24
|
+
schema: models.solidSchema,
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
chatTable: models.chatTable,
|
|
28
|
+
threadTable: models.threadTable,
|
|
29
|
+
messageTable: models.messageTable,
|
|
30
|
+
agentTable: models.agentTable,
|
|
31
|
+
loadWatchEvents,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function normalizeTitle(text, width = 72) {
|
|
35
|
+
const normalized = text.replace(/\s+/g, ' ').trim();
|
|
36
|
+
if (!normalized) {
|
|
37
|
+
return 'Watch Session';
|
|
38
|
+
}
|
|
39
|
+
if (normalized.length <= width) {
|
|
40
|
+
return normalized;
|
|
41
|
+
}
|
|
42
|
+
return `${normalized.slice(0, Math.max(0, width - 3))}...`;
|
|
43
|
+
}
|
|
44
|
+
function getPodBaseUrl(webId) {
|
|
45
|
+
return webId.replace('/profile/card#me', '').replace(/\/$/, '');
|
|
46
|
+
}
|
|
47
|
+
function buildPodIri(webId, relativeUri) {
|
|
48
|
+
if (/^https?:\/\//.test(relativeUri))
|
|
49
|
+
return relativeUri;
|
|
50
|
+
return new URL(relativeUri.replace(/^\//, ''), `${getPodBaseUrl(webId)}/`).toString();
|
|
51
|
+
}
|
|
52
|
+
function resolveRowIri(webId, table, id) {
|
|
53
|
+
const relativeUri = typeof table.resolveUri === 'function' ? table.resolveUri(id) : id;
|
|
54
|
+
return buildPodIri(webId, relativeUri);
|
|
55
|
+
}
|
|
56
|
+
function whereByStorageId(webId, table, query, id) {
|
|
57
|
+
const iri = resolveRowIri(webId, table, id);
|
|
58
|
+
if (typeof query.whereByIri === 'function') {
|
|
59
|
+
return query.whereByIri(iri);
|
|
60
|
+
}
|
|
61
|
+
return query.where({ id });
|
|
62
|
+
}
|
|
63
|
+
function buildThreadUri(webId, chatId, threadId) {
|
|
64
|
+
return `${getPodBaseUrl(webId)}/.data/chat/${chatId}/index.ttl#${threadId}`;
|
|
65
|
+
}
|
|
66
|
+
function buildAgentUri(webId, agentId) {
|
|
67
|
+
return `${getPodBaseUrl(webId)}/.data/agents/${agentId}.ttl`;
|
|
68
|
+
}
|
|
69
|
+
function buildWatchConversationThreadTitle(record, transcript = []) {
|
|
70
|
+
const firstUserTurn = transcript.find((message) => message.role === 'user')?.content;
|
|
71
|
+
const base = firstUserTurn?.trim() || record.prompt?.trim() || `${record.backend} watch`;
|
|
72
|
+
return normalizeTitle(`${record.backend} · ${base}`);
|
|
73
|
+
}
|
|
74
|
+
function buildWatchConversationChatRow(record, lastPreview) {
|
|
75
|
+
const startedAt = new Date(record.startedAt);
|
|
76
|
+
const updatedAt = record.endedAt ? new Date(record.endedAt) : startedAt;
|
|
77
|
+
return {
|
|
78
|
+
id: WATCH_CHAT_ID,
|
|
79
|
+
title: WATCH_CHAT_TITLE,
|
|
80
|
+
participants: [],
|
|
81
|
+
lastActiveAt: updatedAt,
|
|
82
|
+
lastMessagePreview: lastPreview ? normalizeTitle(lastPreview, 100) : undefined,
|
|
83
|
+
createdAt: startedAt,
|
|
84
|
+
updatedAt,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function buildWatchConversationThreadRow(record, transcript = []) {
|
|
88
|
+
const startedAt = new Date(record.startedAt);
|
|
89
|
+
const updatedAt = record.endedAt ? new Date(record.endedAt) : startedAt;
|
|
90
|
+
return {
|
|
91
|
+
id: record.id,
|
|
92
|
+
chat: WATCH_CHAT_ID,
|
|
93
|
+
title: buildWatchConversationThreadTitle(record, transcript),
|
|
94
|
+
metadata: buildWatchThreadMetadata(record),
|
|
95
|
+
createdAt: startedAt,
|
|
96
|
+
updatedAt,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function buildWatchConversationMessages(record, webId, entries) {
|
|
100
|
+
const transcript = buildWatchTranscriptMessages(entries);
|
|
101
|
+
const threadUri = buildThreadUri(webId, WATCH_CHAT_ID, record.id);
|
|
102
|
+
const agentUri = buildAgentUri(webId, WATCH_AGENT_ID);
|
|
103
|
+
return transcript.map((message, index) => ({
|
|
104
|
+
id: `${record.id}-m${String(index + 1).padStart(4, '0')}`,
|
|
105
|
+
chat: WATCH_CHAT_ID,
|
|
106
|
+
thread: record.id,
|
|
107
|
+
maker: message.role === 'user' ? webId : agentUri,
|
|
108
|
+
role: message.role,
|
|
109
|
+
content: message.content,
|
|
110
|
+
status: 'sent',
|
|
111
|
+
createdAt: new Date(message.createdAt),
|
|
112
|
+
}));
|
|
113
|
+
}
|
|
114
|
+
async function selectById(db, webId, table, id) {
|
|
115
|
+
if (typeof db.findByIri === 'function') {
|
|
116
|
+
return await db.findByIri(table, resolveRowIri(webId, table, id));
|
|
117
|
+
}
|
|
118
|
+
const rows = await db.select().from(table).execute();
|
|
119
|
+
return rows.find((row) => row?.id === id) ?? null;
|
|
120
|
+
}
|
|
121
|
+
async function ensureWatchConversationChat(db, runtime, webId, row) {
|
|
122
|
+
const existing = await selectById(db, webId, runtime.chatTable, WATCH_CHAT_ID);
|
|
123
|
+
if (!existing) {
|
|
124
|
+
await db.insert(runtime.chatTable).values(row).execute();
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
await whereByStorageId(webId, runtime.chatTable, db.update(runtime.chatTable).set({
|
|
128
|
+
title: row.title,
|
|
129
|
+
lastActiveAt: row.lastActiveAt,
|
|
130
|
+
lastMessagePreview: row.lastMessagePreview,
|
|
131
|
+
updatedAt: row.updatedAt,
|
|
132
|
+
}), WATCH_CHAT_ID).execute();
|
|
133
|
+
}
|
|
134
|
+
async function ensureWatchConversationAgent(db, runtime, webId, record) {
|
|
135
|
+
const existing = await selectById(db, webId, runtime.agentTable, WATCH_AGENT_ID);
|
|
136
|
+
const now = record.endedAt ? new Date(record.endedAt) : new Date(record.startedAt);
|
|
137
|
+
if (!existing) {
|
|
138
|
+
await db.insert(runtime.agentTable).values({
|
|
139
|
+
id: WATCH_AGENT_ID,
|
|
140
|
+
name: 'Secretary AI',
|
|
141
|
+
provider: 'linx',
|
|
142
|
+
model: record.model ?? record.backend,
|
|
143
|
+
createdAt: now,
|
|
144
|
+
updatedAt: now,
|
|
145
|
+
}).execute();
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
await whereByStorageId(webId, runtime.agentTable, db.update(runtime.agentTable).set({
|
|
149
|
+
provider: 'linx',
|
|
150
|
+
model: record.model ?? record.backend,
|
|
151
|
+
updatedAt: now,
|
|
152
|
+
}), WATCH_AGENT_ID).execute();
|
|
153
|
+
}
|
|
154
|
+
async function upsertWatchConversationThread(db, runtime, webId, row) {
|
|
155
|
+
const threadId = row.id;
|
|
156
|
+
if (!threadId) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
const existing = await selectById(db, webId, runtime.threadTable, threadId);
|
|
160
|
+
if (!existing) {
|
|
161
|
+
await db.insert(runtime.threadTable).values(row).execute();
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
await whereByStorageId(webId, runtime.threadTable, db.update(runtime.threadTable).set({
|
|
165
|
+
title: row.title,
|
|
166
|
+
metadata: row.metadata,
|
|
167
|
+
updatedAt: row.updatedAt,
|
|
168
|
+
}), threadId).execute();
|
|
169
|
+
}
|
|
170
|
+
async function upsertWatchConversationMessages(db, runtime, webId, rows) {
|
|
171
|
+
for (const row of rows) {
|
|
172
|
+
const existing = await selectById(db, webId, runtime.messageTable, row.id);
|
|
173
|
+
if (!existing) {
|
|
174
|
+
await db.insert(runtime.messageTable).values(row).execute();
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
await whereByStorageId(webId, runtime.messageTable, db.update(runtime.messageTable).set({
|
|
178
|
+
role: row.role,
|
|
179
|
+
maker: row.maker,
|
|
180
|
+
content: row.content,
|
|
181
|
+
status: row.status,
|
|
182
|
+
createdAt: row.createdAt,
|
|
183
|
+
}), row.id).execute();
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
export async function persistWatchConversationToPod(record, runtime) {
|
|
187
|
+
const activeRuntime = runtime ?? await createDefaultRuntime();
|
|
188
|
+
const stored = activeRuntime.loadCredentials();
|
|
189
|
+
if (!stored) {
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
const clientCredentials = activeRuntime.getClientCredentials(stored);
|
|
193
|
+
if (!clientCredentials) {
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
const { session } = await activeRuntime.authenticate(clientCredentials.clientId, clientCredentials.clientSecret, stored.url);
|
|
197
|
+
try {
|
|
198
|
+
const db = activeRuntime.createDb(session);
|
|
199
|
+
const entries = activeRuntime.loadWatchEvents(record.id);
|
|
200
|
+
const transcriptRows = buildWatchConversationMessages(record, stored.webId, entries);
|
|
201
|
+
const lastPreview = transcriptRows.at(-1)?.content;
|
|
202
|
+
await db.init([
|
|
203
|
+
activeRuntime.chatTable,
|
|
204
|
+
activeRuntime.threadTable,
|
|
205
|
+
activeRuntime.messageTable,
|
|
206
|
+
activeRuntime.agentTable,
|
|
207
|
+
]).catch(() => undefined);
|
|
208
|
+
await ensureWatchConversationChat(db, activeRuntime, stored.webId, buildWatchConversationChatRow(record, lastPreview));
|
|
209
|
+
await ensureWatchConversationAgent(db, activeRuntime, stored.webId, record);
|
|
210
|
+
await upsertWatchConversationThread(db, activeRuntime, stored.webId, buildWatchConversationThreadRow(record, transcriptRows));
|
|
211
|
+
await upsertWatchConversationMessages(db, activeRuntime, stored.webId, transcriptRows);
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
finally {
|
|
215
|
+
await session.logout().catch(() => undefined);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
export const __podPersistenceInternal = {
|
|
219
|
+
WATCH_AGENT_ID,
|
|
220
|
+
WATCH_CHAT_ID,
|
|
221
|
+
WATCH_CHAT_TITLE,
|
|
222
|
+
buildWatchConversationMessages,
|
|
223
|
+
buildWatchConversationThreadRow,
|
|
224
|
+
buildWatchConversationThreadTitle,
|
|
225
|
+
};
|
|
226
|
+
//# sourceMappingURL=pod-persistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pod-persistence.js","sourceRoot":"","sources":["../../../src/lib/watch/pod-persistence.ts"],"names":[],"mappings":"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"}
|