@buoy-gg/ask-buoy 7.0.36 → 7.0.38
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 +58 -27
- package/lib/commonjs/blocks/AskBlocks.js +1 -338
- package/lib/commonjs/blocks/BlockRenderer.js +1 -262
- package/lib/commonjs/blocks/ChromePrototypes.js +1 -514
- package/lib/commonjs/blocks/DataBlocks.js +1 -781
- package/lib/commonjs/blocks/ExtraBlocks.js +1 -1860
- package/lib/commonjs/blocks/MediaBlocks.js +1 -156
- package/lib/commonjs/blocks/ReceiptBlocks.js +1 -586
- package/lib/commonjs/blocks/blockText.js +1 -60
- package/lib/commonjs/blocks/blockText.test.js +1 -53
- package/lib/commonjs/blocks/context.js +1 -42
- package/lib/commonjs/blocks/icons.js +1 -96
- package/lib/commonjs/blocks/index.js +1 -95
- package/lib/commonjs/blocks/listRow.test.js +1 -55
- package/lib/commonjs/blocks/pageState.js +1 -34
- package/lib/commonjs/blocks/pageState.test.js +1 -57
- package/lib/commonjs/blocks/primitives.js +1 -457
- package/lib/commonjs/blocks/primitivesIndex.js +1 -62
- package/lib/commonjs/components/ApprovalCard.js +1 -244
- package/lib/commonjs/components/AskBuoyHeader.js +1 -196
- package/lib/commonjs/components/AskBuoyIcon.js +1 -19
- package/lib/commonjs/components/AskBuoyModal.js +1 -479
- package/lib/commonjs/components/AskBuoySettings.js +1 -119
- package/lib/commonjs/components/ChangesBar.js +1 -211
- package/lib/commonjs/components/Composer.js +1 -255
- package/lib/commonjs/components/EmptyState.js +1 -161
- package/lib/commonjs/components/KeyboardPad.js +1 -80
- package/lib/commonjs/components/Markdown.js +1 -310
- package/lib/commonjs/components/MessageList.js +1 -930
- package/lib/commonjs/components/QueuedMessages.js +1 -145
- package/lib/commonjs/components/ThinkingStrip.js +1 -223
- package/lib/commonjs/components/TypingDots.js +1 -63
- package/lib/commonjs/components/markdownParse.js +1 -131
- package/lib/commonjs/components/markdownParse.test.js +1 -99
- package/lib/commonjs/components/useCopyAction.js +1 -50
- package/lib/commonjs/index.js +1 -252
- package/lib/commonjs/preset.js +1 -90
- package/lib/commonjs/store/activityGroups.js +1 -110
- package/lib/commonjs/store/activityGroups.test.js +1 -78
- package/lib/commonjs/store/askBuoySettings.js +1 -72
- package/lib/commonjs/store/askBuoyStore.js +1 -547
- package/lib/commonjs/store/blockPlacement.js +1 -64
- package/lib/commonjs/store/blockPlacement.test.js +1 -123
- package/lib/commonjs/store/queue.test.js +1 -150
- package/lib/commonjs/store/resetConversation.js +1 -77
- package/lib/commonjs/store/restorePending.test.js +1 -63
- package/lib/commonjs/store/restoredIds.test.js +1 -47
- package/lib/commonjs/store/suggestions.js +1 -54
- package/lib/commonjs/store/suggestions.test.js +1 -58
- package/lib/commonjs/store/systemLine.test.js +1 -77
- package/lib/commonjs/store/ticketPrompt.js +1 -17
- package/lib/commonjs/store/traceText.js +1 -81
- package/lib/commonjs/store/traceText.test.js +1 -112
- package/lib/commonjs/store/transcriptPersistence.js +1 -297
- package/lib/commonjs/store/transcriptPersistence.test.js +1 -333
- package/lib/commonjs/store/turnRendering.test.js +1 -151
- package/lib/commonjs/store/useAskBuoy.js +1 -622
- package/lib/commonjs/store/useAskBuoySettings.js +1 -14
- package/lib/commonjs/sync/askBuoySyncAdapter.js +1 -140
- package/lib/commonjs/sync/askBuoySyncAdapter.test.js +1 -141
- package/lib/commonjs/sync/wire.js +1 -58
- package/lib/commonjs/types.js +1 -6
- package/lib/module/blocks/AskBlocks.js +1 -331
- package/lib/module/blocks/BlockRenderer.js +1 -257
- package/lib/module/blocks/ChromePrototypes.js +1 -503
- package/lib/module/blocks/DataBlocks.js +1 -767
- package/lib/module/blocks/ExtraBlocks.js +1 -1833
- package/lib/module/blocks/MediaBlocks.js +1 -151
- package/lib/module/blocks/ReceiptBlocks.js +1 -574
- package/lib/module/blocks/blockText.js +1 -55
- package/lib/module/blocks/blockText.test.js +1 -53
- package/lib/module/blocks/context.js +1 -35
- package/lib/module/blocks/icons.js +1 -91
- package/lib/module/blocks/index.js +1 -8
- package/lib/module/blocks/listRow.test.js +1 -56
- package/lib/module/blocks/pageState.js +1 -30
- package/lib/module/blocks/pageState.test.js +1 -56
- package/lib/module/blocks/primitives.js +1 -445
- package/lib/module/blocks/primitivesIndex.js +1 -5
- package/lib/module/components/ApprovalCard.js +1 -239
- package/lib/module/components/AskBuoyHeader.js +1 -193
- package/lib/module/components/AskBuoyIcon.js +1 -8
- package/lib/module/components/AskBuoyModal.js +1 -474
- package/lib/module/components/AskBuoySettings.js +1 -114
- package/lib/module/components/ChangesBar.js +1 -206
- package/lib/module/components/Composer.js +1 -250
- package/lib/module/components/EmptyState.js +1 -156
- package/lib/module/components/KeyboardPad.js +1 -75
- package/lib/module/components/Markdown.js +1 -305
- package/lib/module/components/MessageList.js +1 -924
- package/lib/module/components/QueuedMessages.js +1 -140
- package/lib/module/components/ThinkingStrip.js +1 -218
- package/lib/module/components/TypingDots.js +1 -58
- package/lib/module/components/markdownParse.js +1 -125
- package/lib/module/components/markdownParse.test.js +1 -98
- package/lib/module/components/useCopyAction.js +1 -46
- package/lib/module/index.js +1 -34
- package/lib/module/preset.js +1 -73
- package/lib/module/store/activityGroups.js +1 -103
- package/lib/module/store/activityGroups.test.js +1 -77
- package/lib/module/store/askBuoySettings.js +1 -67
- package/lib/module/store/askBuoyStore.js +1 -541
- package/lib/module/store/blockPlacement.js +1 -59
- package/lib/module/store/blockPlacement.test.js +1 -122
- package/lib/module/store/queue.test.js +1 -149
- package/lib/module/store/resetConversation.js +1 -72
- package/lib/module/store/restorePending.test.js +1 -62
- package/lib/module/store/restoredIds.test.js +1 -46
- package/lib/module/store/suggestions.js +1 -49
- package/lib/module/store/suggestions.test.js +1 -57
- package/lib/module/store/systemLine.test.js +1 -76
- package/lib/module/store/ticketPrompt.js +1 -13
- package/lib/module/store/traceText.js +1 -75
- package/lib/module/store/traceText.test.js +1 -111
- package/lib/module/store/transcriptPersistence.js +1 -287
- package/lib/module/store/transcriptPersistence.test.js +1 -332
- package/lib/module/store/turnRendering.test.js +1 -150
- package/lib/module/store/useAskBuoy.js +1 -616
- package/lib/module/store/useAskBuoySettings.js +1 -9
- package/lib/module/sync/askBuoySyncAdapter.js +1 -135
- package/lib/module/sync/askBuoySyncAdapter.test.js +1 -140
- package/lib/module/sync/wire.js +1 -47
- package/lib/module/types.js +1 -4
- package/lib/typescript/components/ApprovalCard.d.ts +9 -1
- package/lib/typescript/preset.d.ts +4 -2
- package/lib/typescript/store/askBuoyStore.d.ts +32 -4
- package/lib/typescript/store/useAskBuoy.d.ts +3 -2
- package/lib/typescript/sync/askBuoySyncAdapter.d.ts +3 -0
- package/package.json +9 -9
- package/lib/commonjs/blocks/AskBlocks.js.map +0 -1
- package/lib/commonjs/blocks/BlockRenderer.js.map +0 -1
- package/lib/commonjs/blocks/ChromePrototypes.js.map +0 -1
- package/lib/commonjs/blocks/DataBlocks.js.map +0 -1
- package/lib/commonjs/blocks/ExtraBlocks.js.map +0 -1
- package/lib/commonjs/blocks/MediaBlocks.js.map +0 -1
- package/lib/commonjs/blocks/ReceiptBlocks.js.map +0 -1
- package/lib/commonjs/blocks/blockText.js.map +0 -1
- package/lib/commonjs/blocks/blockText.test.js.map +0 -1
- package/lib/commonjs/blocks/context.js.map +0 -1
- package/lib/commonjs/blocks/icons.js.map +0 -1
- package/lib/commonjs/blocks/index.js.map +0 -1
- package/lib/commonjs/blocks/listRow.test.js.map +0 -1
- package/lib/commonjs/blocks/pageState.js.map +0 -1
- package/lib/commonjs/blocks/pageState.test.js.map +0 -1
- package/lib/commonjs/blocks/primitives.js.map +0 -1
- package/lib/commonjs/blocks/primitivesIndex.js.map +0 -1
- package/lib/commonjs/components/ApprovalCard.js.map +0 -1
- package/lib/commonjs/components/AskBuoyHeader.js.map +0 -1
- package/lib/commonjs/components/AskBuoyIcon.js.map +0 -1
- package/lib/commonjs/components/AskBuoyModal.js.map +0 -1
- package/lib/commonjs/components/AskBuoySettings.js.map +0 -1
- package/lib/commonjs/components/ChangesBar.js.map +0 -1
- package/lib/commonjs/components/Composer.js.map +0 -1
- package/lib/commonjs/components/EmptyState.js.map +0 -1
- package/lib/commonjs/components/KeyboardPad.js.map +0 -1
- package/lib/commonjs/components/Markdown.js.map +0 -1
- package/lib/commonjs/components/MessageList.js.map +0 -1
- package/lib/commonjs/components/QueuedMessages.js.map +0 -1
- package/lib/commonjs/components/ThinkingStrip.js.map +0 -1
- package/lib/commonjs/components/TypingDots.js.map +0 -1
- package/lib/commonjs/components/markdownParse.js.map +0 -1
- package/lib/commonjs/components/markdownParse.test.js.map +0 -1
- package/lib/commonjs/components/useCopyAction.js.map +0 -1
- package/lib/commonjs/index.js.map +0 -1
- package/lib/commonjs/preset.js.map +0 -1
- package/lib/commonjs/store/activityGroups.js.map +0 -1
- package/lib/commonjs/store/activityGroups.test.js.map +0 -1
- package/lib/commonjs/store/askBuoySettings.js.map +0 -1
- package/lib/commonjs/store/askBuoyStore.js.map +0 -1
- package/lib/commonjs/store/blockPlacement.js.map +0 -1
- package/lib/commonjs/store/blockPlacement.test.js.map +0 -1
- package/lib/commonjs/store/queue.test.js.map +0 -1
- package/lib/commonjs/store/resetConversation.js.map +0 -1
- package/lib/commonjs/store/restorePending.test.js.map +0 -1
- package/lib/commonjs/store/restoredIds.test.js.map +0 -1
- package/lib/commonjs/store/suggestions.js.map +0 -1
- package/lib/commonjs/store/suggestions.test.js.map +0 -1
- package/lib/commonjs/store/systemLine.test.js.map +0 -1
- package/lib/commonjs/store/ticketPrompt.js.map +0 -1
- package/lib/commonjs/store/traceText.js.map +0 -1
- package/lib/commonjs/store/traceText.test.js.map +0 -1
- package/lib/commonjs/store/transcriptPersistence.js.map +0 -1
- package/lib/commonjs/store/transcriptPersistence.test.js.map +0 -1
- package/lib/commonjs/store/turnRendering.test.js.map +0 -1
- package/lib/commonjs/store/useAskBuoy.js.map +0 -1
- package/lib/commonjs/store/useAskBuoySettings.js.map +0 -1
- package/lib/commonjs/sync/askBuoySyncAdapter.js.map +0 -1
- package/lib/commonjs/sync/askBuoySyncAdapter.test.js.map +0 -1
- package/lib/commonjs/sync/wire.js.map +0 -1
- package/lib/commonjs/types.js.map +0 -1
- package/lib/module/blocks/AskBlocks.js.map +0 -1
- package/lib/module/blocks/BlockRenderer.js.map +0 -1
- package/lib/module/blocks/ChromePrototypes.js.map +0 -1
- package/lib/module/blocks/DataBlocks.js.map +0 -1
- package/lib/module/blocks/ExtraBlocks.js.map +0 -1
- package/lib/module/blocks/MediaBlocks.js.map +0 -1
- package/lib/module/blocks/ReceiptBlocks.js.map +0 -1
- package/lib/module/blocks/blockText.js.map +0 -1
- package/lib/module/blocks/blockText.test.js.map +0 -1
- package/lib/module/blocks/context.js.map +0 -1
- package/lib/module/blocks/icons.js.map +0 -1
- package/lib/module/blocks/index.js.map +0 -1
- package/lib/module/blocks/listRow.test.js.map +0 -1
- package/lib/module/blocks/pageState.js.map +0 -1
- package/lib/module/blocks/pageState.test.js.map +0 -1
- package/lib/module/blocks/primitives.js.map +0 -1
- package/lib/module/blocks/primitivesIndex.js.map +0 -1
- package/lib/module/components/ApprovalCard.js.map +0 -1
- package/lib/module/components/AskBuoyHeader.js.map +0 -1
- package/lib/module/components/AskBuoyIcon.js.map +0 -1
- package/lib/module/components/AskBuoyModal.js.map +0 -1
- package/lib/module/components/AskBuoySettings.js.map +0 -1
- package/lib/module/components/ChangesBar.js.map +0 -1
- package/lib/module/components/Composer.js.map +0 -1
- package/lib/module/components/EmptyState.js.map +0 -1
- package/lib/module/components/KeyboardPad.js.map +0 -1
- package/lib/module/components/Markdown.js.map +0 -1
- package/lib/module/components/MessageList.js.map +0 -1
- package/lib/module/components/QueuedMessages.js.map +0 -1
- package/lib/module/components/ThinkingStrip.js.map +0 -1
- package/lib/module/components/TypingDots.js.map +0 -1
- package/lib/module/components/markdownParse.js.map +0 -1
- package/lib/module/components/markdownParse.test.js.map +0 -1
- package/lib/module/components/useCopyAction.js.map +0 -1
- package/lib/module/index.js.map +0 -1
- package/lib/module/preset.js.map +0 -1
- package/lib/module/store/activityGroups.js.map +0 -1
- package/lib/module/store/activityGroups.test.js.map +0 -1
- package/lib/module/store/askBuoySettings.js.map +0 -1
- package/lib/module/store/askBuoyStore.js.map +0 -1
- package/lib/module/store/blockPlacement.js.map +0 -1
- package/lib/module/store/blockPlacement.test.js.map +0 -1
- package/lib/module/store/queue.test.js.map +0 -1
- package/lib/module/store/resetConversation.js.map +0 -1
- package/lib/module/store/restorePending.test.js.map +0 -1
- package/lib/module/store/restoredIds.test.js.map +0 -1
- package/lib/module/store/suggestions.js.map +0 -1
- package/lib/module/store/suggestions.test.js.map +0 -1
- package/lib/module/store/systemLine.test.js.map +0 -1
- package/lib/module/store/ticketPrompt.js.map +0 -1
- package/lib/module/store/traceText.js.map +0 -1
- package/lib/module/store/traceText.test.js.map +0 -1
- package/lib/module/store/transcriptPersistence.js.map +0 -1
- package/lib/module/store/transcriptPersistence.test.js.map +0 -1
- package/lib/module/store/turnRendering.test.js.map +0 -1
- package/lib/module/store/useAskBuoy.js.map +0 -1
- package/lib/module/store/useAskBuoySettings.js.map +0 -1
- package/lib/module/sync/askBuoySyncAdapter.js.map +0 -1
- package/lib/module/sync/askBuoySyncAdapter.test.js.map +0 -1
- package/lib/module/sync/wire.js.map +0 -1
- package/lib/module/types.js.map +0 -1
- package/lib/typescript/blocks/AskBlocks.d.ts.map +0 -1
- package/lib/typescript/blocks/BlockRenderer.d.ts.map +0 -1
- package/lib/typescript/blocks/ChromePrototypes.d.ts.map +0 -1
- package/lib/typescript/blocks/DataBlocks.d.ts.map +0 -1
- package/lib/typescript/blocks/ExtraBlocks.d.ts.map +0 -1
- package/lib/typescript/blocks/MediaBlocks.d.ts.map +0 -1
- package/lib/typescript/blocks/ReceiptBlocks.d.ts.map +0 -1
- package/lib/typescript/blocks/blockText.d.ts.map +0 -1
- package/lib/typescript/blocks/blockText.test.d.ts.map +0 -1
- package/lib/typescript/blocks/context.d.ts.map +0 -1
- package/lib/typescript/blocks/icons.d.ts.map +0 -1
- package/lib/typescript/blocks/index.d.ts.map +0 -1
- package/lib/typescript/blocks/listRow.test.d.ts.map +0 -1
- package/lib/typescript/blocks/pageState.d.ts.map +0 -1
- package/lib/typescript/blocks/pageState.test.d.ts.map +0 -1
- package/lib/typescript/blocks/primitives.d.ts.map +0 -1
- package/lib/typescript/blocks/primitivesIndex.d.ts.map +0 -1
- package/lib/typescript/components/ApprovalCard.d.ts.map +0 -1
- package/lib/typescript/components/AskBuoyHeader.d.ts.map +0 -1
- package/lib/typescript/components/AskBuoyIcon.d.ts.map +0 -1
- package/lib/typescript/components/AskBuoyModal.d.ts.map +0 -1
- package/lib/typescript/components/AskBuoySettings.d.ts.map +0 -1
- package/lib/typescript/components/ChangesBar.d.ts.map +0 -1
- package/lib/typescript/components/Composer.d.ts.map +0 -1
- package/lib/typescript/components/EmptyState.d.ts.map +0 -1
- package/lib/typescript/components/KeyboardPad.d.ts.map +0 -1
- package/lib/typescript/components/Markdown.d.ts.map +0 -1
- package/lib/typescript/components/MessageList.d.ts.map +0 -1
- package/lib/typescript/components/QueuedMessages.d.ts.map +0 -1
- package/lib/typescript/components/ThinkingStrip.d.ts.map +0 -1
- package/lib/typescript/components/TypingDots.d.ts.map +0 -1
- package/lib/typescript/components/markdownParse.d.ts.map +0 -1
- package/lib/typescript/components/markdownParse.test.d.ts.map +0 -1
- package/lib/typescript/components/useCopyAction.d.ts.map +0 -1
- package/lib/typescript/index.d.ts.map +0 -1
- package/lib/typescript/preset.d.ts.map +0 -1
- package/lib/typescript/store/activityGroups.d.ts.map +0 -1
- package/lib/typescript/store/activityGroups.test.d.ts.map +0 -1
- package/lib/typescript/store/askBuoySettings.d.ts.map +0 -1
- package/lib/typescript/store/askBuoyStore.d.ts.map +0 -1
- package/lib/typescript/store/blockPlacement.d.ts.map +0 -1
- package/lib/typescript/store/blockPlacement.test.d.ts.map +0 -1
- package/lib/typescript/store/queue.test.d.ts.map +0 -1
- package/lib/typescript/store/resetConversation.d.ts.map +0 -1
- package/lib/typescript/store/restorePending.test.d.ts.map +0 -1
- package/lib/typescript/store/restoredIds.test.d.ts.map +0 -1
- package/lib/typescript/store/suggestions.d.ts.map +0 -1
- package/lib/typescript/store/suggestions.test.d.ts.map +0 -1
- package/lib/typescript/store/systemLine.test.d.ts.map +0 -1
- package/lib/typescript/store/ticketPrompt.d.ts.map +0 -1
- package/lib/typescript/store/traceText.d.ts.map +0 -1
- package/lib/typescript/store/traceText.test.d.ts.map +0 -1
- package/lib/typescript/store/transcriptPersistence.d.ts.map +0 -1
- package/lib/typescript/store/transcriptPersistence.test.d.ts.map +0 -1
- package/lib/typescript/store/turnRendering.test.d.ts.map +0 -1
- package/lib/typescript/store/useAskBuoy.d.ts.map +0 -1
- package/lib/typescript/store/useAskBuoySettings.d.ts.map +0 -1
- package/lib/typescript/sync/askBuoySyncAdapter.d.ts.map +0 -1
- package/lib/typescript/sync/askBuoySyncAdapter.test.d.ts.map +0 -1
- package/lib/typescript/sync/wire.d.ts.map +0 -1
- package/lib/typescript/types.d.ts.map +0 -1
|
@@ -1,78 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _vitest = require("vitest");
|
|
4
|
-
var _activityGroups = require("./activityGroups");
|
|
5
|
-
/**
|
|
6
|
-
* The fold rule: consecutive successful reads fold, nothing else ever does,
|
|
7
|
-
* and a group never crosses a write.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
const call = (id, toolId, effect, status = "ok") => ({
|
|
11
|
-
id,
|
|
12
|
-
toolId,
|
|
13
|
-
action: "x",
|
|
14
|
-
label: `${toolId} ${id}`,
|
|
15
|
-
status,
|
|
16
|
-
effect
|
|
17
|
-
});
|
|
18
|
-
(0, _vitest.describe)("groupCalls", () => {
|
|
19
|
-
(0, _vitest.it)("leaves a single read as an ordinary row", () => {
|
|
20
|
-
const items = (0, _activityGroups.groupCalls)([call("a", "console", "read")]);
|
|
21
|
-
(0, _vitest.expect)(items).toEqual([{
|
|
22
|
-
kind: "call",
|
|
23
|
-
call: _vitest.expect.objectContaining({
|
|
24
|
-
id: "a"
|
|
25
|
-
})
|
|
26
|
-
}]);
|
|
27
|
-
});
|
|
28
|
-
(0, _vitest.it)("folds consecutive successful reads and names the tools once each", () => {
|
|
29
|
-
const items = (0, _activityGroups.groupCalls)([call("a", "network", "read"), call("b", "storage", "read"), call("c", "storage", "read")]);
|
|
30
|
-
(0, _vitest.expect)(items).toHaveLength(1);
|
|
31
|
-
const g = items[0];
|
|
32
|
-
(0, _vitest.expect)(g.kind).toBe("reads");
|
|
33
|
-
(0, _vitest.expect)(g.kind === "reads" && g.count).toBe(3);
|
|
34
|
-
(0, _vitest.expect)(g.kind === "reads" && g.label).toBe("Looked at Network and Storage");
|
|
35
|
-
});
|
|
36
|
-
(0, _vitest.it)("never folds a write, and never folds reads across one", () => {
|
|
37
|
-
const items = (0, _activityGroups.groupCalls)([call("a", "network", "read"), call("b", "storage", "read"), call("w", "zustand", "write"), call("c", "storage", "read"), call("d", "console", "read")]);
|
|
38
|
-
(0, _vitest.expect)(items.map(i => i.kind === "reads" ? `reads:${i.count}` : `call:${i.call.id}`)).toEqual(["reads:2", "call:w", "reads:2"]);
|
|
39
|
-
});
|
|
40
|
-
(0, _vitest.it)("keeps failed, refused, declined, stopped and running reads as their own rows", () => {
|
|
41
|
-
const items = (0, _activityGroups.groupCalls)([call("a", "network", "read"), call("f", "storage", "read", "failed"), call("b", "storage", "read"), call("r", "storage", "read", "running")]);
|
|
42
|
-
(0, _vitest.expect)(items.map(i => i.kind)).toEqual(["call", "call", "call", "call"]);
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
(0, _vitest.describe)("turnFooter", () => {
|
|
46
|
-
(0, _vitest.it)("reports duration and action count", () => {
|
|
47
|
-
(0, _vitest.expect)((0, _activityGroups.turnFooter)({
|
|
48
|
-
startedAt: 1_000,
|
|
49
|
-
endedAt: 13_000,
|
|
50
|
-
toolCalls: [call("a", "network", "read"), call("b", "zustand", "write")]
|
|
51
|
-
})).toBe("12s · 2 actions");
|
|
52
|
-
});
|
|
53
|
-
(0, _vitest.it)("separates the outcomes that were not plain successes", () => {
|
|
54
|
-
(0, _vitest.expect)((0, _activityGroups.turnFooter)({
|
|
55
|
-
startedAt: 0,
|
|
56
|
-
endedAt: 48_000,
|
|
57
|
-
toolCalls: [call("a", "network", "read"), call("b", "storage", "write", "failed"), call("c", "storage", "destructive", "declined"), call("d", "storage", "write", "stopped")]
|
|
58
|
-
})).toBe("48s · 4 actions · 1 failed · 1 declined · 1 not run");
|
|
59
|
-
});
|
|
60
|
-
(0, _vitest.it)("invents no duration for a note with no start time", () => {
|
|
61
|
-
(0, _vitest.expect)((0, _activityGroups.turnFooter)({
|
|
62
|
-
endedAt: 5_000,
|
|
63
|
-
toolCalls: []
|
|
64
|
-
})).toBeNull();
|
|
65
|
-
(0, _vitest.expect)((0, _activityGroups.turnFooter)({
|
|
66
|
-
endedAt: 5_000,
|
|
67
|
-
toolCalls: [call("a", "network", "read")]
|
|
68
|
-
})).toBe("1 action");
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
(0, _vitest.describe)("formatElapsed", () => {
|
|
72
|
-
(0, _vitest.it)("is compact", () => {
|
|
73
|
-
(0, _vitest.expect)((0, _activityGroups.formatElapsed)(4_200)).toBe("4s");
|
|
74
|
-
(0, _vitest.expect)((0, _activityGroups.formatElapsed)(64_000)).toBe("1m 04s");
|
|
75
|
-
(0, _vitest.expect)((0, _activityGroups.formatElapsed)(3_720_000)).toBe("1h 02m");
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
//# sourceMappingURL=activityGroups.test.js.map
|
|
1
|
+
"use strict";var _vitest=require("vitest"),_activityGroups=require("./activityGroups");const call=(t,e,a,s="ok")=>({id:t,toolId:e,action:"x",label:`${e} ${t}`,status:s,effect:a});(0,_vitest.describe)("groupCalls",()=>{(0,_vitest.it)("leaves a single read as an ordinary row",()=>{const t=(0,_activityGroups.groupCalls)([call("a","console","read")]);(0,_vitest.expect)(t).toEqual([{kind:"call",call:_vitest.expect.objectContaining({id:"a"})}])}),(0,_vitest.it)("folds consecutive successful reads and names the tools once each",()=>{const t=(0,_activityGroups.groupCalls)([call("a","network","read"),call("b","storage","read"),call("c","storage","read")]);(0,_vitest.expect)(t).toHaveLength(1);const e=t[0];(0,_vitest.expect)(e.kind).toBe("reads"),(0,_vitest.expect)("reads"===e.kind&&e.count).toBe(3),(0,_vitest.expect)("reads"===e.kind&&e.label).toBe("Looked at Network and Storage")}),(0,_vitest.it)("never folds a write, and never folds reads across one",()=>{const t=(0,_activityGroups.groupCalls)([call("a","network","read"),call("b","storage","read"),call("w","zustand","write"),call("c","storage","read"),call("d","console","read")]);(0,_vitest.expect)(t.map(t=>"reads"===t.kind?`reads:${t.count}`:`call:${t.call.id}`)).toEqual(["reads:2","call:w","reads:2"])}),(0,_vitest.it)("keeps failed, refused, declined, stopped and running reads as their own rows",()=>{const t=(0,_activityGroups.groupCalls)([call("a","network","read"),call("f","storage","read","failed"),call("b","storage","read"),call("r","storage","read","running")]);(0,_vitest.expect)(t.map(t=>t.kind)).toEqual(["call","call","call","call"])})}),(0,_vitest.describe)("turnFooter",()=>{(0,_vitest.it)("reports duration and action count",()=>{(0,_vitest.expect)((0,_activityGroups.turnFooter)({startedAt:1e3,endedAt:13e3,toolCalls:[call("a","network","read"),call("b","zustand","write")]})).toBe("12s · 2 actions")}),(0,_vitest.it)("separates the outcomes that were not plain successes",()=>{(0,_vitest.expect)((0,_activityGroups.turnFooter)({startedAt:0,endedAt:48e3,toolCalls:[call("a","network","read"),call("b","storage","write","failed"),call("c","storage","destructive","declined"),call("d","storage","write","stopped")]})).toBe("48s · 4 actions · 1 failed · 1 declined · 1 not run")}),(0,_vitest.it)("invents no duration for a note with no start time",()=>{(0,_vitest.expect)((0,_activityGroups.turnFooter)({endedAt:5e3,toolCalls:[]})).toBeNull(),(0,_vitest.expect)((0,_activityGroups.turnFooter)({endedAt:5e3,toolCalls:[call("a","network","read")]})).toBe("1 action")})}),(0,_vitest.describe)("formatElapsed",()=>{(0,_vitest.it)("is compact",()=>{(0,_vitest.expect)((0,_activityGroups.formatElapsed)(4200)).toBe("4s"),(0,_vitest.expect)((0,_activityGroups.formatElapsed)(64e3)).toBe("1m 04s"),(0,_vitest.expect)((0,_activityGroups.formatElapsed)(372e4)).toBe("1h 02m")})});
|
|
@@ -1,72 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.askBuoySettings = exports.DEFAULT_SETTINGS = void 0;
|
|
7
|
-
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
8
|
-
/**
|
|
9
|
-
* Ask Buoy's own preferences — the things a tester sets on the sheet, not the
|
|
10
|
-
* things a developer sets in `askBuoy={{ … }}`.
|
|
11
|
-
*
|
|
12
|
-
* Module-level and subscribable for the same reason the transcript is: the
|
|
13
|
-
* sheet unmounts whenever the tool is closed or minimised, and a preference
|
|
14
|
-
* that reset on every close would not be a preference.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
const DEFAULT_SETTINGS = exports.DEFAULT_SETTINGS = {
|
|
18
|
-
showThinking: false,
|
|
19
|
-
bypassApprovals: false,
|
|
20
|
-
readOnly: false
|
|
21
|
-
};
|
|
22
|
-
const store = (0, _sharedUi.definePersistedSetting)(`${_sharedUi.devToolsStorageKeys.base}_ask_buoy_settings`, DEFAULT_SETTINGS, {
|
|
23
|
-
sanitize: merged => ({
|
|
24
|
-
showThinking: merged.showThinking === true,
|
|
25
|
-
// Fails closed: anything but a literal `true` on disk means "ask me".
|
|
26
|
-
bypassApprovals: merged.bypassApprovals === true,
|
|
27
|
-
readOnly: merged.readOnly === true
|
|
28
|
-
})
|
|
29
|
-
});
|
|
30
|
-
let current = DEFAULT_SETTINGS;
|
|
31
|
-
let loaded = false;
|
|
32
|
-
const listeners = new Set();
|
|
33
|
-
function emit() {
|
|
34
|
-
for (const fn of listeners) {
|
|
35
|
-
try {
|
|
36
|
-
fn();
|
|
37
|
-
} catch {
|
|
38
|
-
// A throwing subscriber must not take the sheet down.
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
const askBuoySettings = exports.askBuoySettings = {
|
|
43
|
-
get: () => current,
|
|
44
|
-
subscribe(fn) {
|
|
45
|
-
listeners.add(fn);
|
|
46
|
-
// First subscriber pays for the read; everyone after gets the cached value.
|
|
47
|
-
if (!loaded) {
|
|
48
|
-
loaded = true;
|
|
49
|
-
void store.load().then(value => {
|
|
50
|
-
current = value;
|
|
51
|
-
emit();
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
return () => listeners.delete(fn);
|
|
55
|
-
},
|
|
56
|
-
set(key, value) {
|
|
57
|
-
if (current[key] === value) return;
|
|
58
|
-
current = {
|
|
59
|
-
...current,
|
|
60
|
-
[key]: value
|
|
61
|
-
};
|
|
62
|
-
emit();
|
|
63
|
-
void store.save(current);
|
|
64
|
-
},
|
|
65
|
-
/** Tests only — the module cache would otherwise leak between them. */
|
|
66
|
-
reset() {
|
|
67
|
-
current = DEFAULT_SETTINGS;
|
|
68
|
-
loaded = false;
|
|
69
|
-
void store.clear();
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
//# sourceMappingURL=askBuoySettings.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.askBuoySettings=exports.DEFAULT_SETTINGS=void 0;var _sharedUi=require("@buoy-gg/shared-ui");const DEFAULT_SETTINGS=exports.DEFAULT_SETTINGS={showThinking:!1,bypassApprovals:!1,readOnly:!1},store=(0,_sharedUi.definePersistedSetting)(`${_sharedUi.devToolsStorageKeys.base}_ask_buoy_settings`,DEFAULT_SETTINGS,{sanitize:e=>({showThinking:!0===e.showThinking,bypassApprovals:!0===e.bypassApprovals,readOnly:!0===e.readOnly})});let current=DEFAULT_SETTINGS,loaded=!1;const listeners=new Set;function emit(){for(const e of listeners)try{e()}catch{}}const askBuoySettings=exports.askBuoySettings={get:()=>current,subscribe:e=>(listeners.add(e),loaded||(loaded=!0,store.load().then(e=>{current=e,emit()})),()=>listeners.delete(e)),set(e,s){current[e]!==s&&(current={...current,[e]:s},emit(),store.save(current))},reset(){current=DEFAULT_SETTINGS,loaded=!1,store.clear()}};
|