@agentick/core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +875 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/.tsbuildinfo.build +1 -0
- package/dist/agent.d.ts +32 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +26 -0
- package/dist/agent.js.map +1 -0
- package/dist/agentick-instance.d.ts +285 -0
- package/dist/agentick-instance.d.ts.map +1 -0
- package/dist/agentick-instance.js +700 -0
- package/dist/agentick-instance.js.map +1 -0
- package/dist/aidk-instance.d.ts +294 -0
- package/dist/aidk-instance.d.ts.map +1 -0
- package/dist/aidk-instance.js +340 -0
- package/dist/aidk-instance.js.map +1 -0
- package/dist/app/session-store.d.ts +57 -0
- package/dist/app/session-store.d.ts.map +1 -0
- package/dist/app/session-store.js +87 -0
- package/dist/app/session-store.js.map +1 -0
- package/dist/app/session.d.ts +209 -0
- package/dist/app/session.d.ts.map +1 -0
- package/dist/app/session.js +2131 -0
- package/dist/app/session.js.map +1 -0
- package/dist/app/sqlite-session-store.d.ts +60 -0
- package/dist/app/sqlite-session-store.d.ts.map +1 -0
- package/dist/app/sqlite-session-store.js +234 -0
- package/dist/app/sqlite-session-store.js.map +1 -0
- package/dist/app/types.d.ts +1461 -0
- package/dist/app/types.d.ts.map +1 -0
- package/dist/app/types.js +14 -0
- package/dist/app/types.js.map +1 -0
- package/dist/app.d.ts +79 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +83 -0
- package/dist/app.js.map +1 -0
- package/dist/channels/adapters/index.d.ts +2 -0
- package/dist/channels/adapters/index.d.ts.map +1 -0
- package/dist/channels/adapters/index.js +2 -0
- package/dist/channels/adapters/index.js.map +1 -0
- package/dist/channels/adapters/redis.d.ts +77 -0
- package/dist/channels/adapters/redis.d.ts.map +1 -0
- package/dist/channels/adapters/redis.js +259 -0
- package/dist/channels/adapters/redis.js.map +1 -0
- package/dist/channels/index.d.ts +38 -0
- package/dist/channels/index.d.ts.map +1 -0
- package/dist/channels/index.js +38 -0
- package/dist/channels/index.js.map +1 -0
- package/dist/channels/service.d.ts +684 -0
- package/dist/channels/service.d.ts.map +1 -0
- package/dist/channels/service.js +870 -0
- package/dist/channels/service.js.map +1 -0
- package/dist/channels/transports/index.d.ts +4 -0
- package/dist/channels/transports/index.d.ts.map +1 -0
- package/dist/channels/transports/index.js +4 -0
- package/dist/channels/transports/index.js.map +1 -0
- package/dist/channels/transports/socketio.d.ts +98 -0
- package/dist/channels/transports/socketio.d.ts.map +1 -0
- package/dist/channels/transports/socketio.js +246 -0
- package/dist/channels/transports/socketio.js.map +1 -0
- package/dist/channels/transports/streamable-http.d.ts +107 -0
- package/dist/channels/transports/streamable-http.d.ts.map +1 -0
- package/dist/channels/transports/streamable-http.js +353 -0
- package/dist/channels/transports/streamable-http.js.map +1 -0
- package/dist/channels/transports/websocket.d.ts +117 -0
- package/dist/channels/transports/websocket.d.ts.map +1 -0
- package/dist/channels/transports/websocket.js +416 -0
- package/dist/channels/transports/websocket.js.map +1 -0
- package/dist/com/index.d.ts +29 -0
- package/dist/com/index.d.ts.map +1 -0
- package/dist/com/index.js +29 -0
- package/dist/com/index.js.map +1 -0
- package/dist/com/object-model.d.ts +634 -0
- package/dist/com/object-model.d.ts.map +1 -0
- package/dist/com/object-model.js +963 -0
- package/dist/com/object-model.js.map +1 -0
- package/dist/com/types.d.ts +192 -0
- package/dist/com/types.d.ts.map +1 -0
- package/dist/com/types.js +1 -0
- package/dist/com/types.js.map +1 -0
- package/dist/compiler/collector.d.ts +16 -0
- package/dist/compiler/collector.d.ts.map +1 -0
- package/dist/compiler/collector.js +388 -0
- package/dist/compiler/collector.js.map +1 -0
- package/dist/compiler/content-block-registry.d.ts +11 -0
- package/dist/compiler/content-block-registry.d.ts.map +1 -0
- package/dist/compiler/content-block-registry.js +312 -0
- package/dist/compiler/content-block-registry.js.map +1 -0
- package/dist/compiler/extractors.d.ts +68 -0
- package/dist/compiler/extractors.d.ts.map +1 -0
- package/dist/compiler/extractors.js +547 -0
- package/dist/compiler/extractors.js.map +1 -0
- package/dist/compiler/fiber-compiler.d.ts +203 -0
- package/dist/compiler/fiber-compiler.d.ts.map +1 -0
- package/dist/compiler/fiber-compiler.js +498 -0
- package/dist/compiler/fiber-compiler.js.map +1 -0
- package/dist/compiler/fiber.d.ts +61 -0
- package/dist/compiler/fiber.d.ts.map +1 -0
- package/dist/compiler/fiber.js +244 -0
- package/dist/compiler/fiber.js.map +1 -0
- package/dist/compiler/index.d.ts +18 -0
- package/dist/compiler/index.d.ts.map +1 -0
- package/dist/compiler/index.js +38 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/scheduler.d.ts +95 -0
- package/dist/compiler/scheduler.d.ts.map +1 -0
- package/dist/compiler/scheduler.js +138 -0
- package/dist/compiler/scheduler.js.map +1 -0
- package/dist/compiler/structure-renderer.d.ts +42 -0
- package/dist/compiler/structure-renderer.d.ts.map +1 -0
- package/dist/compiler/structure-renderer.js +189 -0
- package/dist/compiler/structure-renderer.js.map +1 -0
- package/dist/compiler/types.d.ts +96 -0
- package/dist/compiler/types.d.ts.map +1 -0
- package/dist/compiler/types.js +19 -0
- package/dist/compiler/types.js.map +1 -0
- package/dist/component/component-hooks.d.ts +68 -0
- package/dist/component/component-hooks.d.ts.map +1 -0
- package/dist/component/component-hooks.js +112 -0
- package/dist/component/component-hooks.js.map +1 -0
- package/dist/component/component.d.ts +314 -0
- package/dist/component/component.d.ts.map +1 -0
- package/dist/component/component.js +64 -0
- package/dist/component/component.js.map +1 -0
- package/dist/component/index.d.ts +47 -0
- package/dist/component/index.d.ts.map +1 -0
- package/dist/component/index.js +47 -0
- package/dist/component/index.js.map +1 -0
- package/dist/component/tentickle-component.d.ts +185 -0
- package/dist/component/tentickle-component.d.ts.map +1 -0
- package/dist/component/tentickle-component.js +182 -0
- package/dist/component/tentickle-component.js.map +1 -0
- package/dist/content/index.d.ts +12 -0
- package/dist/content/index.d.ts.map +1 -0
- package/dist/content/index.js +17 -0
- package/dist/content/index.js.map +1 -0
- package/dist/context/index.d.ts +51 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +69 -0
- package/dist/context/index.js.map +1 -0
- package/dist/core/channel-helpers.d.ts +31 -0
- package/dist/core/channel-helpers.d.ts.map +1 -0
- package/dist/core/channel-helpers.js +62 -0
- package/dist/core/channel-helpers.js.map +1 -0
- package/dist/core/channel.d.ts +164 -0
- package/dist/core/channel.d.ts.map +1 -0
- package/dist/core/channel.js +199 -0
- package/dist/core/channel.js.map +1 -0
- package/dist/core/context.d.ts +412 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +290 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/event-buffer.d.ts +212 -0
- package/dist/core/event-buffer.d.ts.map +1 -0
- package/dist/core/event-buffer.js +346 -0
- package/dist/core/event-buffer.js.map +1 -0
- package/dist/core/execution-helpers.d.ts +179 -0
- package/dist/core/execution-helpers.d.ts.map +1 -0
- package/dist/core/execution-helpers.js +212 -0
- package/dist/core/execution-helpers.js.map +1 -0
- package/dist/core/execution-tracker.d.ts +53 -0
- package/dist/core/execution-tracker.d.ts.map +1 -0
- package/dist/core/execution-tracker.js +309 -0
- package/dist/core/execution-tracker.js.map +1 -0
- package/dist/core/index.d.ts +58 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +58 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger.d.ts +341 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +346 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/metrics-helpers.d.ts +40 -0
- package/dist/core/metrics-helpers.d.ts.map +1 -0
- package/dist/core/metrics-helpers.js +72 -0
- package/dist/core/metrics-helpers.js.map +1 -0
- package/dist/core/otel-provider.d.ts +54 -0
- package/dist/core/otel-provider.d.ts.map +1 -0
- package/dist/core/otel-provider.js +107 -0
- package/dist/core/otel-provider.js.map +1 -0
- package/dist/core/procedure-graph.d.ts +136 -0
- package/dist/core/procedure-graph.d.ts.map +1 -0
- package/dist/core/procedure-graph.js +272 -0
- package/dist/core/procedure-graph.js.map +1 -0
- package/dist/core/procedure.d.ts +755 -0
- package/dist/core/procedure.d.ts.map +1 -0
- package/dist/core/procedure.js +899 -0
- package/dist/core/procedure.js.map +1 -0
- package/dist/core/stream.d.ts +106 -0
- package/dist/core/stream.d.ts.map +1 -0
- package/dist/core/stream.js +186 -0
- package/dist/core/stream.js.map +1 -0
- package/dist/core/telemetry.d.ts +182 -0
- package/dist/core/telemetry.d.ts.map +1 -0
- package/dist/core/telemetry.js +124 -0
- package/dist/core/telemetry.js.map +1 -0
- package/dist/engine/client-tool-coordinator.d.ts +50 -0
- package/dist/engine/client-tool-coordinator.d.ts.map +1 -0
- package/dist/engine/client-tool-coordinator.js +121 -0
- package/dist/engine/client-tool-coordinator.js.map +1 -0
- package/dist/engine/engine-events.d.ts +117 -0
- package/dist/engine/engine-events.d.ts.map +1 -0
- package/dist/engine/engine-events.js +178 -0
- package/dist/engine/engine-events.js.map +1 -0
- package/dist/engine/engine-response.d.ts +48 -0
- package/dist/engine/engine-response.d.ts.map +1 -0
- package/dist/engine/engine-response.js +2 -0
- package/dist/engine/engine-response.js.map +1 -0
- package/dist/engine/execution-graph.d.ts +104 -0
- package/dist/engine/execution-graph.d.ts.map +1 -0
- package/dist/engine/execution-graph.js +257 -0
- package/dist/engine/execution-graph.js.map +1 -0
- package/dist/engine/execution-handle.d.ts +212 -0
- package/dist/engine/execution-handle.d.ts.map +1 -0
- package/dist/engine/execution-handle.js +602 -0
- package/dist/engine/execution-handle.js.map +1 -0
- package/dist/engine/execution-types.d.ts +248 -0
- package/dist/engine/execution-types.d.ts.map +1 -0
- package/dist/engine/execution-types.js +23 -0
- package/dist/engine/execution-types.js.map +1 -0
- package/dist/engine/index.d.ts +21 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +23 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/engine/tool-confirmation-coordinator.d.ts +74 -0
- package/dist/engine/tool-confirmation-coordinator.d.ts.map +1 -0
- package/dist/engine/tool-confirmation-coordinator.js +137 -0
- package/dist/engine/tool-confirmation-coordinator.js.map +1 -0
- package/dist/engine/tool-executor.d.ts +127 -0
- package/dist/engine/tool-executor.d.ts.map +1 -0
- package/dist/engine/tool-executor.js +363 -0
- package/dist/engine/tool-executor.js.map +1 -0
- package/dist/hibernation/index.d.ts +126 -0
- package/dist/hibernation/index.d.ts.map +1 -0
- package/dist/hibernation/index.js +127 -0
- package/dist/hibernation/index.js.map +1 -0
- package/dist/hooks/base-hook-registry.d.ts +41 -0
- package/dist/hooks/base-hook-registry.d.ts.map +1 -0
- package/dist/hooks/base-hook-registry.js +76 -0
- package/dist/hooks/base-hook-registry.js.map +1 -0
- package/dist/hooks/com-state.d.ts +40 -0
- package/dist/hooks/com-state.d.ts.map +1 -0
- package/dist/hooks/com-state.js +90 -0
- package/dist/hooks/com-state.js.map +1 -0
- package/dist/hooks/context-info.d.ts +139 -0
- package/dist/hooks/context-info.d.ts.map +1 -0
- package/dist/hooks/context-info.js +115 -0
- package/dist/hooks/context-info.js.map +1 -0
- package/dist/hooks/context-internal.d.ts +21 -0
- package/dist/hooks/context-internal.d.ts.map +1 -0
- package/dist/hooks/context-internal.js +20 -0
- package/dist/hooks/context-internal.js.map +1 -0
- package/dist/hooks/context.d.ts +64 -0
- package/dist/hooks/context.d.ts.map +1 -0
- package/dist/hooks/context.js +83 -0
- package/dist/hooks/context.js.map +1 -0
- package/dist/hooks/data.d.ts +33 -0
- package/dist/hooks/data.d.ts.map +1 -0
- package/dist/hooks/data.js +84 -0
- package/dist/hooks/data.js.map +1 -0
- package/dist/hooks/formatter-context.d.ts +34 -0
- package/dist/hooks/formatter-context.d.ts.map +1 -0
- package/dist/hooks/formatter-context.js +34 -0
- package/dist/hooks/formatter-context.js.map +1 -0
- package/dist/hooks/hook-registry.d.ts +45 -0
- package/dist/hooks/hook-registry.d.ts.map +1 -0
- package/dist/hooks/hook-registry.js +109 -0
- package/dist/hooks/hook-registry.js.map +1 -0
- package/dist/hooks/index.d.ts +20 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +47 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/knob.d.ts +87 -0
- package/dist/hooks/knob.d.ts.map +1 -0
- package/dist/hooks/knob.js +129 -0
- package/dist/hooks/knob.js.map +1 -0
- package/dist/hooks/knobs-component.d.ts +70 -0
- package/dist/hooks/knobs-component.d.ts.map +1 -0
- package/dist/hooks/knobs-component.js +300 -0
- package/dist/hooks/knobs-component.js.map +1 -0
- package/dist/hooks/lifecycle.d.ts +158 -0
- package/dist/hooks/lifecycle.d.ts.map +1 -0
- package/dist/hooks/lifecycle.js +217 -0
- package/dist/hooks/lifecycle.js.map +1 -0
- package/dist/hooks/message-context.d.ts +101 -0
- package/dist/hooks/message-context.d.ts.map +1 -0
- package/dist/hooks/message-context.js +145 -0
- package/dist/hooks/message-context.js.map +1 -0
- package/dist/hooks/policy-context.d.ts.map +1 -0
- package/dist/hooks/runtime-context.d.ts +122 -0
- package/dist/hooks/runtime-context.d.ts.map +1 -0
- package/dist/hooks/runtime-context.js +149 -0
- package/dist/hooks/runtime-context.js.map +1 -0
- package/dist/hooks/signal.d.ts +267 -0
- package/dist/hooks/signal.d.ts.map +1 -0
- package/dist/hooks/signal.js +825 -0
- package/dist/hooks/signal.js.map +1 -0
- package/dist/hooks/types.d.ts +179 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +5 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/jsx/components/agent.d.ts +64 -0
- package/dist/jsx/components/agent.d.ts.map +1 -0
- package/dist/jsx/components/agent.js +80 -0
- package/dist/jsx/components/agent.js.map +1 -0
- package/dist/jsx/components/complete.d.ts +65 -0
- package/dist/jsx/components/complete.d.ts.map +1 -0
- package/dist/jsx/components/complete.js +64 -0
- package/dist/jsx/components/complete.js.map +1 -0
- package/dist/jsx/components/content.d.ts +98 -0
- package/dist/jsx/components/content.d.ts.map +1 -0
- package/dist/jsx/components/content.js +51 -0
- package/dist/jsx/components/content.js.map +1 -0
- package/dist/jsx/components/harness.d.ts +118 -0
- package/dist/jsx/components/harness.d.ts.map +1 -0
- package/dist/jsx/components/harness.js +117 -0
- package/dist/jsx/components/harness.js.map +1 -0
- package/dist/jsx/components/index.d.ts +11 -0
- package/dist/jsx/components/index.d.ts.map +1 -0
- package/dist/jsx/components/index.js +11 -0
- package/dist/jsx/components/index.js.map +1 -0
- package/dist/jsx/components/markdown.d.ts +31 -0
- package/dist/jsx/components/markdown.d.ts.map +1 -0
- package/dist/jsx/components/markdown.js +17 -0
- package/dist/jsx/components/markdown.js.map +1 -0
- package/dist/jsx/components/messages.d.ts +283 -0
- package/dist/jsx/components/messages.d.ts.map +1 -0
- package/dist/jsx/components/messages.js +257 -0
- package/dist/jsx/components/messages.js.map +1 -0
- package/dist/jsx/components/model.d.ts +94 -0
- package/dist/jsx/components/model.d.ts.map +1 -0
- package/dist/jsx/components/model.js +96 -0
- package/dist/jsx/components/model.js.map +1 -0
- package/dist/jsx/components/primitives.d.ts +117 -0
- package/dist/jsx/components/primitives.d.ts.map +1 -0
- package/dist/jsx/components/primitives.js +83 -0
- package/dist/jsx/components/primitives.js.map +1 -0
- package/dist/jsx/components/renderer.d.ts +24 -0
- package/dist/jsx/components/renderer.d.ts.map +1 -0
- package/dist/jsx/components/renderer.js +11 -0
- package/dist/jsx/components/renderer.js.map +1 -0
- package/dist/jsx/components/semantic.d.ts +155 -0
- package/dist/jsx/components/semantic.d.ts.map +1 -0
- package/dist/jsx/components/semantic.js +39 -0
- package/dist/jsx/components/semantic.js.map +1 -0
- package/dist/jsx/components/timeline.d.ts +157 -0
- package/dist/jsx/components/timeline.d.ts.map +1 -0
- package/dist/jsx/components/timeline.js +357 -0
- package/dist/jsx/components/timeline.js.map +1 -0
- package/dist/jsx/components/token-budget.d.ts +70 -0
- package/dist/jsx/components/token-budget.d.ts.map +1 -0
- package/dist/jsx/components/token-budget.js +135 -0
- package/dist/jsx/components/token-budget.js.map +1 -0
- package/dist/jsx/components/xml.d.ts +27 -0
- package/dist/jsx/components/xml.d.ts.map +1 -0
- package/dist/jsx/components/xml.js +17 -0
- package/dist/jsx/components/xml.js.map +1 -0
- package/dist/jsx/index.d.ts +58 -0
- package/dist/jsx/index.d.ts.map +1 -0
- package/dist/jsx/index.js +59 -0
- package/dist/jsx/index.js.map +1 -0
- package/dist/jsx/jsx-runtime.d.ts +370 -0
- package/dist/jsx/jsx-runtime.d.ts.map +1 -0
- package/dist/jsx/jsx-runtime.js +79 -0
- package/dist/jsx/jsx-runtime.js.map +1 -0
- package/dist/jsx/jsx-types.d.ts +23 -0
- package/dist/jsx/jsx-types.d.ts.map +1 -0
- package/dist/jsx/jsx-types.js +1 -0
- package/dist/jsx/jsx-types.js.map +1 -0
- package/dist/mcp/client.d.ts +46 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +138 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/component.d.ts +95 -0
- package/dist/mcp/component.d.ts.map +1 -0
- package/dist/mcp/component.js +185 -0
- package/dist/mcp/component.js.map +1 -0
- package/dist/mcp/create-mcp-tool.d.ts +191 -0
- package/dist/mcp/create-mcp-tool.d.ts.map +1 -0
- package/dist/mcp/create-mcp-tool.js +228 -0
- package/dist/mcp/create-mcp-tool.js.map +1 -0
- package/dist/mcp/index.d.ts +49 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +48 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/service.d.ts +39 -0
- package/dist/mcp/service.d.ts.map +1 -0
- package/dist/mcp/service.js +77 -0
- package/dist/mcp/service.js.map +1 -0
- package/dist/mcp/tool.d.ts +55 -0
- package/dist/mcp/tool.d.ts.map +1 -0
- package/dist/mcp/tool.js +119 -0
- package/dist/mcp/tool.js.map +1 -0
- package/dist/mcp/types.d.ts +72 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +6 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/middleware/defaults.d.ts +9 -0
- package/dist/middleware/defaults.d.ts.map +1 -0
- package/dist/middleware/defaults.js +47 -0
- package/dist/middleware/defaults.js.map +1 -0
- package/dist/model/adapter-helpers.d.ts +161 -0
- package/dist/model/adapter-helpers.d.ts.map +1 -0
- package/dist/model/adapter-helpers.js +351 -0
- package/dist/model/adapter-helpers.js.map +1 -0
- package/dist/model/adapter.d.ts +399 -0
- package/dist/model/adapter.d.ts.map +1 -0
- package/dist/model/adapter.js +497 -0
- package/dist/model/adapter.js.map +1 -0
- package/dist/model/index.d.ts +54 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/index.js +55 -0
- package/dist/model/index.js.map +1 -0
- package/dist/model/model-hooks.d.ts +45 -0
- package/dist/model/model-hooks.d.ts.map +1 -0
- package/dist/model/model-hooks.js +24 -0
- package/dist/model/model-hooks.js.map +1 -0
- package/dist/model/model.d.ts +302 -0
- package/dist/model/model.d.ts.map +1 -0
- package/dist/model/model.js +20 -0
- package/dist/model/model.js.map +1 -0
- package/dist/model/simple-adapter.d.ts +176 -0
- package/dist/model/simple-adapter.d.ts.map +1 -0
- package/dist/model/simple-adapter.js +264 -0
- package/dist/model/simple-adapter.js.map +1 -0
- package/dist/model/stream-accumulator.d.ts +284 -0
- package/dist/model/stream-accumulator.d.ts.map +1 -0
- package/dist/model/stream-accumulator.js +532 -0
- package/dist/model/stream-accumulator.js.map +1 -0
- package/dist/model/utils/index.d.ts +2 -0
- package/dist/model/utils/index.d.ts.map +1 -0
- package/dist/model/utils/index.js +2 -0
- package/dist/model/utils/index.js.map +1 -0
- package/dist/model/utils/language-model.d.ts +26 -0
- package/dist/model/utils/language-model.d.ts.map +1 -0
- package/dist/model/utils/language-model.js +706 -0
- package/dist/model/utils/language-model.js.map +1 -0
- package/dist/procedure/index.d.ts +20 -0
- package/dist/procedure/index.d.ts.map +1 -0
- package/dist/procedure/index.js +19 -0
- package/dist/procedure/index.js.map +1 -0
- package/dist/reconciler/devtools-bridge.d.ts +40 -0
- package/dist/reconciler/devtools-bridge.d.ts.map +1 -0
- package/dist/reconciler/devtools-bridge.js +79 -0
- package/dist/reconciler/devtools-bridge.js.map +1 -0
- package/dist/reconciler/host-config.d.ts +39 -0
- package/dist/reconciler/host-config.d.ts.map +1 -0
- package/dist/reconciler/host-config.js +195 -0
- package/dist/reconciler/host-config.js.map +1 -0
- package/dist/reconciler/index.d.ts +7 -0
- package/dist/reconciler/index.d.ts.map +1 -0
- package/dist/reconciler/index.js +7 -0
- package/dist/reconciler/index.js.map +1 -0
- package/dist/reconciler/reconciler.d.ts +47 -0
- package/dist/reconciler/reconciler.d.ts.map +1 -0
- package/dist/reconciler/reconciler.js +89 -0
- package/dist/reconciler/reconciler.js.map +1 -0
- package/dist/reconciler/types.d.ts +86 -0
- package/dist/reconciler/types.d.ts.map +1 -0
- package/dist/reconciler/types.js +37 -0
- package/dist/reconciler/types.js.map +1 -0
- package/dist/renderers/base.d.ts +98 -0
- package/dist/renderers/base.d.ts.map +1 -0
- package/dist/renderers/base.js +82 -0
- package/dist/renderers/base.js.map +1 -0
- package/dist/renderers/index.d.ts +31 -0
- package/dist/renderers/index.d.ts.map +1 -0
- package/dist/renderers/index.js +31 -0
- package/dist/renderers/index.js.map +1 -0
- package/dist/renderers/markdown.d.ts +48 -0
- package/dist/renderers/markdown.d.ts.map +1 -0
- package/dist/renderers/markdown.js +432 -0
- package/dist/renderers/markdown.js.map +1 -0
- package/dist/renderers/types.d.ts +7 -0
- package/dist/renderers/types.d.ts.map +1 -0
- package/dist/renderers/types.js +7 -0
- package/dist/renderers/types.js.map +1 -0
- package/dist/renderers/xml.d.ts +49 -0
- package/dist/renderers/xml.d.ts.map +1 -0
- package/dist/renderers/xml.js +444 -0
- package/dist/renderers/xml.js.map +1 -0
- package/dist/state/boundary.d.ts +347 -0
- package/dist/state/boundary.d.ts.map +1 -0
- package/dist/state/boundary.js +341 -0
- package/dist/state/boundary.js.map +1 -0
- package/dist/state/context.d.ts +138 -0
- package/dist/state/context.d.ts.map +1 -0
- package/dist/state/context.js +139 -0
- package/dist/state/context.js.map +1 -0
- package/dist/state/hooks.d.ts +798 -0
- package/dist/state/hooks.d.ts.map +1 -0
- package/dist/state/hooks.js +1437 -0
- package/dist/state/hooks.js.map +1 -0
- package/dist/state/index.d.ts +72 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +73 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/signal.d.ts +223 -0
- package/dist/state/signal.d.ts.map +1 -0
- package/dist/state/signal.js +699 -0
- package/dist/state/signal.js.map +1 -0
- package/dist/state/use-state.d.ts +210 -0
- package/dist/state/use-state.d.ts.map +1 -0
- package/dist/state/use-state.js +327 -0
- package/dist/state/use-state.js.map +1 -0
- package/dist/tentickle-instance.d.ts +285 -0
- package/dist/tentickle-instance.d.ts.map +1 -0
- package/dist/tentickle-instance.js +700 -0
- package/dist/tentickle-instance.js.map +1 -0
- package/dist/testing/act.d.ts +59 -0
- package/dist/testing/act.d.ts.map +1 -0
- package/dist/testing/act.js +92 -0
- package/dist/testing/act.js.map +1 -0
- package/dist/testing/async-helpers.d.ts +99 -0
- package/dist/testing/async-helpers.d.ts.map +1 -0
- package/dist/testing/async-helpers.js +193 -0
- package/dist/testing/async-helpers.js.map +1 -0
- package/dist/testing/compile-agent.d.ts +101 -0
- package/dist/testing/compile-agent.d.ts.map +1 -0
- package/dist/testing/compile-agent.js +136 -0
- package/dist/testing/compile-agent.js.map +1 -0
- package/dist/testing/index.d.ts +57 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +59 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/mock-app.d.ts +163 -0
- package/dist/testing/mock-app.d.ts.map +1 -0
- package/dist/testing/mock-app.js +393 -0
- package/dist/testing/mock-app.js.map +1 -0
- package/dist/testing/mocks.d.ts +142 -0
- package/dist/testing/mocks.d.ts.map +1 -0
- package/dist/testing/mocks.js +191 -0
- package/dist/testing/mocks.js.map +1 -0
- package/dist/testing/render-agent.d.ts +146 -0
- package/dist/testing/render-agent.d.ts.map +1 -0
- package/dist/testing/render-agent.js +200 -0
- package/dist/testing/render-agent.js.map +1 -0
- package/dist/testing/test-adapter.d.ts +157 -0
- package/dist/testing/test-adapter.d.ts.map +1 -0
- package/dist/testing/test-adapter.js +297 -0
- package/dist/testing/test-adapter.js.map +1 -0
- package/dist/testing/test-model.d.ts +132 -0
- package/dist/testing/test-model.d.ts.map +1 -0
- package/dist/testing/test-model.js +260 -0
- package/dist/testing/test-model.js.map +1 -0
- package/dist/tool/index.d.ts +61 -0
- package/dist/tool/index.d.ts.map +1 -0
- package/dist/tool/index.js +63 -0
- package/dist/tool/index.js.map +1 -0
- package/dist/tool/tool-hooks.d.ts +45 -0
- package/dist/tool/tool-hooks.d.ts.map +1 -0
- package/dist/tool/tool-hooks.js +35 -0
- package/dist/tool/tool-hooks.js.map +1 -0
- package/dist/tool/tool.d.ts +403 -0
- package/dist/tool/tool.d.ts.map +1 -0
- package/dist/tool/tool.js +176 -0
- package/dist/tool/tool.js.map +1 -0
- package/dist/types.d.ts +442 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +97 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/abort-utils.d.ts +5 -0
- package/dist/utils/abort-utils.d.ts.map +1 -0
- package/dist/utils/abort-utils.js +50 -0
- package/dist/utils/abort-utils.js.map +1 -0
- package/dist/utils/classify-error.d.ts +19 -0
- package/dist/utils/classify-error.d.ts.map +1 -0
- package/dist/utils/classify-error.js +77 -0
- package/dist/utils/classify-error.js.map +1 -0
- package/dist/utils/index.d.ts +21 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +21 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/normalization.d.ts +6 -0
- package/dist/utils/normalization.d.ts.map +1 -0
- package/dist/utils/normalization.js +103 -0
- package/dist/utils/normalization.js.map +1 -0
- package/dist/utils/registry.d.ts +15 -0
- package/dist/utils/registry.d.ts.map +1 -0
- package/dist/utils/registry.js +28 -0
- package/dist/utils/registry.js.map +1 -0
- package/dist/utils/schema.d.ts +7 -0
- package/dist/utils/schema.d.ts.map +1 -0
- package/dist/utils/schema.js +13 -0
- package/dist/utils/schema.js.map +1 -0
- package/dist/utils/token-estimate.d.ts +87 -0
- package/dist/utils/token-estimate.d.ts.map +1 -0
- package/dist/utils/token-estimate.js +199 -0
- package/dist/utils/token-estimate.js.map +1 -0
- package/dist/v2/reconciler/host-config.d.ts +31 -0
- package/dist/v2/reconciler/host-config.d.ts.map +1 -0
- package/dist/v2/reconciler/host-config.js +197 -0
- package/dist/v2/reconciler/host-config.js.map +1 -0
- package/dist/v2/reconciler/index.d.ts +7 -0
- package/dist/v2/reconciler/index.d.ts.map +1 -0
- package/dist/v2/reconciler/index.js +7 -0
- package/dist/v2/reconciler/index.js.map +1 -0
- package/dist/v2/reconciler/reconciler.d.ts +39 -0
- package/dist/v2/reconciler/reconciler.d.ts.map +1 -0
- package/dist/v2/reconciler/reconciler.js +54 -0
- package/dist/v2/reconciler/reconciler.js.map +1 -0
- package/dist/v2/reconciler/types.d.ts +64 -0
- package/dist/v2/reconciler/types.d.ts.map +1 -0
- package/dist/v2/reconciler/types.js +20 -0
- package/dist/v2/reconciler/types.js.map +1 -0
- package/dist/v2/renderers/index.d.ts +7 -0
- package/dist/v2/renderers/index.d.ts.map +1 -0
- package/dist/v2/renderers/index.js +7 -0
- package/dist/v2/renderers/index.js.map +1 -0
- package/dist/v2/renderers/markdown.d.ts +16 -0
- package/dist/v2/renderers/markdown.d.ts.map +1 -0
- package/dist/v2/renderers/markdown.js +65 -0
- package/dist/v2/renderers/markdown.js.map +1 -0
- package/dist/v2/renderers/types.d.ts +26 -0
- package/dist/v2/renderers/types.d.ts.map +1 -0
- package/dist/v2/renderers/types.js +6 -0
- package/dist/v2/renderers/types.js.map +1 -0
- package/dist/v2/renderers/xml.d.ts +17 -0
- package/dist/v2/renderers/xml.d.ts.map +1 -0
- package/dist/v2/renderers/xml.js +73 -0
- package/dist/v2/renderers/xml.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timeline Component
|
|
3
|
+
*
|
|
4
|
+
* Renders conversation history with optional pending messages.
|
|
5
|
+
* Supports token budget compaction via maxTokens/strategy props.
|
|
6
|
+
* Uses React context to provide timeline access to descendants.
|
|
7
|
+
*
|
|
8
|
+
* @module agentick/components
|
|
9
|
+
*/
|
|
10
|
+
import { type ReactNode } from "react";
|
|
11
|
+
import type { JSX } from "react";
|
|
12
|
+
import type { COMTimelineEntry } from "../../com/types";
|
|
13
|
+
import type { ExecutionMessage } from "../../engine/execution-types";
|
|
14
|
+
import { type CompactionStrategy, type TokenBudgetInfo } from "./token-budget";
|
|
15
|
+
/**
|
|
16
|
+
* Render function signature for Timeline component.
|
|
17
|
+
*
|
|
18
|
+
* @param history - Executed timeline entries (previous + current)
|
|
19
|
+
* @param pending - Messages queued for the next tick
|
|
20
|
+
* @param budget - Token budget info (present when maxTokens is set)
|
|
21
|
+
*/
|
|
22
|
+
export type TimelineRenderFn = (history: COMTimelineEntry[], pending: ExecutionMessage[], budget: TokenBudgetInfo | null) => JSX.Element | (JSX.Element | null)[] | null;
|
|
23
|
+
/**
|
|
24
|
+
* Context value for Timeline provider.
|
|
25
|
+
*/
|
|
26
|
+
export interface TimelineContextValue {
|
|
27
|
+
/** All timeline entries (history) */
|
|
28
|
+
entries: COMTimelineEntry[];
|
|
29
|
+
/** Pending messages queued for next tick */
|
|
30
|
+
pending: ExecutionMessage[];
|
|
31
|
+
/** Number of messages in timeline */
|
|
32
|
+
messageCount: number;
|
|
33
|
+
/** Filter entries by role */
|
|
34
|
+
byRole: (role: "user" | "assistant" | "tool" | "system") => COMTimelineEntry[];
|
|
35
|
+
/** Token budget info (present when maxTokens is set) */
|
|
36
|
+
budget: TokenBudgetInfo | null;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Conversation history options.
|
|
40
|
+
*/
|
|
41
|
+
export interface ConversationHistoryOptions {
|
|
42
|
+
/** Filter function for entries */
|
|
43
|
+
filter?: (entry: COMTimelineEntry) => boolean;
|
|
44
|
+
/** Maximum number of entries to return */
|
|
45
|
+
limit?: number;
|
|
46
|
+
/** Only include these roles */
|
|
47
|
+
roles?: ("user" | "assistant" | "tool" | "system" | "event")[];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Token budget options for Timeline.
|
|
51
|
+
*/
|
|
52
|
+
export interface TimelineBudgetOptions {
|
|
53
|
+
/** Maximum tokens for timeline entries. Enables compaction. */
|
|
54
|
+
maxTokens?: number;
|
|
55
|
+
/** Compaction strategy (default: "sliding-window") */
|
|
56
|
+
strategy?: CompactionStrategy;
|
|
57
|
+
/** Callback when entries are evicted */
|
|
58
|
+
onEvict?: (entries: COMTimelineEntry[]) => void;
|
|
59
|
+
/** Guidance string passed to custom compaction functions */
|
|
60
|
+
guidance?: string;
|
|
61
|
+
/** Roles that are never evicted (default: ["system"]) */
|
|
62
|
+
preserveRoles?: Array<"user" | "assistant" | "system" | "tool">;
|
|
63
|
+
/** Reserve tokens for safety margin (default: 0) */
|
|
64
|
+
headroom?: number;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Props for the Timeline component.
|
|
68
|
+
*/
|
|
69
|
+
export interface TimelineProps extends ConversationHistoryOptions, TimelineBudgetOptions {
|
|
70
|
+
/**
|
|
71
|
+
* Render prop for custom rendering.
|
|
72
|
+
* If not provided, renders default message components.
|
|
73
|
+
*/
|
|
74
|
+
children?: TimelineRenderFn | JSX.Element;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Renders conversation history from the COM timeline.
|
|
78
|
+
*
|
|
79
|
+
* @example Basic usage
|
|
80
|
+
* ```tsx
|
|
81
|
+
* <Timeline />
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* @example With filtering
|
|
85
|
+
* ```tsx
|
|
86
|
+
* <Timeline roles={['user', 'assistant']} limit={10} />
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* @example With token budget
|
|
90
|
+
* ```tsx
|
|
91
|
+
* <Timeline maxTokens={4000} strategy="truncate" />
|
|
92
|
+
* ```
|
|
93
|
+
*
|
|
94
|
+
* @example With render prop
|
|
95
|
+
* ```tsx
|
|
96
|
+
* <Timeline maxTokens={8000} headroom={500}>
|
|
97
|
+
* {(entries) => entries.map(entry => <Message key={entry.id} entry={entry} />)}
|
|
98
|
+
* </Timeline>
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export declare function Timeline(props: TimelineProps): JSX.Element;
|
|
102
|
+
export declare namespace Timeline {
|
|
103
|
+
var Provider: (props: TimelineProviderProps) => JSX.Element;
|
|
104
|
+
var Messages: (props: TimelineMessagesProps) => JSX.Element;
|
|
105
|
+
}
|
|
106
|
+
interface TimelineProviderProps extends ConversationHistoryOptions {
|
|
107
|
+
children: ReactNode;
|
|
108
|
+
/** Override entries (useful for testing) */
|
|
109
|
+
entries?: COMTimelineEntry[];
|
|
110
|
+
/** Override pending messages */
|
|
111
|
+
pending?: ExecutionMessage[];
|
|
112
|
+
}
|
|
113
|
+
interface TimelineMessagesProps {
|
|
114
|
+
/** Custom renderer for each entry */
|
|
115
|
+
renderEntry?: (entry: COMTimelineEntry, index: number) => JSX.Element | null;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Access timeline context from within Timeline.Provider.
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```tsx
|
|
122
|
+
* function MessageCount() {
|
|
123
|
+
* const { messageCount, byRole } = useTimelineContext();
|
|
124
|
+
* const userMessages = byRole('user');
|
|
125
|
+
* return <div>User messages: {userMessages.length} / {messageCount}</div>;
|
|
126
|
+
* }
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
export declare function useTimelineContext(): TimelineContextValue;
|
|
130
|
+
/**
|
|
131
|
+
* Access timeline context, returning null if not within provider.
|
|
132
|
+
* Useful for optional timeline access.
|
|
133
|
+
*/
|
|
134
|
+
export declare function useTimelineContextOptional(): TimelineContextValue | null;
|
|
135
|
+
/**
|
|
136
|
+
* Get the full conversation history from the COM.
|
|
137
|
+
*
|
|
138
|
+
* This hook returns all timeline entries directly from the COM,
|
|
139
|
+
* without needing to be within a Timeline.Provider.
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```tsx
|
|
143
|
+
* function HistoryViewer() {
|
|
144
|
+
* const history = useConversationHistory();
|
|
145
|
+
* return (
|
|
146
|
+
* <div>
|
|
147
|
+
* {history.map(entry => (
|
|
148
|
+
* <div key={entry.id}>{entry.message.role}: ...</div>
|
|
149
|
+
* ))}
|
|
150
|
+
* </div>
|
|
151
|
+
* );
|
|
152
|
+
* }
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
export declare function useConversationHistory(): COMTimelineEntry[];
|
|
156
|
+
export {};
|
|
157
|
+
//# sourceMappingURL=timeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../../src/jsx/components/timeline.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timeline Component
|
|
3
|
+
*
|
|
4
|
+
* Renders conversation history with optional pending messages.
|
|
5
|
+
* Supports token budget compaction via maxTokens/strategy props.
|
|
6
|
+
* Uses React context to provide timeline access to descendants.
|
|
7
|
+
*
|
|
8
|
+
* @module agentick/components
|
|
9
|
+
*/
|
|
10
|
+
import React, { createContext, useContext, useEffect, useMemo, useRef, } from "react";
|
|
11
|
+
import { useTickState } from "../../hooks/context";
|
|
12
|
+
import { compactEntries } from "./token-budget";
|
|
13
|
+
import { Logger } from "@agentick/kernel";
|
|
14
|
+
const log = Logger.for("Timeline");
|
|
15
|
+
// Helper for createElement
|
|
16
|
+
const h = React.createElement;
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// React Context
|
|
19
|
+
// ============================================================================
|
|
20
|
+
const TimelineContext = createContext(null);
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// Default Message Renderer
|
|
23
|
+
// ============================================================================
|
|
24
|
+
/**
|
|
25
|
+
* Default renderer for a single timeline entry.
|
|
26
|
+
*
|
|
27
|
+
* Renders directly to the "entry" intrinsic element to avoid
|
|
28
|
+
* React trying to render Agentick components that return Agentick elements.
|
|
29
|
+
*/
|
|
30
|
+
function DefaultMessage({ entry, }) {
|
|
31
|
+
if (!entry.message)
|
|
32
|
+
return h(React.Fragment, null);
|
|
33
|
+
const { role, content } = entry.message;
|
|
34
|
+
// Extract text content
|
|
35
|
+
const textContent = content
|
|
36
|
+
.filter((block) => block.type === "text")
|
|
37
|
+
.map((block) => block.text)
|
|
38
|
+
.join("\n");
|
|
39
|
+
if (!textContent)
|
|
40
|
+
return h(React.Fragment, null);
|
|
41
|
+
// Render the "entry" intrinsic element directly
|
|
42
|
+
// This avoids going through User/Assistant which return Agentick elements
|
|
43
|
+
if (role === "user" || role === "assistant" || role === "tool") {
|
|
44
|
+
return h("entry", {
|
|
45
|
+
kind: "message",
|
|
46
|
+
message: {
|
|
47
|
+
role,
|
|
48
|
+
content: [{ type: "text", text: textContent }],
|
|
49
|
+
// Preserve message ID for deduplication in complete()
|
|
50
|
+
id: entry.message.id,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
// System and others - skip in default rendering
|
|
55
|
+
return h(React.Fragment, null);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Default renderer for a pending (queued) message.
|
|
59
|
+
*
|
|
60
|
+
* ExecutionMessage.content contains the actual Message object.
|
|
61
|
+
*/
|
|
62
|
+
function DefaultPendingMessage({ message, }) {
|
|
63
|
+
// The content is the actual Message object
|
|
64
|
+
const msg = message.content;
|
|
65
|
+
if (!msg)
|
|
66
|
+
return h(React.Fragment, null);
|
|
67
|
+
const { role, content } = msg;
|
|
68
|
+
if (!Array.isArray(content))
|
|
69
|
+
return h(React.Fragment, null);
|
|
70
|
+
// Extract text content
|
|
71
|
+
const textContent = content
|
|
72
|
+
.filter((block) => typeof block === "object" && block !== null && block.type === "text")
|
|
73
|
+
.map((block) => block.text)
|
|
74
|
+
.join("\n");
|
|
75
|
+
if (!textContent)
|
|
76
|
+
return h(React.Fragment, null);
|
|
77
|
+
// Render the "entry" intrinsic element
|
|
78
|
+
// Preserve message ID for deduplication in complete()
|
|
79
|
+
const msgWithId = msg;
|
|
80
|
+
return h("entry", {
|
|
81
|
+
kind: "message",
|
|
82
|
+
message: {
|
|
83
|
+
role,
|
|
84
|
+
content: [{ type: "text", text: textContent }],
|
|
85
|
+
id: msgWithId.id,
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
// ============================================================================
|
|
90
|
+
// Helper: Apply filtering to entries
|
|
91
|
+
// ============================================================================
|
|
92
|
+
function applyFilters(entries, options) {
|
|
93
|
+
let filtered = entries;
|
|
94
|
+
// Apply role filter
|
|
95
|
+
if (options.roles && options.roles.length > 0) {
|
|
96
|
+
const allowedRoles = options.roles;
|
|
97
|
+
filtered = filtered.filter((entry) => allowedRoles.includes(entry.message.role));
|
|
98
|
+
}
|
|
99
|
+
// Apply custom filter
|
|
100
|
+
if (options.filter) {
|
|
101
|
+
filtered = filtered.filter(options.filter);
|
|
102
|
+
}
|
|
103
|
+
// Apply limit (take from end to get most recent)
|
|
104
|
+
if (options.limit && options.limit > 0 && filtered.length > options.limit) {
|
|
105
|
+
filtered = filtered.slice(-options.limit);
|
|
106
|
+
}
|
|
107
|
+
return filtered;
|
|
108
|
+
}
|
|
109
|
+
// ============================================================================
|
|
110
|
+
// Timeline Component
|
|
111
|
+
// ============================================================================
|
|
112
|
+
/**
|
|
113
|
+
* Renders conversation history from the COM timeline.
|
|
114
|
+
*
|
|
115
|
+
* @example Basic usage
|
|
116
|
+
* ```tsx
|
|
117
|
+
* <Timeline />
|
|
118
|
+
* ```
|
|
119
|
+
*
|
|
120
|
+
* @example With filtering
|
|
121
|
+
* ```tsx
|
|
122
|
+
* <Timeline roles={['user', 'assistant']} limit={10} />
|
|
123
|
+
* ```
|
|
124
|
+
*
|
|
125
|
+
* @example With token budget
|
|
126
|
+
* ```tsx
|
|
127
|
+
* <Timeline maxTokens={4000} strategy="truncate" />
|
|
128
|
+
* ```
|
|
129
|
+
*
|
|
130
|
+
* @example With render prop
|
|
131
|
+
* ```tsx
|
|
132
|
+
* <Timeline maxTokens={8000} headroom={500}>
|
|
133
|
+
* {(entries) => entries.map(entry => <Message key={entry.id} entry={entry} />)}
|
|
134
|
+
* </Timeline>
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
export function Timeline(props) {
|
|
138
|
+
// Get tickState from context (contains previous timeline and queued messages)
|
|
139
|
+
let tickState = null;
|
|
140
|
+
try {
|
|
141
|
+
tickState = useTickState();
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Outside of AgentickProvider - return empty
|
|
145
|
+
}
|
|
146
|
+
// Get raw timeline entries, apply filters
|
|
147
|
+
const filteredEntries = useMemo(() => {
|
|
148
|
+
if (!tickState?.previous?.timeline) {
|
|
149
|
+
log.debug({ tick: tickState?.tick, hasPrevious: !!tickState?.previous }, "Timeline: No previous timeline available");
|
|
150
|
+
return [];
|
|
151
|
+
}
|
|
152
|
+
const rawEntries = tickState.previous.timeline;
|
|
153
|
+
log.debug({
|
|
154
|
+
tick: tickState.tick,
|
|
155
|
+
rawCount: rawEntries.length,
|
|
156
|
+
roles: rawEntries.map((e) => e.message?.role),
|
|
157
|
+
}, "Timeline: Processing previous timeline");
|
|
158
|
+
return applyFilters(rawEntries, props);
|
|
159
|
+
}, [tickState?.previous?.timeline, props.filter, props.limit, props.roles]);
|
|
160
|
+
// Apply token budget compaction (when maxTokens is set)
|
|
161
|
+
const { entries, evicted, budgetInfo } = useMemo(() => {
|
|
162
|
+
if (props.maxTokens == null) {
|
|
163
|
+
return { entries: filteredEntries, evicted: [], budgetInfo: null };
|
|
164
|
+
}
|
|
165
|
+
const result = compactEntries(filteredEntries, {
|
|
166
|
+
maxTokens: props.maxTokens,
|
|
167
|
+
strategy: props.strategy,
|
|
168
|
+
headroom: props.headroom,
|
|
169
|
+
preserveRoles: props.preserveRoles,
|
|
170
|
+
guidance: props.guidance,
|
|
171
|
+
});
|
|
172
|
+
const info = {
|
|
173
|
+
maxTokens: props.maxTokens,
|
|
174
|
+
effectiveBudget: props.maxTokens - (props.headroom ?? 0),
|
|
175
|
+
currentTokens: result.currentTokens,
|
|
176
|
+
evictedCount: result.evicted.length,
|
|
177
|
+
isCompacted: result.evicted.length > 0,
|
|
178
|
+
};
|
|
179
|
+
return { entries: result.kept, evicted: result.evicted, budgetInfo: info };
|
|
180
|
+
}, [
|
|
181
|
+
filteredEntries,
|
|
182
|
+
props.maxTokens,
|
|
183
|
+
props.headroom,
|
|
184
|
+
props.strategy,
|
|
185
|
+
props.preserveRoles,
|
|
186
|
+
props.guidance,
|
|
187
|
+
]);
|
|
188
|
+
// Fire onEvict callback as an effect — not a side effect in memo
|
|
189
|
+
const onEvictRef = useRef(props.onEvict);
|
|
190
|
+
onEvictRef.current = props.onEvict;
|
|
191
|
+
useEffect(() => {
|
|
192
|
+
if (evicted.length > 0 && onEvictRef.current) {
|
|
193
|
+
onEvictRef.current(evicted);
|
|
194
|
+
}
|
|
195
|
+
}, [evicted]);
|
|
196
|
+
// Pending messages (queued for this tick)
|
|
197
|
+
const pending = useMemo(() => {
|
|
198
|
+
return (tickState?.queuedMessages ?? []);
|
|
199
|
+
}, [tickState?.queuedMessages]);
|
|
200
|
+
log.debug({ entriesCount: entries.length, pendingCount: pending.length }, "Timeline: Rendering with entries and pending");
|
|
201
|
+
// Render based on children type
|
|
202
|
+
if (props.children !== undefined) {
|
|
203
|
+
if (typeof props.children === "function") {
|
|
204
|
+
// Render prop pattern
|
|
205
|
+
const result = props.children(entries, pending, budgetInfo);
|
|
206
|
+
return h(React.Fragment, null, result);
|
|
207
|
+
}
|
|
208
|
+
// Regular children
|
|
209
|
+
return h(React.Fragment, null, props.children);
|
|
210
|
+
}
|
|
211
|
+
// Default rendering: render history AND pending messages
|
|
212
|
+
return h(React.Fragment, null,
|
|
213
|
+
// Render history entries
|
|
214
|
+
...entries.map((entry, index) => h(DefaultMessage, { key: `history-${entry.id ?? index}`, entry })),
|
|
215
|
+
// Render pending (queued) messages
|
|
216
|
+
...pending.map((message, index) => h(DefaultPendingMessage, { key: `pending-${message.id ?? index}`, message })));
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Provider that exposes timeline context to descendants.
|
|
220
|
+
*
|
|
221
|
+
* @example
|
|
222
|
+
* ```tsx
|
|
223
|
+
* <Timeline.Provider>
|
|
224
|
+
* <MyComponent />
|
|
225
|
+
* </Timeline.Provider>
|
|
226
|
+
* ```
|
|
227
|
+
*
|
|
228
|
+
* Children can then use:
|
|
229
|
+
* ```tsx
|
|
230
|
+
* const { entries, byRole } = useTimelineContext();
|
|
231
|
+
* ```
|
|
232
|
+
*/
|
|
233
|
+
Timeline.Provider = function TimelineProvider(props) {
|
|
234
|
+
// Get tickState from context if not overridden
|
|
235
|
+
let tickState = null;
|
|
236
|
+
try {
|
|
237
|
+
tickState = useTickState();
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
// Outside of AgentickProvider
|
|
241
|
+
}
|
|
242
|
+
// Use provided entries or get from tickState.previous.timeline
|
|
243
|
+
const rawEntries = props.entries ?? (tickState?.previous?.timeline ?? []);
|
|
244
|
+
const pending = props.pending ?? (tickState?.queuedMessages ?? []);
|
|
245
|
+
// Apply filters
|
|
246
|
+
const entries = useMemo(() => {
|
|
247
|
+
return applyFilters(rawEntries, props);
|
|
248
|
+
}, [rawEntries, props.filter, props.limit, props.roles]);
|
|
249
|
+
// Create context value
|
|
250
|
+
const contextValue = useMemo(() => {
|
|
251
|
+
return {
|
|
252
|
+
entries,
|
|
253
|
+
pending,
|
|
254
|
+
messageCount: entries.length,
|
|
255
|
+
byRole: (role) => entries.filter((e) => e.message.role === role),
|
|
256
|
+
budget: null,
|
|
257
|
+
};
|
|
258
|
+
}, [entries, pending]);
|
|
259
|
+
return h(TimelineContext.Provider, { value: contextValue }, props.children);
|
|
260
|
+
};
|
|
261
|
+
/**
|
|
262
|
+
* Renders messages from Timeline.Provider context.
|
|
263
|
+
*
|
|
264
|
+
* @example
|
|
265
|
+
* ```tsx
|
|
266
|
+
* <Timeline.Provider>
|
|
267
|
+
* <Timeline.Messages />
|
|
268
|
+
* </Timeline.Provider>
|
|
269
|
+
* ```
|
|
270
|
+
*
|
|
271
|
+
* @example With custom renderer
|
|
272
|
+
* ```tsx
|
|
273
|
+
* <Timeline.Provider>
|
|
274
|
+
* <Timeline.Messages
|
|
275
|
+
* renderEntry={(entry) => <CustomMessage entry={entry} />}
|
|
276
|
+
* />
|
|
277
|
+
* </Timeline.Provider>
|
|
278
|
+
* ```
|
|
279
|
+
*/
|
|
280
|
+
Timeline.Messages = function TimelineMessages(props) {
|
|
281
|
+
const context = useContext(TimelineContext);
|
|
282
|
+
if (!context) {
|
|
283
|
+
return h(React.Fragment, null);
|
|
284
|
+
}
|
|
285
|
+
const { entries, pending } = context;
|
|
286
|
+
if (props.renderEntry) {
|
|
287
|
+
return h(React.Fragment, null, entries.map((entry, index) => props.renderEntry(entry, index)));
|
|
288
|
+
}
|
|
289
|
+
// Default rendering: history + pending
|
|
290
|
+
return h(React.Fragment, null, ...entries.map((entry, index) => h(DefaultMessage, { key: `history-${entry.id ?? index}`, entry })), ...pending.map((message, index) => h(DefaultPendingMessage, { key: `pending-${message.id ?? index}`, message })));
|
|
291
|
+
};
|
|
292
|
+
// ============================================================================
|
|
293
|
+
// useTimelineContext
|
|
294
|
+
// ============================================================================
|
|
295
|
+
/**
|
|
296
|
+
* Access timeline context from within Timeline.Provider.
|
|
297
|
+
*
|
|
298
|
+
* @example
|
|
299
|
+
* ```tsx
|
|
300
|
+
* function MessageCount() {
|
|
301
|
+
* const { messageCount, byRole } = useTimelineContext();
|
|
302
|
+
* const userMessages = byRole('user');
|
|
303
|
+
* return <div>User messages: {userMessages.length} / {messageCount}</div>;
|
|
304
|
+
* }
|
|
305
|
+
* ```
|
|
306
|
+
*/
|
|
307
|
+
export function useTimelineContext() {
|
|
308
|
+
const context = useContext(TimelineContext);
|
|
309
|
+
if (!context) {
|
|
310
|
+
throw new Error("useTimelineContext must be used within a Timeline.Provider");
|
|
311
|
+
}
|
|
312
|
+
return context;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Access timeline context, returning null if not within provider.
|
|
316
|
+
* Useful for optional timeline access.
|
|
317
|
+
*/
|
|
318
|
+
export function useTimelineContextOptional() {
|
|
319
|
+
return useContext(TimelineContext);
|
|
320
|
+
}
|
|
321
|
+
// ============================================================================
|
|
322
|
+
// useConversationHistory
|
|
323
|
+
// ============================================================================
|
|
324
|
+
/**
|
|
325
|
+
* Get the full conversation history from the COM.
|
|
326
|
+
*
|
|
327
|
+
* This hook returns all timeline entries directly from the COM,
|
|
328
|
+
* without needing to be within a Timeline.Provider.
|
|
329
|
+
*
|
|
330
|
+
* @example
|
|
331
|
+
* ```tsx
|
|
332
|
+
* function HistoryViewer() {
|
|
333
|
+
* const history = useConversationHistory();
|
|
334
|
+
* return (
|
|
335
|
+
* <div>
|
|
336
|
+
* {history.map(entry => (
|
|
337
|
+
* <div key={entry.id}>{entry.message.role}: ...</div>
|
|
338
|
+
* ))}
|
|
339
|
+
* </div>
|
|
340
|
+
* );
|
|
341
|
+
* }
|
|
342
|
+
* ```
|
|
343
|
+
*/
|
|
344
|
+
export function useConversationHistory() {
|
|
345
|
+
// Get tickState from context
|
|
346
|
+
let tickState = null;
|
|
347
|
+
try {
|
|
348
|
+
tickState = useTickState();
|
|
349
|
+
}
|
|
350
|
+
catch {
|
|
351
|
+
// Outside of AgentickProvider
|
|
352
|
+
return [];
|
|
353
|
+
}
|
|
354
|
+
// Return timeline entries from tickState.previous
|
|
355
|
+
return (tickState?.previous?.timeline ?? []);
|
|
356
|
+
}
|
|
357
|
+
//# sourceMappingURL=timeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../../src/jsx/components/timeline.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token Budget — Compaction utilities for timeline entries.
|
|
3
|
+
*
|
|
4
|
+
* Pure functions and types for managing token budgets. No components,
|
|
5
|
+
* no contexts, no hooks. Used internally by Timeline when budget
|
|
6
|
+
* props (maxTokens, strategy, etc.) are provided.
|
|
7
|
+
*
|
|
8
|
+
* Uses `.tokens` field from token estimation when available,
|
|
9
|
+
* falls back to char/4 heuristic.
|
|
10
|
+
*/
|
|
11
|
+
import type { COMTimelineEntry } from "../../com/types";
|
|
12
|
+
/**
|
|
13
|
+
* Compaction strategy for handling token budget overflow.
|
|
14
|
+
*
|
|
15
|
+
* - `"none"`: No compaction, entries pass through unchanged
|
|
16
|
+
* - `"truncate"`: Keep newest entries that fit within budget
|
|
17
|
+
* - `"sliding-window"`: Preserve specific roles, then fill remaining budget with newest entries
|
|
18
|
+
* - Custom function: Full control over compaction logic
|
|
19
|
+
*/
|
|
20
|
+
export type CompactionStrategy = "none" | "truncate" | "sliding-window" | CompactionFunction;
|
|
21
|
+
/**
|
|
22
|
+
* Custom compaction function signature.
|
|
23
|
+
*/
|
|
24
|
+
export type CompactionFunction = (entries: COMTimelineEntry[], budget: {
|
|
25
|
+
maxTokens: number;
|
|
26
|
+
currentTokens: number;
|
|
27
|
+
}, guidance?: string) => CompactionResult;
|
|
28
|
+
/**
|
|
29
|
+
* Result from a compaction operation.
|
|
30
|
+
*/
|
|
31
|
+
export interface CompactionResult {
|
|
32
|
+
kept: COMTimelineEntry[];
|
|
33
|
+
evicted: COMTimelineEntry[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Token budget info exposed via TimelineContextValue.
|
|
37
|
+
*/
|
|
38
|
+
export interface TokenBudgetInfo {
|
|
39
|
+
/** Configured max tokens */
|
|
40
|
+
maxTokens: number;
|
|
41
|
+
/** Effective budget after headroom */
|
|
42
|
+
effectiveBudget: number;
|
|
43
|
+
/** Current token count of kept entries */
|
|
44
|
+
currentTokens: number;
|
|
45
|
+
/** Number of entries evicted */
|
|
46
|
+
evictedCount: number;
|
|
47
|
+
/** Whether compaction was applied */
|
|
48
|
+
isCompacted: boolean;
|
|
49
|
+
}
|
|
50
|
+
/** Get token count for an entry. Uses .tokens field if available, falls back to char/4. */
|
|
51
|
+
export declare function getEntryTokens(entry: COMTimelineEntry): number;
|
|
52
|
+
export interface CompactOptions {
|
|
53
|
+
maxTokens: number;
|
|
54
|
+
strategy?: CompactionStrategy;
|
|
55
|
+
headroom?: number;
|
|
56
|
+
preserveRoles?: string[];
|
|
57
|
+
guidance?: string;
|
|
58
|
+
}
|
|
59
|
+
export interface CompactResult {
|
|
60
|
+
kept: COMTimelineEntry[];
|
|
61
|
+
evicted: COMTimelineEntry[];
|
|
62
|
+
currentTokens: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Apply token budget compaction to a set of entries.
|
|
66
|
+
*
|
|
67
|
+
* Pure function — no side effects, no React, no hooks.
|
|
68
|
+
*/
|
|
69
|
+
export declare function compactEntries(entries: COMTimelineEntry[], options: CompactOptions): CompactResult;
|
|
70
|
+
//# sourceMappingURL=token-budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-budget.d.ts","sourceRoot":"","sources":["../../../src/jsx/components/token-budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMxD;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAE7F;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,EACpD,QAAQ,CAAC,EAAE,MAAM,KACd,gBAAgB,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,WAAW,EAAE,OAAO,CAAC;CACtB;AAMD,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAsB9D;AA+ED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,OAAO,EAAE,cAAc,GACtB,aAAa,CAuCf"}
|