@pasko70/pibo 3.4.1 → 3.4.3
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/agent-runtime/routed-session.js +6 -1
- package/dist/agent-runtimes/pi/adapter.js +4 -1
- package/dist/agent-runtimes/pi/history.js +55 -1
- package/dist/apps/chat/chat-settings-routes.js +10 -0
- package/dist/apps/chat/data/chat-data-mappers.js +1 -1
- package/dist/apps/chat/stream.js +1 -1
- package/dist/apps/chat/trace-v2.js +1 -0
- package/dist/apps/chat/web-app.js +2 -1
- package/dist/apps/chat-ui/assets/{dist-DnZL1rRp.js → dist-B4YhOxh0.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-D0md0xIR.js → dist-BkUu8WPA.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-ERKABhp3.js → dist-C8GzUMPk.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-DHnaUMlq.js → dist-Cyb4rVa6.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-Abz605MV.js → dist-DeMKnZR8.js} +1 -1
- package/dist/apps/chat-ui/assets/index-BOceJ0jM.css +1 -0
- package/dist/apps/chat-ui/assets/index-Dk4mbXAB.js +228 -0
- package/dist/apps/chat-ui/index.html +2 -2
- package/dist/apps/chat-vscode-web/assets/index-0oTGFHni.js +43 -0
- package/dist/apps/chat-vscode-web/index.html +1 -1
- package/dist/auth/openai-codex-usage.js +34 -5
- package/dist/core/session-router.js +95 -11
- package/dist/core/user-settings.js +11 -0
- package/dist/data/ingest-service.js +1 -1
- package/dist/data/schema.js +10 -1
- package/dist/debug/agents.js +5 -3
- package/dist/gateway/server.js +1 -1
- package/dist/session-ui/terminalRows.js +3 -1
- package/dist/sessions/pibo-data-store.js +38 -1
- package/dist/sessions/store.js +38 -0
- package/dist/shared/tool-call-metrics.js +138 -0
- package/dist/shared/tool-call-token-settings.js +45 -0
- package/dist/shared/trace-event-projection.js +2 -0
- package/dist/shared/trace-live-reducer.js +1 -0
- package/dist/shared/trace-patch-nodes.js +4 -0
- package/dist/subagents/context.js +2 -2
- package/dist/subagents/observation-query.js +28 -1
- package/dist/subagents/observations.js +8 -0
- package/dist/subagents/tool.js +12 -8
- package/npm-shrinkwrap.json +22 -13
- package/package.json +2 -1
- package/dist/apps/chat-ui/assets/index-BWVPNFjU.js +0 -228
- package/dist/apps/chat-ui/assets/index-CywOD6EF.css +0 -1
- package/dist/apps/chat-vscode-web/assets/index-CZmxeSn3.js +0 -43
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const TIKTOKEN_ENCODINGS = [
|
|
2
|
+
"o200k_base",
|
|
3
|
+
"cl100k_base",
|
|
4
|
+
"p50k_base",
|
|
5
|
+
"r50k_base",
|
|
6
|
+
"p50k_edit",
|
|
7
|
+
"gpt2",
|
|
8
|
+
];
|
|
9
|
+
export const DEFAULT_TOOL_METRIC_TOKEN_CALCULATION = {
|
|
10
|
+
method: "characters",
|
|
11
|
+
factor: 4,
|
|
12
|
+
};
|
|
13
|
+
export function parseToolMetricTokenCalculation(value) {
|
|
14
|
+
if (!isRecord(value))
|
|
15
|
+
return undefined;
|
|
16
|
+
if (value.method === "characters") {
|
|
17
|
+
return typeof value.factor === "number" && Number.isFinite(value.factor) && value.factor > 0
|
|
18
|
+
? { method: "characters", factor: value.factor }
|
|
19
|
+
: undefined;
|
|
20
|
+
}
|
|
21
|
+
if (value.method === "tiktoken" && typeof value.encoding === "string" && TIKTOKEN_ENCODINGS.includes(value.encoding)) {
|
|
22
|
+
return { method: "tiktoken", encoding: value.encoding };
|
|
23
|
+
}
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
export function sanitizeToolMetricTokenCalculation(value) {
|
|
27
|
+
return parseToolMetricTokenCalculation(value) ?? DEFAULT_TOOL_METRIC_TOKEN_CALCULATION;
|
|
28
|
+
}
|
|
29
|
+
export function toolMetricTokenBasis(calculation) {
|
|
30
|
+
return calculation.method === "characters"
|
|
31
|
+
? `characters/${calculation.factor}`
|
|
32
|
+
: `tiktoken/${calculation.encoding}`;
|
|
33
|
+
}
|
|
34
|
+
export function toolMetricTokenBasisLabel(basis) {
|
|
35
|
+
if (!basis)
|
|
36
|
+
return "—";
|
|
37
|
+
if (basis === "chars/4")
|
|
38
|
+
return "chars ÷ 4";
|
|
39
|
+
if (basis.startsWith("characters/"))
|
|
40
|
+
return `chars ÷ ${basis.slice("characters/".length)}`;
|
|
41
|
+
return `tiktoken · ${basis.slice("tiktoken/".length)}`;
|
|
42
|
+
}
|
|
43
|
+
function isRecord(value) {
|
|
44
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
45
|
+
}
|
|
@@ -626,6 +626,7 @@ function traceNodeFromEvent(piboSessionId, event, childByParent, linkedChildByTo
|
|
|
626
626
|
toolCallId: event.toolCallId,
|
|
627
627
|
toolInvocationOrdinal: event.toolInvocationOrdinal ?? 0,
|
|
628
628
|
intent: event.intent,
|
|
629
|
+
toolMetrics: event.type === "tool_execution_finished" ? event.toolMetrics : undefined,
|
|
629
630
|
type: subagentTool ? "agent.delegation" : "tool.call",
|
|
630
631
|
title: event.toolName,
|
|
631
632
|
status: event.type === "tool_execution_finished"
|
|
@@ -1102,6 +1103,7 @@ function thinkingEventNodeId(event) {
|
|
|
1102
1103
|
function mergeToolEvent(target, update) {
|
|
1103
1104
|
target.status = update.status;
|
|
1104
1105
|
target.intent = update.intent ?? target.intent;
|
|
1106
|
+
target.toolMetrics = update.toolMetrics ?? target.toolMetrics;
|
|
1105
1107
|
target.summary = update.summary ?? target.summary;
|
|
1106
1108
|
target.input = mergeDelegationInput(target, update);
|
|
1107
1109
|
target.output = update.output ?? target.output;
|
|
@@ -122,6 +122,7 @@ function storedEventFromStreamEvent(event, piboSessionId, nextSequence, now) {
|
|
|
122
122
|
toolName: event.toolName,
|
|
123
123
|
toolInvocationOrdinal: validOrdinal(event.toolInvocationOrdinal) ? event.toolInvocationOrdinal : undefined,
|
|
124
124
|
result: event.result,
|
|
125
|
+
toolMetrics: event.toolMetrics,
|
|
125
126
|
isError: Boolean(event.isError),
|
|
126
127
|
...(event.intent ? { intent: event.intent } : {}),
|
|
127
128
|
};
|
|
@@ -60,6 +60,10 @@ function traceNodeShallowEqual(left, right) {
|
|
|
60
60
|
left.startedAt === right.startedAt &&
|
|
61
61
|
left.completedAt === right.completedAt &&
|
|
62
62
|
left.durationMs === right.durationMs &&
|
|
63
|
+
left.toolMetrics?.durationMs === right.toolMetrics?.durationMs &&
|
|
64
|
+
left.toolMetrics?.inputTokens === right.toolMetrics?.inputTokens &&
|
|
65
|
+
left.toolMetrics?.outputTokens === right.toolMetrics?.outputTokens &&
|
|
66
|
+
left.toolMetrics?.tokenBasis === right.toolMetrics?.tokenBasis &&
|
|
63
67
|
left.summary === right.summary &&
|
|
64
68
|
left.input === right.input &&
|
|
65
69
|
left.output === right.output &&
|
|
@@ -33,14 +33,14 @@ export function getDelegatedAgentContextFile(subagents) {
|
|
|
33
33
|
"",
|
|
34
34
|
"pibo_run_wait({ runId, timeoutMs? }) # bounded wait only; expiry does not stop the child",
|
|
35
35
|
"pibo_run_status({ runId }) # compact lifecycle state",
|
|
36
|
-
"pibo_agents_observe({ requestIds?: [runId], textContains?, textRegex?, afterSequence?, limit?, includeTools?, toolDetail?, ... })",
|
|
36
|
+
"pibo_agents_observe({ requestIds?: [runId], cursorMode?: \"auto\"|\"history\", textContains?, textRegex?, afterSequence?, limit?, includeTools?, toolDetail?, ... })",
|
|
37
37
|
"pibo_run_read({ runId }) # terminal result, including the complete final agent message",
|
|
38
38
|
"pibo_run_cancel({ runId }) # explicit request cancellation",
|
|
39
39
|
"pibo_agents_list_agents({}) # available definitions and persistent child instances",
|
|
40
40
|
"pibo_agents_kill({ agentId }) # terminate one persistent child session subtree",
|
|
41
41
|
"```",
|
|
42
42
|
"",
|
|
43
|
-
"Set `sessionName` on every send to a nonblank human-readable child title of at most 40 Unicode code points. Pibo trims surrounding whitespace and rejects missing, blank, non-string, or oversized names before creating a yielded run or child session. Reuse a stable `threadKey` to continue the same child Pibo Session; a new `sessionName` updates its title without changing identity. A wait timeout
|
|
43
|
+
"Set `sessionName` on every send to a nonblank human-readable child title of at most 40 Unicode code points. Pibo trims surrounding whitespace and rejects missing, blank, non-string, or oversized names before creating a yielded run or child session. Reuse a stable `threadKey` to continue the same child Pibo Session; a new `sessionName` updates its title without changing identity. A wait timeout only wakes the orchestrator. Observe uses `cursorMode: \"auto\"` by default: the first equivalent query returns the newest completed assistant messages, and later calls return only unread messages. Use `cursorMode: \"history\"` only to reread earlier observations. Streaming deltas, duplicate tool progress events, and tools are hidden by default. Inspect tools only when a child stalls, reports an error, or needs targeted diagnosis; prefer exact `toolCallIds`, then `includeTools: true`, and use `toolDetail: \"full\"` only when summaries are insufficient. Use `textContains` for case-insensitive substring matching or `textRegex` for rg/Rust-regex matching; both must match when supplied together. Text, regex, identity, and event filters create separate automatic query cursors; an explicit `afterSequence` overrides and advances the matching automatic cursor.",
|
|
44
44
|
"",
|
|
45
45
|
"Observe progress and decide whether to continue waiting, steer through a new message after the current turn, cancel the request, or kill the child session.",
|
|
46
46
|
"",
|
|
@@ -1,6 +1,31 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { PIBO_AGENT_OBSERVATION_DEFAULT_EVENT_TYPES, PIBO_AGENT_OBSERVATION_DEFAULT_TOOL_EVENT_TYPES, normalizePiboAgentObservationCursor, normalizePiboAgentObservationCursorMode, normalizePiboAgentObservationLimit, normalizePiboAgentObservationOrder, normalizePiboAgentObservationToolDetail, parsePiboAgentObservationTimestamp, piboAgentObservationKind, piboAgentObservationToolSummary, } from "./observations.js";
|
|
2
3
|
import { PIBO_AGENT_TEXT_REGEX_BATCH_MAX_ITEMS, PIBO_AGENT_TEXT_REGEX_BATCH_TARGET_BYTES, matchPiboAgentObservationTextRegex, preparePiboAgentObservationTextRegex, } from "./observation-text-regex.js";
|
|
4
|
+
function sortedUnique(values) {
|
|
5
|
+
return values ? [...new Set(values)].sort() : undefined;
|
|
6
|
+
}
|
|
7
|
+
export function piboAgentObservationCursorScopeKey(input) {
|
|
8
|
+
const scope = {
|
|
9
|
+
requestIds: sortedUnique(input.requestIds),
|
|
10
|
+
toolCallIds: sortedUnique(input.toolCallIds),
|
|
11
|
+
agentIds: sortedUnique(input.agentIds),
|
|
12
|
+
names: sortedUnique(input.names),
|
|
13
|
+
threadKeys: sortedUnique(input.threadKeys),
|
|
14
|
+
eventTypes: sortedUnique(input.eventTypes),
|
|
15
|
+
kinds: input.kinds ? [...new Set(input.kinds)].sort() : undefined,
|
|
16
|
+
roles: sortedUnique(input.roles),
|
|
17
|
+
since: input.since,
|
|
18
|
+
until: input.until,
|
|
19
|
+
textContains: input.textContains?.toLowerCase(),
|
|
20
|
+
textRegex: input.textRegex,
|
|
21
|
+
includeTools: input.includeTools === true,
|
|
22
|
+
toolDetail: input.toolDetail ?? "summary",
|
|
23
|
+
includeDetails: input.includeDetails === true,
|
|
24
|
+
};
|
|
25
|
+
return `v1:${createHash("sha256").update(JSON.stringify(scope)).digest("hex")}`;
|
|
26
|
+
}
|
|
3
27
|
export function preparePiboAgentObservationQuery(input = {}) {
|
|
28
|
+
const cursorMode = normalizePiboAgentObservationCursorMode(input.cursorMode);
|
|
4
29
|
const order = normalizePiboAgentObservationOrder(input.order);
|
|
5
30
|
const limit = normalizePiboAgentObservationLimit(input.limit);
|
|
6
31
|
const toolDetail = normalizePiboAgentObservationToolDetail(input.toolDetail);
|
|
@@ -40,6 +65,7 @@ export function preparePiboAgentObservationQuery(input = {}) {
|
|
|
40
65
|
return {
|
|
41
66
|
filters: {
|
|
42
67
|
...input,
|
|
68
|
+
cursorMode,
|
|
43
69
|
...(defaultMessageView ? { eventTypes: defaultEventTypes } : {}),
|
|
44
70
|
...(afterSequence !== undefined ? { afterSequence } : {}),
|
|
45
71
|
order,
|
|
@@ -49,6 +75,7 @@ export function preparePiboAgentObservationQuery(input = {}) {
|
|
|
49
75
|
includeDetails: input.includeDetails === true,
|
|
50
76
|
},
|
|
51
77
|
...(afterSequence !== undefined ? { afterSequence } : {}),
|
|
78
|
+
cursorMode,
|
|
52
79
|
order,
|
|
53
80
|
scanOrder: afterSequence !== undefined ? "asc" : order,
|
|
54
81
|
limit,
|
|
@@ -212,6 +212,14 @@ export function normalizePiboAgentObservationOrder(value) {
|
|
|
212
212
|
throw new Error(`Agent observation order must be "asc" or "desc".`);
|
|
213
213
|
return value;
|
|
214
214
|
}
|
|
215
|
+
export function normalizePiboAgentObservationCursorMode(value) {
|
|
216
|
+
if (value === undefined)
|
|
217
|
+
return "auto";
|
|
218
|
+
if (value !== "auto" && value !== "history") {
|
|
219
|
+
throw new Error(`Agent observation cursorMode must be "auto" or "history".`);
|
|
220
|
+
}
|
|
221
|
+
return value;
|
|
222
|
+
}
|
|
215
223
|
export function normalizePiboAgentObservationToolDetail(value) {
|
|
216
224
|
if (value === undefined)
|
|
217
225
|
return "summary";
|
package/dist/subagents/tool.js
CHANGED
|
@@ -60,12 +60,15 @@ function preparePiboDeprecatedSubagentToolInput(input) {
|
|
|
60
60
|
export function formatAgentObservationsForModel(result) {
|
|
61
61
|
const includeTools = result.filters.includeTools === true;
|
|
62
62
|
const toolDetail = result.filters.toolDetail ?? "summary";
|
|
63
|
+
const cursorMode = result.filters.cursorMode ?? "auto";
|
|
63
64
|
const lines = [
|
|
64
|
-
`Agent observations (${result.observations.length}; tools=${includeTools ? toolDetail : "hidden"}; order=${result.filters.order ?? "desc"}; limit=${result.filters.limit ?? 20})`,
|
|
65
|
-
`nextAfterSequence=${result.nextAfterSequence}; truncated=${result.truncated}`,
|
|
65
|
+
`Agent observations (${result.observations.length}; cursor=${cursorMode}; tools=${includeTools ? toolDetail : "hidden"}; order=${result.filters.order ?? "desc"}; limit=${result.filters.limit ?? 20})`,
|
|
66
|
+
`afterSequence=${result.filters.afterSequence ?? "initial"}; nextAfterSequence=${result.nextAfterSequence}${result.autoCursorSequence === undefined ? "" : `; autoCursorSequence=${result.autoCursorSequence}`}; truncated=${result.truncated}`,
|
|
66
67
|
];
|
|
67
68
|
if (result.observations.length === 0) {
|
|
68
|
-
lines.push("",
|
|
69
|
+
lines.push("", cursorMode === "auto"
|
|
70
|
+
? "No new delegated-agent messages matched since the automatic cursor. Use cursorMode=\"history\" only when you need to reread earlier observations."
|
|
71
|
+
: "No historical delegated-agent observations matched the filters.");
|
|
69
72
|
return lines.join("\n");
|
|
70
73
|
}
|
|
71
74
|
for (const observation of result.observations) {
|
|
@@ -188,10 +191,10 @@ export function createAgentToolDefinitions(subagents, controller) {
|
|
|
188
191
|
title: "Pibo Agents Observe",
|
|
189
192
|
description: [
|
|
190
193
|
"Read completed delegated-agent messages with bounded cursor, identity, event, time, substring, regex, order, and limit filters.",
|
|
191
|
-
"Default: the newest 20 completed assistant messages
|
|
192
|
-
"
|
|
194
|
+
"Default cursorMode=auto: the first equivalent query returns the newest 20 completed assistant messages; later calls return only unread messages. Streaming deltas, duplicate tool progress events, and tools stay hidden.",
|
|
195
|
+
"Use cursorMode=history only to reread earlier observations. Inspect tools only when an agent appears stuck, reports a problem, or needs targeted diagnosis; prefer exact toolCallIds, then includeTools=true, and use toolDetail=full only when compact summaries are insufficient.",
|
|
193
196
|
].join("\n"),
|
|
194
|
-
promptSnippet: "Observe child
|
|
197
|
+
promptSnippet: "Observe child progress through completed assistant messages. cursorMode=auto is the default and remembers each equivalent query, so repeated calls return only unread messages; use cursorMode=history to reread earlier observations. Streaming deltas, duplicate tool progress events, and tools are hidden by default. Inspect tools only for stalls, errors, or targeted diagnosis: prefer exact toolCallIds, use includeTools=true only when broader context is needed, and use toolDetail=full only when summaries are insufficient. Use textContains or textRegex for focused matching; different filters use separate automatic cursors. An explicit afterSequence overrides the stored cursor and advances that automatic query cursor.",
|
|
195
198
|
executionMode: "parallel",
|
|
196
199
|
annotations: { readOnly: true },
|
|
197
200
|
inputSchema: Type.Object({
|
|
@@ -207,10 +210,11 @@ export function createAgentToolDefinitions(subagents, controller) {
|
|
|
207
210
|
until: Type.Optional(Type.String({ description: "Inclusive ISO-8601 upper timestamp bound" })),
|
|
208
211
|
textContains: Type.Optional(Type.String({ description: "Case-insensitive substring match against normalized observation text" })),
|
|
209
212
|
textRegex: Type.Optional(Type.String({ description: "Case-sensitive rg/Rust-regex match against normalized observation text. Use inline flags such as (?i) to change case behavior. Combines with textContains using AND semantics. NUL text and literal or escaped NUL patterns are rejected; regex use requires the optional rg platform binary." })),
|
|
210
|
-
|
|
213
|
+
cursorMode: Type.Optional(piboStringEnum(["auto", "history"], { default: "auto", description: "auto remembers this normalized query and returns only unread observations after its first newest-message snapshot. history ignores and does not change the saved cursor, allowing deliberate rereads." })),
|
|
214
|
+
afterSequence: Type.Optional(Type.Integer({ description: "Explicit exclusive cursor override. In auto mode it replaces and advances the saved cursor for this normalized query; cursor pages consume the oldest unseen matches and desc reverses only the returned page.", minimum: 0 })),
|
|
211
215
|
order: Type.Optional(piboStringEnum(["asc", "desc"], { default: "desc", description: "Newest first by default when no cursor is supplied" })),
|
|
212
216
|
limit: Type.Optional(Type.Integer({ description: "Maximum completed messages or activity records to return. Use 50 explicitly when needed.", minimum: 1, maximum: 200, default: 20 })),
|
|
213
|
-
includeTools: Type.Optional(Type.Boolean({ description: "Include
|
|
217
|
+
includeTools: Type.Optional(Type.Boolean({ description: "Include compact tool calls and terminal results. Default false; enable only for stalls, errors, or targeted diagnosis. Prefer exact toolCallIds when known.", default: false })),
|
|
214
218
|
toolDetail: Type.Optional(piboStringEnum(["summary", "full"], { default: "summary", description: "Tool text detail when tools are included. summary is compact; full remains bounded to the observation text limit." })),
|
|
215
219
|
includeDetails: Type.Optional(Type.Boolean({ description: "Include the normalized source event in structured details. Default false; use only for diagnostics.", default: false })),
|
|
216
220
|
}),
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pasko70/pibo",
|
|
3
|
-
"version": "3.4.
|
|
3
|
+
"version": "3.4.3",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@pasko70/pibo",
|
|
9
|
-
"version": "3.4.
|
|
9
|
+
"version": "3.4.3",
|
|
10
10
|
"workspaces": [
|
|
11
11
|
"packages/workflows"
|
|
12
12
|
],
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"react-virtuoso": "^4.18.6",
|
|
40
40
|
"remark-gfm": "^4.0.1",
|
|
41
41
|
"tailwindcss": "^4.2.4",
|
|
42
|
+
"tiktoken": "^1.0.22",
|
|
42
43
|
"typebox": "1.1.38",
|
|
43
44
|
"xstate": "5.31.1"
|
|
44
45
|
},
|
|
@@ -11502,7 +11503,7 @@
|
|
|
11502
11503
|
"license": "MIT",
|
|
11503
11504
|
"peer": true,
|
|
11504
11505
|
"funding": {
|
|
11505
|
-
"type": "GitHub Sponsors
|
|
11506
|
+
"type": "GitHub Sponsors ❤",
|
|
11506
11507
|
"url": "https://github.com/sponsors/dmonad"
|
|
11507
11508
|
}
|
|
11508
11509
|
},
|
|
@@ -11781,7 +11782,7 @@
|
|
|
11781
11782
|
"node": ">=16"
|
|
11782
11783
|
},
|
|
11783
11784
|
"funding": {
|
|
11784
|
-
"type": "GitHub Sponsors
|
|
11785
|
+
"type": "GitHub Sponsors ❤",
|
|
11785
11786
|
"url": "https://github.com/sponsors/dmonad"
|
|
11786
11787
|
}
|
|
11787
11788
|
},
|
|
@@ -15811,6 +15812,12 @@
|
|
|
15811
15812
|
"url": "https://bevry.me/fund"
|
|
15812
15813
|
}
|
|
15813
15814
|
},
|
|
15815
|
+
"node_modules/tiktoken": {
|
|
15816
|
+
"version": "1.0.22",
|
|
15817
|
+
"resolved": "https://registry.npmjs.org/tiktoken/-/tiktoken-1.0.22.tgz",
|
|
15818
|
+
"integrity": "sha512-PKvy1rVF1RibfF3JlXBSP0Jrcw2uq3yXdgcEXtKTYn3QJ/cBRBHDnrJ5jHky+MENZ6DIPwNUGWpkVx+7joCpNA==",
|
|
15819
|
+
"license": "MIT"
|
|
15820
|
+
},
|
|
15814
15821
|
"node_modules/tinyglobby": {
|
|
15815
15822
|
"version": "0.2.17",
|
|
15816
15823
|
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
|
|
@@ -17073,6 +17080,16 @@
|
|
|
17073
17080
|
"node": ">=20.0"
|
|
17074
17081
|
}
|
|
17075
17082
|
},
|
|
17083
|
+
"node_modules/xstate": {
|
|
17084
|
+
"version": "5.31.1",
|
|
17085
|
+
"resolved": "https://registry.npmjs.org/xstate/-/xstate-5.31.1.tgz",
|
|
17086
|
+
"integrity": "sha512-3P7t7GQ61BvLu+8Cj6Zq7rcS34vecL9pvfN2ucUWmIFIUG+rAREviOs4Xy4OO3BuJHSz6RLU8eqDXxSbVotjDQ==",
|
|
17087
|
+
"license": "MIT",
|
|
17088
|
+
"funding": {
|
|
17089
|
+
"type": "opencollective",
|
|
17090
|
+
"url": "https://opencollective.com/xstate"
|
|
17091
|
+
}
|
|
17092
|
+
},
|
|
17076
17093
|
"node_modules/yallist": {
|
|
17077
17094
|
"version": "3.1.1",
|
|
17078
17095
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
|
@@ -17132,7 +17149,7 @@
|
|
|
17132
17149
|
"npm": ">=8.0.0"
|
|
17133
17150
|
},
|
|
17134
17151
|
"funding": {
|
|
17135
|
-
"type": "GitHub Sponsors
|
|
17152
|
+
"type": "GitHub Sponsors ❤",
|
|
17136
17153
|
"url": "https://github.com/sponsors/dmonad"
|
|
17137
17154
|
}
|
|
17138
17155
|
},
|
|
@@ -17204,14 +17221,6 @@
|
|
|
17204
17221
|
"dependencies": {
|
|
17205
17222
|
"xstate": "5.31.1"
|
|
17206
17223
|
}
|
|
17207
|
-
},
|
|
17208
|
-
"packages/workflows/node_modules/xstate": {
|
|
17209
|
-
"version": "5.31.1",
|
|
17210
|
-
"license": "MIT",
|
|
17211
|
-
"funding": {
|
|
17212
|
-
"type": "opencollective",
|
|
17213
|
-
"url": "https://opencollective.com/xstate"
|
|
17214
|
-
}
|
|
17215
17224
|
}
|
|
17216
17225
|
}
|
|
17217
17226
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pasko70/pibo",
|
|
3
|
-
"version": "3.4.
|
|
3
|
+
"version": "3.4.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -109,6 +109,7 @@
|
|
|
109
109
|
"react-virtuoso": "^4.18.6",
|
|
110
110
|
"remark-gfm": "^4.0.1",
|
|
111
111
|
"tailwindcss": "^4.2.4",
|
|
112
|
+
"tiktoken": "^1.0.22",
|
|
112
113
|
"typebox": "1.1.38",
|
|
113
114
|
"xstate": "5.31.1"
|
|
114
115
|
},
|