@agentshouse/mdruntime 0.1.0-c0136de3edfbe → 0.1.0-c01d4615bfe46
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 +16 -15
- package/dist/acceptance.d.ts +0 -3
- package/dist/acceptance.d.ts.map +1 -1
- package/dist/acceptance.js +74 -164
- package/dist/act-lanes.d.ts +30 -0
- package/dist/act-lanes.d.ts.map +1 -0
- package/dist/act-lanes.js +225 -0
- package/dist/actions.d.ts +8 -2
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +122 -68
- package/dist/adapter.d.ts +49 -55
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +0 -1
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +0 -5
- package/dist/bootstrap.d.ts +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +6 -18
- package/dist/change-set.d.ts +4 -0
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +6 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +4 -2
- package/dist/chat-types.d.ts +2 -2
- package/dist/chat-types.d.ts.map +1 -1
- package/dist/chat-types.js +11 -2
- package/dist/client.d.ts +13 -19
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +35 -19
- package/dist/collection.d.ts +22 -4
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +12 -2
- package/dist/compile.d.ts +2 -0
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +31 -24
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +32 -24
- package/dist/conversation-live.d.ts +147 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +258 -0
- package/dist/conversation-row.d.ts.map +1 -1
- package/dist/conversation-row.js +7 -1
- package/dist/conversation.d.ts +52 -44
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +956 -1029
- package/dist/declaration.d.ts +10 -0
- package/dist/declaration.d.ts.map +1 -0
- package/dist/declaration.js +24 -0
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +19 -44
- package/dist/durability.d.ts +13 -0
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +4 -0
- package/dist/entry.js +1 -1
- package/dist/expectation.d.ts +26 -13
- package/dist/expectation.d.ts.map +1 -1
- package/dist/expectation.js +72 -19
- package/dist/failure.d.ts +3 -0
- package/dist/failure.d.ts.map +1 -1
- package/dist/failure.js +6 -0
- package/dist/figures.d.ts +1 -0
- package/dist/figures.d.ts.map +1 -1
- package/dist/figures.js +2 -2
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +2 -1
- package/dist/holdings.d.ts +29 -0
- package/dist/holdings.d.ts.map +1 -0
- package/dist/holdings.js +95 -0
- package/dist/host.d.ts +18 -2
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +46 -11
- package/dist/index.d.ts +17 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -6
- package/dist/install.d.ts +2 -4
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +53 -83
- package/dist/lifecycle.d.ts +1 -1
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +45 -35
- package/dist/listing.d.ts +6 -11
- package/dist/listing.d.ts.map +1 -1
- package/dist/listing.js +25 -61
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +3 -3
- package/dist/locks.d.ts +2 -4
- package/dist/locks.d.ts.map +1 -1
- package/dist/locks.js +10 -39
- package/dist/lost.d.ts.map +1 -1
- package/dist/lost.js +10 -22
- package/dist/media.d.ts +1 -1
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +10 -13
- package/dist/memory.d.ts +7 -3
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +58 -27
- package/dist/messages.d.ts +10 -6
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +26 -36
- package/dist/model.d.ts +0 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +0 -5
- package/dist/models.d.ts +4 -8
- package/dist/models.d.ts.map +1 -1
- package/dist/models.js +95 -135
- package/dist/observation.d.ts +3 -2
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +22 -21
- package/dist/opened.d.ts +1 -1
- package/dist/opened.d.ts.map +1 -1
- package/dist/opened.js +5 -5
- package/dist/opening.d.ts.map +1 -1
- package/dist/opening.js +7 -10
- package/dist/outcome.d.ts +10 -1
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +23 -2
- package/dist/overlay.d.ts +5 -1
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +36 -21
- package/dist/page-metadata.d.ts +8 -0
- package/dist/page-metadata.d.ts.map +1 -0
- package/dist/page-metadata.js +19 -0
- package/dist/parts.d.ts +3 -58
- package/dist/parts.d.ts.map +1 -1
- package/dist/parts.js +10 -115
- package/dist/paths.d.ts +1 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +22 -0
- package/dist/preparation.d.ts.map +1 -1
- package/dist/preparation.js +25 -24
- package/dist/presence.d.ts +52 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +220 -0
- package/dist/queries.d.ts +1 -1
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +24 -14
- package/dist/query.d.ts +0 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/questions.d.ts +2 -5
- package/dist/questions.d.ts.map +1 -1
- package/dist/questions.js +3 -6
- package/dist/queue.d.ts +40 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +450 -0
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +68 -23
- package/dist/react.d.ts +11 -1
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +33 -1
- package/dist/readiness.d.ts +1 -2
- package/dist/readiness.d.ts.map +1 -1
- package/dist/reads.d.ts +4 -1
- package/dist/reads.d.ts.map +1 -1
- package/dist/reads.js +47 -5
- package/dist/recovery.d.ts +3 -1
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +29 -7
- package/dist/refresh.js +2 -2
- package/dist/refusal.d.ts.map +1 -1
- package/dist/refusal.js +5 -6
- package/dist/replica.d.ts +5 -10
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +15 -16
- package/dist/retried.d.ts +30 -0
- package/dist/retried.d.ts.map +1 -0
- package/dist/retried.js +72 -0
- package/dist/room-draft.d.ts +4 -6
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +48 -59
- package/dist/room-drafts.d.ts.map +1 -1
- package/dist/room-drafts.js +17 -16
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +3 -4
- package/dist/runtime.d.ts +11 -19
- package/dist/runtime.d.ts.map +1 -1
- package/dist/save.d.ts +42 -86
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +333 -163
- package/dist/saves.d.ts +2 -40
- package/dist/saves.d.ts.map +1 -1
- package/dist/saves.js +109 -703
- package/dist/seed.d.ts.map +1 -1
- package/dist/seed.js +2 -3
- package/dist/shared.d.ts +1 -6
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +13 -95
- package/dist/shown.d.ts +6 -4
- package/dist/shown.d.ts.map +1 -1
- package/dist/shown.js +43 -35
- package/dist/socket/lanes.d.ts +12 -4
- package/dist/socket/lanes.d.ts.map +1 -1
- package/dist/socket/lanes.js +34 -8
- package/dist/socket/session.d.ts +0 -1
- package/dist/socket/session.d.ts.map +1 -1
- package/dist/socket.d.ts +3 -6
- package/dist/socket.d.ts.map +1 -1
- package/dist/socket.js +5 -16
- package/dist/source.d.ts +0 -7
- package/dist/source.d.ts.map +1 -1
- package/dist/source.js +5 -4
- package/dist/store/records.d.ts +11 -8
- package/dist/store/records.d.ts.map +1 -1
- package/dist/store/records.js +43 -12
- package/dist/store/space.d.ts +1 -1
- package/dist/store/space.d.ts.map +1 -1
- package/dist/store/space.js +0 -2
- package/dist/store/watchers.js +1 -2
- package/dist/store.d.ts +12 -7
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +38 -13
- package/dist/stored.d.ts +2 -1
- package/dist/stored.d.ts.map +1 -1
- package/dist/stored.js +27 -15
- package/dist/surface.d.ts +7 -4
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +30 -25
- package/dist/sync.d.ts +0 -1
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +93 -89
- package/dist/tables.d.ts +19 -11
- package/dist/tables.d.ts.map +1 -1
- package/dist/tables.js +58 -21
- package/dist/tallies.d.ts.map +1 -1
- package/dist/tallies.js +6 -7
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +2 -2
- package/dist/wire.d.ts +53 -7
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +17 -4
- package/package.json +3 -2
- package/dist/attempt.d.ts +0 -16
- package/dist/attempt.d.ts.map +0 -1
- package/dist/attempt.js +0 -70
- package/dist/job.d.ts +0 -33
- package/dist/job.d.ts.map +0 -1
- package/dist/job.js +0 -54
- package/dist/log.d.ts +0 -6
- package/dist/log.d.ts.map +0 -1
- package/dist/log.js +0 -14
- package/dist/socket/rooms.d.ts +0 -43
- package/dist/socket/rooms.d.ts.map +0 -1
- package/dist/socket/rooms.js +0 -90
- package/dist/store/fences.d.ts +0 -16
- package/dist/store/fences.d.ts.map +0 -1
- package/dist/store/fences.js +0 -26
package/dist/tables.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { sql } from '@agentshouse/mdmodel';
|
|
2
2
|
import { answerQuery } from './compile.js';
|
|
3
|
-
import {
|
|
3
|
+
import { conversationFacts, conversationRows, forgottenConversations, heldConversations, keptFact, keptMessages, messageCount, messageWindow, MESSAGE_TABLES, turnArrived, } from './messages.js';
|
|
4
4
|
import { keptRead, READ_TABLES, readsOfOtherBuildsForgotten, storedRead, } from './reads.js';
|
|
5
5
|
import { conversationTallies, roomTallies, } from './tallies.js';
|
|
6
|
-
import { abandon, release, commit, covering, demoted, ended, entries, erase, facts, fenceRooms, folders, heldLocators, heldRoom, heldRooms, offlineMode, opened, overlaid, presentation, rederive, referrers, refreshing, REPLICA_TABLES, resume, stage, typed, stagedLocators, typedWithin, unrefresh, } from './stored.js';
|
|
6
|
+
import { abandon, release, commit, covering, demoted, ended, entries, erase, facts, fenceRooms, folders, heldLocators, heldRoom, heldRooms, offlineMode, opened, overlaid, presentation, rederive, referrers, refreshing, REPLICA_TABLES, resume, stage, typed, stagedLocators, tablesOf, typedWithin, unrefresh, } from './stored.js';
|
|
7
7
|
const STATEMENTS_HELD = 256;
|
|
8
8
|
export function sqliteConnection(engine, database) {
|
|
9
9
|
const decoder = new TextDecoder();
|
|
@@ -100,6 +100,7 @@ export const RUNTIME_TABLES = [
|
|
|
100
100
|
const OWNERS = ['authored_pending', 'authored_room_drafts', 'authored_calls'];
|
|
101
101
|
const AUTHORED_KEYS = OWNERS.map((table) => `SELECT value FROM ${table}, json_each(${table}.files)`).join(' UNION ');
|
|
102
102
|
const UNOWNED_PARTS = `DELETE FROM file_parts WHERE key NOT IN (${AUTHORED_KEYS} UNION SELECT key FROM opened_files)`;
|
|
103
|
+
const CLEANABLE_BYTES = `SELECT coalesce(sum(length(bytes)), 0) AS bytes FROM file_parts WHERE key NOT IN (${AUTHORED_KEYS})`;
|
|
103
104
|
const READS = new Set([
|
|
104
105
|
'authored.status',
|
|
105
106
|
'authored.moving',
|
|
@@ -131,14 +132,16 @@ const READS = new Set([
|
|
|
131
132
|
'replica.folders',
|
|
132
133
|
'replica.typedWithin',
|
|
133
134
|
'opened.find',
|
|
135
|
+
'opened.held',
|
|
134
136
|
'file.part',
|
|
135
137
|
'conversation.held',
|
|
136
138
|
'conversation.window',
|
|
137
139
|
'conversation.count',
|
|
138
140
|
'conversation.turn',
|
|
139
141
|
'conversation.rows',
|
|
140
|
-
'conversation.jobs',
|
|
141
142
|
'conversation.tallies',
|
|
143
|
+
'conversation.facts',
|
|
144
|
+
'conversation.stored',
|
|
142
145
|
'read.stored',
|
|
143
146
|
]);
|
|
144
147
|
const KINDS = new Set([
|
|
@@ -170,6 +173,7 @@ const KINDS = new Set([
|
|
|
170
173
|
'opened.drop',
|
|
171
174
|
'opened.clean',
|
|
172
175
|
'conversation.keep',
|
|
176
|
+
'conversation.fact',
|
|
173
177
|
'conversation.drop',
|
|
174
178
|
'space.probe',
|
|
175
179
|
'read.keep',
|
|
@@ -338,7 +342,7 @@ function keptRows(connection, { locator, order, added, founded, roomDrafts, cons
|
|
|
338
342
|
}
|
|
339
343
|
}
|
|
340
344
|
for (const { id, batch, state, files, paths, moving } of added ?? []) {
|
|
341
|
-
if (before.has(id)
|
|
345
|
+
if (before.has(id))
|
|
342
346
|
continue;
|
|
343
347
|
connection.run('INSERT OR REPLACE INTO authored_pending (locator, id, batch, state, files, paths, moving) VALUES (?, ?, ?, ?, ?, ?, ?)', [locator, id, batch, state, owned(files), JSON.stringify(paths), moving ? 1 : 0]);
|
|
344
348
|
}
|
|
@@ -400,6 +404,25 @@ async function roomDraft(connection, { locator, path, kept: draft, files }) {
|
|
|
400
404
|
unowned(connection);
|
|
401
405
|
return null;
|
|
402
406
|
}
|
|
407
|
+
function conversationTables() {
|
|
408
|
+
return [...tablesOf(MESSAGE_TABLES), 'authored_chat_drafts'];
|
|
409
|
+
}
|
|
410
|
+
function storedConversations(connection, conversations) {
|
|
411
|
+
const named = conversations === null ? '' : ' WHERE conversation IN (SELECT value FROM json_each(?))';
|
|
412
|
+
const bound = conversations === null ? [] : [JSON.stringify(conversations)];
|
|
413
|
+
return [
|
|
414
|
+
...new Set(conversationTables().flatMap((table) => texts(connection.rows(`SELECT DISTINCT conversation FROM ${table}${named}`, bound), 'conversation'))),
|
|
415
|
+
];
|
|
416
|
+
}
|
|
417
|
+
function droppedConversations(connection, conversations) {
|
|
418
|
+
const held = storedConversations(connection, conversations);
|
|
419
|
+
for (const table of conversationTables()) {
|
|
420
|
+
connection.run(`DELETE FROM ${table} WHERE conversation IN (SELECT value FROM json_each(?))`, [
|
|
421
|
+
JSON.stringify(conversations),
|
|
422
|
+
]);
|
|
423
|
+
}
|
|
424
|
+
return held;
|
|
425
|
+
}
|
|
403
426
|
function chatDraft(connection, { kept: drafts, dropped }) {
|
|
404
427
|
for (const conversation of dropped) {
|
|
405
428
|
connection.run('DELETE FROM authored_chat_drafts WHERE conversation = ?', [conversation]);
|
|
@@ -453,7 +476,7 @@ function claim(connection, holder) {
|
|
|
453
476
|
}
|
|
454
477
|
function end(connection, holder) {
|
|
455
478
|
ended(connection);
|
|
456
|
-
|
|
479
|
+
forgottenConversations(connection);
|
|
457
480
|
if (holder !== null && claim(connection, holder))
|
|
458
481
|
return true;
|
|
459
482
|
for (const [table] of TABLES)
|
|
@@ -505,9 +528,9 @@ function keptOpened(connection, { key, sha256, byteLength, parts }) {
|
|
|
505
528
|
if (fetched === null)
|
|
506
529
|
return false;
|
|
507
530
|
const [held] = connection.rows('SELECT count(*) AS parts, min(part) AS first, max(part) AS last, coalesce(sum(length(bytes)), 0) AS bytes FROM file_parts WHERE key = ?', [key]);
|
|
508
|
-
const whole = count(held
|
|
509
|
-
count(held
|
|
510
|
-
(parts === 0 || (count(held
|
|
531
|
+
const whole = count(held.parts) === parts &&
|
|
532
|
+
count(held.bytes) === byteLength &&
|
|
533
|
+
(parts === 0 || (count(held.first) === 0 && count(held.last) === parts - 1));
|
|
511
534
|
if (!whole) {
|
|
512
535
|
dropped(connection, key);
|
|
513
536
|
return false;
|
|
@@ -529,13 +552,25 @@ const UNSENT = [
|
|
|
529
552
|
];
|
|
530
553
|
function unsent(connection) {
|
|
531
554
|
const [held] = connection.rows(`SELECT ${UNSENT.map(([kind, table]) => `(SELECT count(*) FROM ${table}) AS "${kind}"`).join(', ')}`);
|
|
532
|
-
return UNSENT.map(([kind]) => ({ kind, count: count(held
|
|
555
|
+
return UNSENT.map(([kind]) => ({ kind, count: count(held[kind]) })).filter((work) => work.count > 0);
|
|
556
|
+
}
|
|
557
|
+
function cleanable(connection) {
|
|
558
|
+
const [held] = connection.rows(CLEANABLE_BYTES);
|
|
559
|
+
return count(held.bytes);
|
|
533
560
|
}
|
|
534
561
|
function cleaned(connection) {
|
|
535
562
|
connection.run('DELETE FROM opened_files');
|
|
536
|
-
const
|
|
563
|
+
const freed = cleanable(connection);
|
|
537
564
|
unowned(connection);
|
|
538
|
-
return
|
|
565
|
+
return freed;
|
|
566
|
+
}
|
|
567
|
+
function openedHeld(connection) {
|
|
568
|
+
return {
|
|
569
|
+
rooms: connection
|
|
570
|
+
.rows('SELECT locator, count(*) AS files, sum(byte_length) AS bytes FROM opened_files WHERE byte_length IS NOT NULL GROUP BY locator ORDER BY locator')
|
|
571
|
+
.map((row) => ({ room: text(row.locator), count: count(row.files), size: count(row.bytes) })),
|
|
572
|
+
cleanable: cleanable(connection),
|
|
573
|
+
};
|
|
539
574
|
}
|
|
540
575
|
async function committed(connection, { authored, rooms }) {
|
|
541
576
|
const refused = authored === undefined ? null : await kept(connection, authored);
|
|
@@ -635,7 +670,7 @@ export function answerRuntime(connection, request, spool) {
|
|
|
635
670
|
case 'replica.referrers':
|
|
636
671
|
return referrers(connection, request.key, request.view, request.targets);
|
|
637
672
|
case 'replica.folders':
|
|
638
|
-
return folders(connection, request.key, request.
|
|
673
|
+
return folders(connection, request.key, request.paths);
|
|
639
674
|
case 'replica.typedWithin':
|
|
640
675
|
return typedWithin(connection, request.key, request.view, request.roots, request.within);
|
|
641
676
|
case 'replica.stage':
|
|
@@ -684,6 +719,8 @@ export function answerRuntime(connection, request, spool) {
|
|
|
684
719
|
return dropped(connection, request.key);
|
|
685
720
|
case 'opened.clean':
|
|
686
721
|
return cleaned(connection);
|
|
722
|
+
case 'opened.held':
|
|
723
|
+
return openedHeld(connection);
|
|
687
724
|
case 'file.part':
|
|
688
725
|
return filePart(connection, request.key, request.part);
|
|
689
726
|
case 'conversation.held':
|
|
@@ -700,18 +737,18 @@ export function answerRuntime(connection, request, spool) {
|
|
|
700
737
|
return turnArrived(connection, request.conversation, request.turn);
|
|
701
738
|
case 'conversation.rows':
|
|
702
739
|
return conversationRows(connection, request.conversations);
|
|
703
|
-
case 'conversation.jobs':
|
|
704
|
-
return jobMarkers(connection, request.conversation);
|
|
705
740
|
case 'conversation.tallies':
|
|
706
741
|
return conversationTallies(connection, request.conversations, request.since);
|
|
742
|
+
case 'conversation.facts':
|
|
743
|
+
return conversationFacts(connection);
|
|
744
|
+
case 'conversation.fact': {
|
|
745
|
+
const { kind: _kind, ...fact } = request;
|
|
746
|
+
return keptFact(connection, fact);
|
|
747
|
+
}
|
|
748
|
+
case 'conversation.stored':
|
|
749
|
+
return storedConversations(connection, null);
|
|
707
750
|
case 'conversation.drop':
|
|
708
|
-
|
|
709
|
-
kind: 'authored.chatDraft',
|
|
710
|
-
kept: [],
|
|
711
|
-
dropped: request.conversations,
|
|
712
|
-
});
|
|
713
|
-
droppedMessages(connection, request.conversations);
|
|
714
|
-
return null;
|
|
751
|
+
return droppedConversations(connection, request.conversations);
|
|
715
752
|
case 'space.probe':
|
|
716
753
|
return spool.probe(PROBE_BYTES).then(() => null);
|
|
717
754
|
case 'read.stored':
|
package/dist/tallies.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tallies.d.ts","sourceRoot":"","sources":["../src/tallies.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tallies.d.ts","sourceRoot":"","sources":["../src/tallies.ts"],"names":[],"mappings":"AACA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,aAAa,CAAC;AAI1D,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;IAC7E,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAmHpG,wBAAgB,WAAW,CACzB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,SAAS,SAAS,EAAE,EAC3B,KAAK,EAAE,MAAM,GACZ,SAAS,EAAE,CAwBb;AA0BD,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,EACvC,KAAK,EAAE,MAAM,GACZ,iBAAiB,EAAE,CAerB"}
|
package/dist/tallies.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { instantKey, sql } from '@agentshouse/mdmodel';
|
|
2
|
-
import { CHAT_MESSAGE_TYPE, CHAT_TYPE } from './chat-types.js';
|
|
1
|
+
import { CHAT_MESSAGE_TYPE, CHAT_TYPE, instantKey, sql } from '@agentshouse/mdmodel';
|
|
3
2
|
import { answerQuery, VISIBLE, within } from './compile.js';
|
|
4
3
|
import { HOUSE_DIRECTORY } from './figures.js';
|
|
5
4
|
const NONE = { count: 0, size: 0 };
|
|
@@ -94,13 +93,13 @@ const ACCEPTED = "message ->> '$.accepted_at'";
|
|
|
94
93
|
const NEWER = 'ORDER BY n.position DESC, n.identity DESC LIMIT 1';
|
|
95
94
|
const SAID = `WITH RECURSIVE
|
|
96
95
|
named(conversation) AS (SELECT value FROM json_each(?)),
|
|
97
|
-
walk(
|
|
98
|
-
SELECT m.
|
|
96
|
+
walk(conversation, position, identity, at, role) AS (
|
|
97
|
+
SELECT m.conversation, m.position, m.identity, m.${ACCEPTED}, m.message ->> '$.role'
|
|
99
98
|
FROM named JOIN conversation_messages m ON m.id = (
|
|
100
99
|
SELECT n.id FROM conversation_messages n WHERE n.conversation = named.conversation ${NEWER}
|
|
101
100
|
)
|
|
102
101
|
UNION ALL
|
|
103
|
-
SELECT m.
|
|
102
|
+
SELECT m.conversation, m.position, m.identity, m.${ACCEPTED}, m.message ->> '$.role'
|
|
104
103
|
FROM walk JOIN conversation_messages m ON m.id = (
|
|
105
104
|
SELECT n.id FROM conversation_messages n WHERE n.conversation = walk.conversation
|
|
106
105
|
AND (n.position < walk.position OR (n.position = walk.position AND n.identity < walk.identity))
|
|
@@ -109,8 +108,8 @@ const SAID = `WITH RECURSIVE
|
|
|
109
108
|
WHERE julianday(walk.at) >= julianday(?)
|
|
110
109
|
)
|
|
111
110
|
SELECT walk.conversation AS conversation, walk.at AS at
|
|
112
|
-
FROM walk
|
|
113
|
-
WHERE
|
|
111
|
+
FROM walk
|
|
112
|
+
WHERE walk.role IN ('user', 'assistant') AND julianday(walk.at) >= julianday(?)`;
|
|
114
113
|
export function conversationTallies(connection, conversations, since) {
|
|
115
114
|
const named = conversations ??
|
|
116
115
|
connection
|
package/dist/validation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,UAAU,EAGhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,UAAU,EAGhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAA2B,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAM5E,KAAK,QAAQ,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAE3E,MAAM,MAAM,KAAK,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpF,MAAM,MAAM,IAAI,GAAG,CACjB,KAAK,EAAE,MAAM,GAAG,IAAI,KACjB,OAAO,CAAC;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC;AAEtF,MAAM,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAwBvF,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,UAAU,CAAC,CA6CrB;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1F,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CAChF,CAAC;AAkBF,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,SAAS,OAAO,EAAE,EAC3B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,UAAU,CAAC,CAgCrB"}
|
package/dist/validation.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { assess, parse, parseFrontmatter, verdicts, } from '@agentshouse/mdmodel';
|
|
2
|
-
import { selected } from './collection.js';
|
|
2
|
+
import { definitionsAt, selected } from './collection.js';
|
|
3
3
|
import { paced, ROW_WEIGHT, yielded } from './turn.js';
|
|
4
4
|
const NO_TYPES = { types: {} };
|
|
5
5
|
function modelOf(model) {
|
|
@@ -27,7 +27,7 @@ export async function validatedCollection(walk, lookup, composition) {
|
|
|
27
27
|
if (content === null)
|
|
28
28
|
continue;
|
|
29
29
|
const part = partOf(path);
|
|
30
|
-
const parsed = parse(content, path);
|
|
30
|
+
const parsed = parse(content, path, definitionsAt(composition, path));
|
|
31
31
|
if (part.model.status === 'unavailable' && part.unmodeled === null && typedText(parsed)) {
|
|
32
32
|
part.unmodeled = path;
|
|
33
33
|
}
|
package/dist/wire.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export type RuntimePort = {
|
|
|
7
7
|
}) => void): void;
|
|
8
8
|
start(): void;
|
|
9
9
|
};
|
|
10
|
-
export type WireReach = 'within' | 'app' | 'runtime' | '
|
|
10
|
+
export type WireReach = 'within' | 'app' | 'runtime' | 'whole';
|
|
11
11
|
export type WireEffect = 'read' | 'write' | 'action';
|
|
12
12
|
export type WireCall = {
|
|
13
13
|
readonly reach: WireReach;
|
|
@@ -67,15 +67,15 @@ declare const MEMBERS: {
|
|
|
67
67
|
readonly effect: 'read';
|
|
68
68
|
};
|
|
69
69
|
readonly call: {
|
|
70
|
-
readonly reach: '
|
|
70
|
+
readonly reach: 'within';
|
|
71
71
|
readonly effect: 'action';
|
|
72
72
|
};
|
|
73
|
-
readonly
|
|
73
|
+
readonly answered: {
|
|
74
74
|
readonly reach: 'within';
|
|
75
75
|
readonly effect: 'read';
|
|
76
76
|
};
|
|
77
|
-
readonly
|
|
78
|
-
readonly reach: '
|
|
77
|
+
readonly reached: {
|
|
78
|
+
readonly reach: 'within';
|
|
79
79
|
readonly effect: 'read';
|
|
80
80
|
};
|
|
81
81
|
readonly cleanUp: {
|
|
@@ -166,6 +166,46 @@ declare const MEMBERS: {
|
|
|
166
166
|
readonly reach: 'within';
|
|
167
167
|
readonly effect: 'action';
|
|
168
168
|
};
|
|
169
|
+
readonly 'conversation.takeOut': {
|
|
170
|
+
readonly reach: 'within';
|
|
171
|
+
readonly effect: 'action';
|
|
172
|
+
};
|
|
173
|
+
readonly 'conversation.decide': {
|
|
174
|
+
readonly reach: 'within';
|
|
175
|
+
readonly effect: 'action';
|
|
176
|
+
};
|
|
177
|
+
readonly 'conversation.rename': {
|
|
178
|
+
readonly reach: 'within';
|
|
179
|
+
readonly effect: 'action';
|
|
180
|
+
};
|
|
181
|
+
readonly 'conversation.option': {
|
|
182
|
+
readonly reach: 'within';
|
|
183
|
+
readonly effect: 'action';
|
|
184
|
+
};
|
|
185
|
+
readonly 'conversation.retry': {
|
|
186
|
+
readonly reach: 'within';
|
|
187
|
+
readonly effect: 'action';
|
|
188
|
+
};
|
|
189
|
+
readonly 'conversation.pins': {
|
|
190
|
+
readonly reach: 'within';
|
|
191
|
+
readonly effect: 'read';
|
|
192
|
+
};
|
|
193
|
+
readonly 'conversation.pin': {
|
|
194
|
+
readonly reach: 'within';
|
|
195
|
+
readonly effect: 'write';
|
|
196
|
+
};
|
|
197
|
+
readonly 'conversation.openedTurns': {
|
|
198
|
+
readonly reach: 'within';
|
|
199
|
+
readonly effect: 'read';
|
|
200
|
+
};
|
|
201
|
+
readonly 'conversation.openTurn': {
|
|
202
|
+
readonly reach: 'within';
|
|
203
|
+
readonly effect: 'write';
|
|
204
|
+
};
|
|
205
|
+
readonly 'conversation.dismissSuggestion': {
|
|
206
|
+
readonly reach: 'within';
|
|
207
|
+
readonly effect: 'write';
|
|
208
|
+
};
|
|
169
209
|
readonly 'chatDraft.write': {
|
|
170
210
|
readonly reach: 'within';
|
|
171
211
|
readonly effect: 'write';
|
|
@@ -174,6 +214,10 @@ declare const MEMBERS: {
|
|
|
174
214
|
readonly reach: 'within';
|
|
175
215
|
readonly effect: 'write';
|
|
176
216
|
};
|
|
217
|
+
readonly 'chatDraft.append': {
|
|
218
|
+
readonly reach: 'within';
|
|
219
|
+
readonly effect: 'write';
|
|
220
|
+
};
|
|
177
221
|
readonly 'chatDraft.discard': {
|
|
178
222
|
readonly reach: 'within';
|
|
179
223
|
readonly effect: 'write';
|
|
@@ -196,7 +240,9 @@ declare const TOPICS: {
|
|
|
196
240
|
readonly conversation: 'within';
|
|
197
241
|
readonly conversations: 'within';
|
|
198
242
|
readonly agents: 'within';
|
|
243
|
+
readonly 'listed-agents': 'whole';
|
|
199
244
|
readonly figures: 'whole';
|
|
245
|
+
readonly holdings: 'whole';
|
|
200
246
|
readonly read: 'whole';
|
|
201
247
|
};
|
|
202
248
|
export declare const WIRE: {
|
|
@@ -244,7 +290,7 @@ export declare function unanswered(call: {
|
|
|
244
290
|
}): WireAnswer | null;
|
|
245
291
|
export declare const AUTHORIZATION_ENDED = "the host authorization ended";
|
|
246
292
|
export declare const PORT_CLOSED = "the port closed";
|
|
247
|
-
export declare function
|
|
248
|
-
export declare function
|
|
293
|
+
export declare function wireRequest(message: unknown): WireRequest | null;
|
|
294
|
+
export declare function wireAnswer(message: unknown): WireAnswer | null;
|
|
249
295
|
export {};
|
|
250
296
|
//# sourceMappingURL=wire.d.ts.map
|
package/dist/wire.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACjG,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"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"}
|
package/dist/wire.js
CHANGED
|
@@ -13,9 +13,9 @@ const MEMBERS = {
|
|
|
13
13
|
'binaryFile.show': { reach: 'within', effect: 'read' },
|
|
14
14
|
'binaryFile.attach': { reach: 'within', effect: 'action' },
|
|
15
15
|
'binaryFile.part': { reach: 'within', effect: 'read' },
|
|
16
|
-
call: { reach: '
|
|
16
|
+
call: { reach: 'within', effect: 'action' },
|
|
17
|
+
answered: { reach: 'within', effect: 'read' },
|
|
17
18
|
reached: { reach: 'within', effect: 'read' },
|
|
18
|
-
log: { reach: 'whole', effect: 'read' },
|
|
19
19
|
cleanUp: { reach: 'whole', effect: 'write' },
|
|
20
20
|
unsent: { reach: 'whole', effect: 'read' },
|
|
21
21
|
reset: { reach: 'whole', effect: 'write' },
|
|
@@ -38,8 +38,19 @@ const MEMBERS = {
|
|
|
38
38
|
'conversation.interrupt': { reach: 'within', effect: 'action' },
|
|
39
39
|
'conversation.kill': { reach: 'within', effect: 'action' },
|
|
40
40
|
'conversation.delete': { reach: 'within', effect: 'action' },
|
|
41
|
+
'conversation.takeOut': { reach: 'within', effect: 'action' },
|
|
42
|
+
'conversation.decide': { reach: 'within', effect: 'action' },
|
|
43
|
+
'conversation.rename': { reach: 'within', effect: 'action' },
|
|
44
|
+
'conversation.option': { reach: 'within', effect: 'action' },
|
|
45
|
+
'conversation.retry': { reach: 'within', effect: 'action' },
|
|
46
|
+
'conversation.pins': { reach: 'within', effect: 'read' },
|
|
47
|
+
'conversation.pin': { reach: 'within', effect: 'write' },
|
|
48
|
+
'conversation.openedTurns': { reach: 'within', effect: 'read' },
|
|
49
|
+
'conversation.openTurn': { reach: 'within', effect: 'write' },
|
|
50
|
+
'conversation.dismissSuggestion': { reach: 'within', effect: 'write' },
|
|
41
51
|
'chatDraft.write': { reach: 'within', effect: 'write' },
|
|
42
52
|
'chatDraft.prepend': { reach: 'within', effect: 'write' },
|
|
53
|
+
'chatDraft.append': { reach: 'within', effect: 'write' },
|
|
43
54
|
'chatDraft.discard': { reach: 'within', effect: 'write' },
|
|
44
55
|
};
|
|
45
56
|
const TOPICS = {
|
|
@@ -59,7 +70,9 @@ const TOPICS = {
|
|
|
59
70
|
conversation: 'within',
|
|
60
71
|
conversations: 'within',
|
|
61
72
|
agents: 'within',
|
|
73
|
+
'listed-agents': 'whole',
|
|
62
74
|
figures: 'whole',
|
|
75
|
+
holdings: 'whole',
|
|
63
76
|
read: 'whole',
|
|
64
77
|
};
|
|
65
78
|
export const WIRE = { members: MEMBERS, topics: TOPICS };
|
|
@@ -85,7 +98,7 @@ function body(message) {
|
|
|
85
98
|
const record = message;
|
|
86
99
|
return { kind: record.kind, id: record.id };
|
|
87
100
|
}
|
|
88
|
-
export function
|
|
101
|
+
export function wireRequest(message) {
|
|
89
102
|
const shape = body(message);
|
|
90
103
|
if (shape === null)
|
|
91
104
|
return null;
|
|
@@ -120,7 +133,7 @@ export function request(message) {
|
|
|
120
133
|
}
|
|
121
134
|
return null;
|
|
122
135
|
}
|
|
123
|
-
export function
|
|
136
|
+
export function wireAnswer(message) {
|
|
124
137
|
const shape = body(message);
|
|
125
138
|
if (shape === null)
|
|
126
139
|
return null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentshouse/mdruntime",
|
|
3
|
-
"version": "0.1.0-
|
|
3
|
+
"version": "0.1.0-c01d4615bfe46",
|
|
4
4
|
"description": "The headless core of MD App",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -54,7 +54,8 @@
|
|
|
54
54
|
"LICENSE"
|
|
55
55
|
],
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@agentshouse/mdmodel": "0.1.0-
|
|
57
|
+
"@agentshouse/mdmodel": "0.1.0-ce6172ed6fa4c",
|
|
58
|
+
"@agentshouse/session-content": "0.1.0-c7333f7032eb4"
|
|
58
59
|
},
|
|
59
60
|
"peerDependencies": {
|
|
60
61
|
"react": ">=18"
|
package/dist/attempt.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export type Answered = 'accepted' | 'refused' | 'unanswered' | 'offline';
|
|
2
|
-
export type Identities = {
|
|
3
|
-
of(intent: string): string;
|
|
4
|
-
settle(answered: Answered): void;
|
|
5
|
-
};
|
|
6
|
-
export declare function identities(mint?: () => string): Identities;
|
|
7
|
-
export declare function intentOf(name: string, about: unknown): string;
|
|
8
|
-
export type Attempt = {
|
|
9
|
-
identity(intent: string): string;
|
|
10
|
-
settle(answered: Answered, drop: (act: number) => void): void;
|
|
11
|
-
};
|
|
12
|
-
export type Attempts = {
|
|
13
|
-
begin(act: number): Attempt;
|
|
14
|
-
};
|
|
15
|
-
export declare function attempts(mint?: () => string): Attempts;
|
|
16
|
-
//# sourceMappingURL=attempt.d.ts.map
|
package/dist/attempt.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"attempt.d.ts","sourceRoot":"","sources":["../src/attempt.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;AAEzE,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,wBAAgB,UAAU,CAAC,IAAI,GAAE,MAAM,MAAoC,GAAG,UAAU,CAmBvF;AAID,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAa7D;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;CAC/D,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B,CAAC;AAEF,wBAAgB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,MAAM,GAAG,QAAQ,CAyBtD"}
|
package/dist/attempt.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { changeBatchIdentity } from './identity.js';
|
|
2
|
-
export function identities(mint = () => changeBatchIdentity()) {
|
|
3
|
-
const kept = new Map();
|
|
4
|
-
let used = new Map();
|
|
5
|
-
return {
|
|
6
|
-
of(intent) {
|
|
7
|
-
const one = used.get(intent) ?? kept.get(intent) ?? mint();
|
|
8
|
-
used.set(intent, one);
|
|
9
|
-
return one;
|
|
10
|
-
},
|
|
11
|
-
settle(answered) {
|
|
12
|
-
if (answered !== 'offline') {
|
|
13
|
-
for (const [intent, one] of used) {
|
|
14
|
-
if (answered === 'unanswered')
|
|
15
|
-
kept.set(intent, one);
|
|
16
|
-
else
|
|
17
|
-
kept.delete(intent);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
used = new Map();
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
const blobs = new WeakMap();
|
|
25
|
-
export function intentOf(name, about) {
|
|
26
|
-
const carried = [];
|
|
27
|
-
const json = JSON.stringify(about, (_key, value) => {
|
|
28
|
-
if (!(value instanceof Blob))
|
|
29
|
-
return value;
|
|
30
|
-
let identity = blobs.get(value);
|
|
31
|
-
if (identity === undefined) {
|
|
32
|
-
identity = changeBatchIdentity();
|
|
33
|
-
blobs.set(value, identity);
|
|
34
|
-
}
|
|
35
|
-
carried.push(identity);
|
|
36
|
-
return null;
|
|
37
|
-
});
|
|
38
|
-
return `${name}\u0000${json}\u0000${carried.join(',')}`;
|
|
39
|
-
}
|
|
40
|
-
export function attempts(mint) {
|
|
41
|
-
const numbers = identities(mint);
|
|
42
|
-
const waiting = new Map();
|
|
43
|
-
return {
|
|
44
|
-
begin(act) {
|
|
45
|
-
const intents = [];
|
|
46
|
-
return {
|
|
47
|
-
identity(intent) {
|
|
48
|
-
intents.push(intent);
|
|
49
|
-
return numbers.of(intent);
|
|
50
|
-
},
|
|
51
|
-
settle(answered, drop) {
|
|
52
|
-
numbers.settle(answered);
|
|
53
|
-
if (answered === 'refused' || answered === 'offline')
|
|
54
|
-
drop(act);
|
|
55
|
-
if (answered === 'offline')
|
|
56
|
-
return;
|
|
57
|
-
for (const intent of intents) {
|
|
58
|
-
const earlier = waiting.get(intent);
|
|
59
|
-
if (earlier !== undefined && earlier !== act)
|
|
60
|
-
drop(earlier);
|
|
61
|
-
if (answered === 'unanswered')
|
|
62
|
-
waiting.set(intent, act);
|
|
63
|
-
else
|
|
64
|
-
waiting.delete(intent);
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
};
|
|
68
|
-
},
|
|
69
|
-
};
|
|
70
|
-
}
|
package/dist/job.d.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
type Job = {
|
|
2
|
-
readonly label: string;
|
|
3
|
-
readonly kind: 'started' | 'scheduled' | 'ended';
|
|
4
|
-
readonly state: string;
|
|
5
|
-
readonly next: string | null;
|
|
6
|
-
};
|
|
7
|
-
export type RunningJob = {
|
|
8
|
-
readonly name: string;
|
|
9
|
-
readonly running_since: string;
|
|
10
|
-
};
|
|
11
|
-
export type JobMarker = {
|
|
12
|
-
readonly said: string;
|
|
13
|
-
readonly at: string;
|
|
14
|
-
};
|
|
15
|
-
export type OpenJob<At = string | null> = {
|
|
16
|
-
readonly name: string;
|
|
17
|
-
readonly started: At;
|
|
18
|
-
};
|
|
19
|
-
export declare function jobOf(said: string): Job;
|
|
20
|
-
export declare function closeLast(open: {
|
|
21
|
-
readonly key: string;
|
|
22
|
-
}[], key: string): void;
|
|
23
|
-
export declare function markerMoved<Kept extends {
|
|
24
|
-
readonly key: string;
|
|
25
|
-
}>(open: Kept[], said: string, opened: (job: Job, key: string) => Kept | null): void;
|
|
26
|
-
export declare function openJobs<At>(markers: readonly {
|
|
27
|
-
readonly said: string;
|
|
28
|
-
readonly at: At;
|
|
29
|
-
}[]): readonly OpenJob<At>[];
|
|
30
|
-
export declare function jobsRunning(jobs: readonly RunningJob[], now: number): string[];
|
|
31
|
-
export declare function sessionEnded(jobs: readonly RunningJob[], now: number): string;
|
|
32
|
-
export {};
|
|
33
|
-
//# sourceMappingURL=job.d.ts.map
|
package/dist/job.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../src/job.ts"],"names":[],"mappings":"AAAA,KAAK,GAAG,GAAG;IACT,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,MAAM,MAAM,OAAO,CAAC,EAAE,GAAG,MAAM,GAAG,IAAI,IAAI;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAA;CAAE,CAAC;AAQ1F,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CASvC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAG7E;AAED,wBAAgB,WAAW,CAAC,IAAI,SAAS;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAC/D,IAAI,EAAE,IAAI,EAAE,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,GAC7C,IAAI,CASN;AAED,wBAAgB,QAAQ,CAAC,EAAE,EACzB,OAAO,EAAE,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;CAAE,EAAE,GAC7D,SAAS,OAAO,CAAC,EAAE,CAAC,EAAE,CAQxB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAM9E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAI7E"}
|
package/dist/job.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
const NEXT_RUN = 'next run ';
|
|
2
|
-
const MINUTE = 60_000;
|
|
3
|
-
const ENDED = 'Session ended.';
|
|
4
|
-
export function jobOf(said) {
|
|
5
|
-
const at = said.lastIndexOf(': ');
|
|
6
|
-
const label = at === -1 ? said : said.slice(0, at);
|
|
7
|
-
const state = at === -1 ? '' : said.slice(at + 2);
|
|
8
|
-
if (state === 'running')
|
|
9
|
-
return { label, kind: 'started', state, next: null };
|
|
10
|
-
if (state === 'scheduled')
|
|
11
|
-
return { label, kind: 'scheduled', state, next: null };
|
|
12
|
-
return state.startsWith(NEXT_RUN)
|
|
13
|
-
? { label, kind: 'scheduled', state, next: state.slice(NEXT_RUN.length) }
|
|
14
|
-
: { label, kind: 'ended', state, next: null };
|
|
15
|
-
}
|
|
16
|
-
export function closeLast(open, key) {
|
|
17
|
-
const at = open.map((one) => one.key).lastIndexOf(key);
|
|
18
|
-
if (at !== -1)
|
|
19
|
-
open.splice(at, 1);
|
|
20
|
-
}
|
|
21
|
-
export function markerMoved(open, said, opened) {
|
|
22
|
-
const job = jobOf(said);
|
|
23
|
-
const started = `job\u0000${job.label}`;
|
|
24
|
-
const schedule = `schedule\u0000${job.label}`;
|
|
25
|
-
if (job.kind === 'ended')
|
|
26
|
-
closeLast(open, started);
|
|
27
|
-
if (job.kind !== 'started')
|
|
28
|
-
closeLast(open, schedule);
|
|
29
|
-
if (job.kind === 'ended')
|
|
30
|
-
return;
|
|
31
|
-
const kept = opened(job, job.kind === 'started' ? started : schedule);
|
|
32
|
-
if (kept !== null)
|
|
33
|
-
open.push(kept);
|
|
34
|
-
}
|
|
35
|
-
export function openJobs(markers) {
|
|
36
|
-
const open = [];
|
|
37
|
-
for (const { said, at } of markers) {
|
|
38
|
-
markerMoved(open, said, (job, key) => job.kind === 'started' ? { key, name: job.label, started: at } : null);
|
|
39
|
-
}
|
|
40
|
-
return open.map(({ name, started }) => ({ name, started }));
|
|
41
|
-
}
|
|
42
|
-
export function jobsRunning(jobs, now) {
|
|
43
|
-
return jobs.map((job) => {
|
|
44
|
-
const since = Date.parse(job.running_since);
|
|
45
|
-
const ran = Number.isNaN(since) ? 0 : Math.floor((now - since) / MINUTE);
|
|
46
|
-
return ran >= 1 ? `${job.name} (${ran} min)` : job.name;
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
export function sessionEnded(jobs, now) {
|
|
50
|
-
if (jobs.length === 0)
|
|
51
|
-
return ENDED;
|
|
52
|
-
const counted = jobs.length === 1 ? '1 background job' : `${jobs.length} background jobs`;
|
|
53
|
-
return `${ENDED} ${counted} stopped: ${jobsRunning(jobs, now).join(', ')}`;
|
|
54
|
-
}
|
package/dist/log.d.ts
DELETED
package/dist/log.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS;IAGrB,MAAM,QAAQ,MAAM;IAIpB,MAAM;EAIT;AAED,MAAM,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC"}
|