@roackb2/heddle 0.0.13 → 0.0.15
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 +284 -217
- package/dist/examples/heartbeat-scheduler.js +3 -3
- package/dist/examples/heartbeat-scheduler.js.map +1 -1
- package/dist/examples/heartbeat.js +3 -3
- package/dist/examples/heartbeat.js.map +1 -1
- package/dist/examples/host-events.js +1 -1
- package/dist/examples/host-events.js.map +1 -1
- package/dist/examples/programmatic-loop.js +4 -4
- package/dist/examples/programmatic-loop.js.map +1 -1
- package/dist/src/cli/ask.js +1 -1
- package/dist/src/cli/ask.js.map +1 -1
- package/dist/src/cli/chat/App.d.ts.map +1 -1
- package/dist/src/cli/chat/App.js +3 -3
- package/dist/src/cli/chat/App.js.map +1 -1
- package/dist/src/cli/chat/components/ActivityPanel.d.ts +1 -1
- package/dist/src/cli/chat/components/ActivityPanel.d.ts.map +1 -1
- package/dist/src/cli/chat/components/ActivityPanel.js +1 -1
- package/dist/src/cli/chat/components/ActivityPanel.js.map +1 -1
- package/dist/src/cli/chat/components/ConversationPanel.d.ts +1 -1
- package/dist/src/cli/chat/components/ConversationPanel.d.ts.map +1 -1
- package/dist/src/cli/chat/hooks/useAgentRun.d.ts +2 -2
- package/dist/src/cli/chat/hooks/useAgentRun.d.ts.map +1 -1
- package/dist/src/cli/chat/hooks/useAgentRun.js +2 -2
- package/dist/src/cli/chat/hooks/useAgentRun.js.map +1 -1
- package/dist/src/cli/chat/hooks/useApprovalFlow.d.ts +2 -2
- package/dist/src/cli/chat/hooks/useApprovalFlow.d.ts.map +1 -1
- package/dist/src/cli/chat/state/approval-rules.d.ts +1 -1
- package/dist/src/cli/chat/state/approval-rules.d.ts.map +1 -1
- package/dist/src/cli/chat/state/approval-rules.js +1 -1
- package/dist/src/cli/chat/state/approval-rules.js.map +1 -1
- package/dist/src/cli/chat/state/compaction.d.ts +1 -16
- package/dist/src/cli/chat/state/compaction.d.ts.map +1 -1
- package/dist/src/cli/chat/state/compaction.js +1 -158
- package/dist/src/cli/chat/state/compaction.js.map +1 -1
- package/dist/src/cli/chat/state/local-commands.js +2 -2
- package/dist/src/cli/chat/state/local-commands.js.map +1 -1
- package/dist/src/cli/chat/state/storage.d.ts +1 -13
- package/dist/src/cli/chat/state/storage.d.ts.map +1 -1
- package/dist/src/cli/chat/state/storage.js +1 -146
- package/dist/src/cli/chat/state/storage.js.map +1 -1
- package/dist/src/cli/chat/state/types.d.ts +1 -76
- package/dist/src/cli/chat/state/types.d.ts.map +1 -1
- package/dist/src/cli/chat/utils/file-mentions.js +1 -1
- package/dist/src/cli/chat/utils/file-mentions.js.map +1 -1
- package/dist/src/cli/chat/utils/format.d.ts +3 -7
- package/dist/src/cli/chat/utils/format.d.ts.map +1 -1
- package/dist/src/cli/chat/utils/format.js +3 -181
- package/dist/src/cli/chat/utils/format.js.map +1 -1
- package/dist/src/cli/chat/utils/runtime.d.ts +2 -2
- package/dist/src/cli/chat/utils/runtime.d.ts.map +1 -1
- package/dist/src/cli/chat/utils/runtime.js +4 -9
- package/dist/src/cli/chat/utils/runtime.js.map +1 -1
- package/dist/src/cli/daemon.d.ts +14 -0
- package/dist/src/cli/daemon.d.ts.map +1 -0
- package/dist/src/cli/daemon.js +61 -0
- package/dist/src/cli/daemon.js.map +1 -0
- package/dist/src/cli/heartbeat.js +1 -1
- package/dist/src/cli/heartbeat.js.map +1 -1
- package/dist/src/cli/main.js +8 -2
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/core/agent/history.d.ts.map +1 -0
- package/dist/src/core/agent/history.js.map +1 -0
- package/dist/src/core/agent/mutation-tracking.d.ts.map +1 -0
- package/dist/src/{run-agent → core/agent}/mutation-tracking.js +12 -5
- package/dist/src/core/agent/mutation-tracking.js.map +1 -0
- package/dist/src/core/agent/post-mutation.d.ts.map +1 -0
- package/dist/src/core/agent/post-mutation.js.map +1 -0
- package/dist/src/core/agent/progress-reminders.d.ts.map +1 -0
- package/dist/src/core/agent/progress-reminders.js.map +1 -0
- package/dist/src/{run-agent.d.ts → core/agent/run-agent.d.ts} +2 -2
- package/dist/src/core/agent/run-agent.d.ts.map +1 -0
- package/dist/src/{run-agent.js → core/agent/run-agent.js} +12 -16
- package/dist/src/core/agent/run-agent.js.map +1 -0
- package/dist/src/{run-agent → core/agent}/tool-dispatch.d.ts +1 -1
- package/dist/src/core/agent/tool-dispatch.d.ts.map +1 -0
- package/dist/src/core/agent/tool-dispatch.js.map +1 -0
- package/dist/src/core/agent/util.d.ts.map +1 -0
- package/dist/src/core/agent/util.js.map +1 -0
- package/dist/src/core/chat/compaction.d.ts +17 -0
- package/dist/src/core/chat/compaction.d.ts.map +1 -0
- package/dist/src/core/chat/compaction.js +159 -0
- package/dist/src/core/chat/compaction.js.map +1 -0
- package/dist/src/core/chat/format.d.ts +12 -0
- package/dist/src/core/chat/format.d.ts.map +1 -0
- package/dist/src/core/chat/format.js +139 -0
- package/dist/src/core/chat/format.js.map +1 -0
- package/dist/src/core/chat/session-submit.d.ts +14 -0
- package/dist/src/core/chat/session-submit.d.ts.map +1 -0
- package/dist/src/core/chat/session-submit.js +80 -0
- package/dist/src/core/chat/session-submit.js.map +1 -0
- package/dist/src/core/chat/storage.d.ts +14 -0
- package/dist/src/core/chat/storage.d.ts.map +1 -0
- package/dist/src/core/chat/storage.js +147 -0
- package/dist/src/core/chat/storage.js.map +1 -0
- package/dist/src/core/chat/trace.d.ts +3 -0
- package/dist/src/core/chat/trace.d.ts.map +1 -0
- package/dist/src/core/chat/trace.js +9 -0
- package/dist/src/core/chat/trace.js.map +1 -0
- package/dist/src/core/chat/types.d.ts +77 -0
- package/dist/src/core/chat/types.d.ts.map +1 -0
- package/dist/src/core/chat/types.js +2 -0
- package/dist/src/core/chat/types.js.map +1 -0
- package/dist/src/core/config.d.ts.map +1 -0
- package/dist/src/core/config.js.map +1 -0
- package/dist/src/core/llm/anthropic.d.ts.map +1 -0
- package/dist/src/core/llm/anthropic.js.map +1 -0
- package/dist/src/core/llm/factory.d.ts.map +1 -0
- package/dist/src/core/llm/factory.js.map +1 -0
- package/dist/src/core/llm/openai-models.d.ts.map +1 -0
- package/dist/src/core/llm/openai-models.js.map +1 -0
- package/dist/src/core/llm/openai.d.ts.map +1 -0
- package/dist/src/core/llm/openai.js.map +1 -0
- package/dist/src/core/llm/providers.d.ts.map +1 -0
- package/dist/src/core/llm/providers.js.map +1 -0
- package/dist/src/core/llm/types.d.ts.map +1 -0
- package/dist/src/core/llm/types.js.map +1 -0
- package/dist/src/core/prompts/system-prompt.d.ts.map +1 -0
- package/dist/src/core/prompts/system-prompt.js.map +1 -0
- package/dist/src/{runtime → core/runtime}/agent-loop.d.ts +1 -1
- package/dist/src/core/runtime/agent-loop.d.ts.map +1 -0
- package/dist/src/{runtime → core/runtime}/agent-loop.js +1 -1
- package/dist/src/core/runtime/agent-loop.js.map +1 -0
- package/dist/src/core/runtime/api-keys.d.ts.map +1 -0
- package/dist/src/core/runtime/api-keys.js.map +1 -0
- package/dist/src/core/runtime/default-tools.d.ts.map +1 -0
- package/dist/src/core/runtime/default-tools.js.map +1 -0
- package/dist/src/core/runtime/events.d.ts.map +1 -0
- package/dist/src/core/runtime/events.js.map +1 -0
- package/dist/src/core/runtime/heartbeat-lucid.d.ts.map +1 -0
- package/dist/src/core/runtime/heartbeat-lucid.js.map +1 -0
- package/dist/src/core/runtime/heartbeat-scheduler.d.ts.map +1 -0
- package/dist/src/core/runtime/heartbeat-scheduler.js.map +1 -0
- package/dist/src/core/runtime/heartbeat-store.d.ts.map +1 -0
- package/dist/src/core/runtime/heartbeat-store.js.map +1 -0
- package/dist/src/core/runtime/heartbeat-views.d.ts.map +1 -0
- package/dist/src/core/runtime/heartbeat-views.js.map +1 -0
- package/dist/src/core/runtime/heartbeat.d.ts.map +1 -0
- package/dist/src/{runtime → core/runtime}/heartbeat.js +0 -15
- package/dist/src/core/runtime/heartbeat.js.map +1 -0
- package/dist/src/core/tools/edit-file.d.ts.map +1 -0
- package/dist/src/core/tools/edit-file.js.map +1 -0
- package/dist/src/core/tools/execute-tool.d.ts.map +1 -0
- package/dist/src/core/tools/execute-tool.js.map +1 -0
- package/dist/src/core/tools/file-edit-core.d.ts.map +1 -0
- package/dist/src/core/tools/file-edit-core.js.map +1 -0
- package/dist/src/core/tools/list-files.d.ts.map +1 -0
- package/dist/src/core/tools/list-files.js.map +1 -0
- package/dist/src/core/tools/memory-notes.d.ts.map +1 -0
- package/dist/src/core/tools/memory-notes.js.map +1 -0
- package/dist/src/core/tools/read-file.d.ts.map +1 -0
- package/dist/src/core/tools/read-file.js.map +1 -0
- package/dist/src/core/tools/registry.d.ts.map +1 -0
- package/dist/src/core/tools/registry.js.map +1 -0
- package/dist/src/core/tools/report-state.d.ts.map +1 -0
- package/dist/src/core/tools/report-state.js.map +1 -0
- package/dist/src/core/tools/run-shell.d.ts.map +1 -0
- package/dist/src/core/tools/run-shell.js.map +1 -0
- package/dist/src/core/tools/search-files.d.ts.map +1 -0
- package/dist/src/core/tools/search-files.js.map +1 -0
- package/dist/src/core/tools/update-plan.d.ts.map +1 -0
- package/dist/src/core/tools/update-plan.js.map +1 -0
- package/dist/src/core/tools/view-image.d.ts.map +1 -0
- package/dist/src/core/tools/view-image.js.map +1 -0
- package/dist/src/core/tools/web-search.d.ts.map +1 -0
- package/dist/src/core/tools/web-search.js.map +1 -0
- package/dist/src/core/trace/format.d.ts.map +1 -0
- package/dist/src/core/trace/format.js.map +1 -0
- package/dist/src/core/trace/recorder.d.ts.map +1 -0
- package/dist/src/core/trace/recorder.js.map +1 -0
- package/dist/src/core/types.d.ts.map +1 -0
- package/dist/src/core/types.js.map +1 -0
- package/dist/src/core/utils/budget.d.ts.map +1 -0
- package/dist/src/core/utils/budget.js.map +1 -0
- package/dist/src/core/utils/errors.d.ts.map +1 -0
- package/dist/src/core/utils/errors.js.map +1 -0
- package/dist/src/core/utils/logger.d.ts.map +1 -0
- package/dist/src/core/utils/logger.js.map +1 -0
- package/dist/src/index.d.ts +59 -59
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +34 -34
- package/dist/src/index.js.map +1 -1
- package/dist/src/integrations/cyberloop-kinematics.d.ts +1 -1
- package/dist/src/integrations/cyberloop-kinematics.d.ts.map +1 -1
- package/dist/src/integrations/cyberloop-kinematics.js +1 -1
- package/dist/src/integrations/cyberloop-kinematics.js.map +1 -1
- package/dist/src/integrations/cyberloop.d.ts +1 -1
- package/dist/src/integrations/cyberloop.d.ts.map +1 -1
- package/dist/src/server/app.d.ts +6 -0
- package/dist/src/server/app.d.ts.map +1 -0
- package/dist/src/server/app.js +36 -0
- package/dist/src/server/app.js.map +1 -0
- package/dist/src/server/dev.d.ts +2 -0
- package/dist/src/server/dev.d.ts.map +1 -0
- package/dist/src/server/dev.js +39 -0
- package/dist/src/server/dev.js.map +1 -0
- package/dist/src/server/features/control-plane/router.d.ts +64 -0
- package/dist/src/server/features/control-plane/router.d.ts.map +1 -0
- package/dist/src/server/features/control-plane/router.js +60 -0
- package/dist/src/server/features/control-plane/router.js.map +1 -0
- package/dist/src/server/features/control-plane/services/chat-sessions.d.ts +20 -0
- package/dist/src/server/features/control-plane/services/chat-sessions.d.ts.map +1 -0
- package/dist/src/server/features/control-plane/services/chat-sessions.js +279 -0
- package/dist/src/server/features/control-plane/services/chat-sessions.js.map +1 -0
- package/dist/src/server/features/control-plane/services/control-plane-state.d.ts +4 -0
- package/dist/src/server/features/control-plane/services/control-plane-state.d.ts.map +1 -0
- package/dist/src/server/features/control-plane/services/control-plane-state.js +19 -0
- package/dist/src/server/features/control-plane/services/control-plane-state.js.map +1 -0
- package/dist/src/server/features/control-plane/services/heartbeat.d.ts +7 -0
- package/dist/src/server/features/control-plane/services/heartbeat.d.ts.map +1 -0
- package/dist/src/server/features/control-plane/services/heartbeat.js +12 -0
- package/dist/src/server/features/control-plane/services/heartbeat.js.map +1 -0
- package/dist/src/server/features/control-plane/types.d.ts +75 -0
- package/dist/src/server/features/control-plane/types.d.ts.map +1 -0
- package/dist/src/server/features/control-plane/types.js +2 -0
- package/dist/src/server/features/control-plane/types.js.map +1 -0
- package/dist/src/server/index.d.ts +8 -0
- package/dist/src/server/index.d.ts.map +1 -0
- package/dist/src/server/index.js +42 -0
- package/dist/src/server/index.js.map +1 -0
- package/dist/src/server/logger.d.ts +8 -0
- package/dist/src/server/logger.d.ts.map +1 -0
- package/dist/src/server/logger.js +11 -0
- package/dist/src/server/logger.js.map +1 -0
- package/dist/src/server/middleware/request-logging.d.ts +4 -0
- package/dist/src/server/middleware/request-logging.d.ts.map +1 -0
- package/dist/src/server/middleware/request-logging.js +15 -0
- package/dist/src/server/middleware/request-logging.js.map +1 -0
- package/dist/src/server/router.d.ts +82 -0
- package/dist/src/server/router.d.ts.map +1 -0
- package/dist/src/server/router.js +14 -0
- package/dist/src/server/router.js.map +1 -0
- package/dist/src/server/static.d.ts +4 -0
- package/dist/src/server/static.d.ts.map +1 -0
- package/dist/src/server/static.js +25 -0
- package/dist/src/server/static.js.map +1 -0
- package/dist/src/server/trpc.d.ts +9 -0
- package/dist/src/server/trpc.d.ts.map +1 -0
- package/dist/src/server/trpc.js +5 -0
- package/dist/src/server/trpc.js.map +1 -0
- package/dist/src/server/types.d.ts +17 -0
- package/dist/src/server/types.d.ts.map +1 -0
- package/dist/src/server/types.js +2 -0
- package/dist/src/server/types.js.map +1 -0
- package/dist/src/web/assets/favicon-CT3fFV8g.jpeg +0 -0
- package/dist/src/web/assets/index-DH9iWMSO.js +9 -0
- package/dist/src/web/assets/index-DyCJ7Ml4.css +1 -0
- package/dist/src/web/index.html +14 -0
- package/package.json +26 -3
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/config.js.map +0 -1
- package/dist/src/llm/anthropic.d.ts.map +0 -1
- package/dist/src/llm/anthropic.js.map +0 -1
- package/dist/src/llm/factory.d.ts.map +0 -1
- package/dist/src/llm/factory.js.map +0 -1
- package/dist/src/llm/openai-models.d.ts.map +0 -1
- package/dist/src/llm/openai-models.js.map +0 -1
- package/dist/src/llm/openai.d.ts.map +0 -1
- package/dist/src/llm/openai.js.map +0 -1
- package/dist/src/llm/providers.d.ts.map +0 -1
- package/dist/src/llm/providers.js.map +0 -1
- package/dist/src/llm/types.d.ts.map +0 -1
- package/dist/src/llm/types.js.map +0 -1
- package/dist/src/prompts/system-prompt.d.ts.map +0 -1
- package/dist/src/prompts/system-prompt.js.map +0 -1
- package/dist/src/run-agent/history.d.ts.map +0 -1
- package/dist/src/run-agent/history.js.map +0 -1
- package/dist/src/run-agent/mutation-tracking.d.ts.map +0 -1
- package/dist/src/run-agent/mutation-tracking.js.map +0 -1
- package/dist/src/run-agent/post-mutation.d.ts.map +0 -1
- package/dist/src/run-agent/post-mutation.js.map +0 -1
- package/dist/src/run-agent/progress-reminders.d.ts.map +0 -1
- package/dist/src/run-agent/progress-reminders.js.map +0 -1
- package/dist/src/run-agent/tool-dispatch.d.ts.map +0 -1
- package/dist/src/run-agent/tool-dispatch.js.map +0 -1
- package/dist/src/run-agent/util.d.ts.map +0 -1
- package/dist/src/run-agent/util.js.map +0 -1
- package/dist/src/run-agent.d.ts.map +0 -1
- package/dist/src/run-agent.js.map +0 -1
- package/dist/src/runtime/agent-loop.d.ts.map +0 -1
- package/dist/src/runtime/agent-loop.js.map +0 -1
- package/dist/src/runtime/api-keys.d.ts.map +0 -1
- package/dist/src/runtime/api-keys.js.map +0 -1
- package/dist/src/runtime/default-tools.d.ts.map +0 -1
- package/dist/src/runtime/default-tools.js.map +0 -1
- package/dist/src/runtime/events.d.ts.map +0 -1
- package/dist/src/runtime/events.js.map +0 -1
- package/dist/src/runtime/heartbeat-lucid.d.ts.map +0 -1
- package/dist/src/runtime/heartbeat-lucid.js.map +0 -1
- package/dist/src/runtime/heartbeat-scheduler.d.ts.map +0 -1
- package/dist/src/runtime/heartbeat-scheduler.js.map +0 -1
- package/dist/src/runtime/heartbeat-store.d.ts.map +0 -1
- package/dist/src/runtime/heartbeat-store.js.map +0 -1
- package/dist/src/runtime/heartbeat-views.d.ts.map +0 -1
- package/dist/src/runtime/heartbeat-views.js.map +0 -1
- package/dist/src/runtime/heartbeat.d.ts.map +0 -1
- package/dist/src/runtime/heartbeat.js.map +0 -1
- package/dist/src/tools/edit-file.d.ts.map +0 -1
- package/dist/src/tools/edit-file.js.map +0 -1
- package/dist/src/tools/execute-tool.d.ts.map +0 -1
- package/dist/src/tools/execute-tool.js.map +0 -1
- package/dist/src/tools/file-edit-core.d.ts.map +0 -1
- package/dist/src/tools/file-edit-core.js.map +0 -1
- package/dist/src/tools/list-files.d.ts.map +0 -1
- package/dist/src/tools/list-files.js.map +0 -1
- package/dist/src/tools/memory-notes.d.ts.map +0 -1
- package/dist/src/tools/memory-notes.js.map +0 -1
- package/dist/src/tools/read-file.d.ts.map +0 -1
- package/dist/src/tools/read-file.js.map +0 -1
- package/dist/src/tools/registry.d.ts.map +0 -1
- package/dist/src/tools/registry.js.map +0 -1
- package/dist/src/tools/report-state.d.ts.map +0 -1
- package/dist/src/tools/report-state.js.map +0 -1
- package/dist/src/tools/run-shell.d.ts.map +0 -1
- package/dist/src/tools/run-shell.js.map +0 -1
- package/dist/src/tools/search-files.d.ts.map +0 -1
- package/dist/src/tools/search-files.js.map +0 -1
- package/dist/src/tools/update-plan.d.ts.map +0 -1
- package/dist/src/tools/update-plan.js.map +0 -1
- package/dist/src/tools/view-image.d.ts.map +0 -1
- package/dist/src/tools/view-image.js.map +0 -1
- package/dist/src/tools/web-search.d.ts.map +0 -1
- package/dist/src/tools/web-search.js.map +0 -1
- package/dist/src/trace/format.d.ts.map +0 -1
- package/dist/src/trace/format.js.map +0 -1
- package/dist/src/trace/recorder.d.ts.map +0 -1
- package/dist/src/trace/recorder.js.map +0 -1
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js.map +0 -1
- package/dist/src/utils/budget.d.ts.map +0 -1
- package/dist/src/utils/budget.js.map +0 -1
- package/dist/src/utils/errors.d.ts.map +0 -1
- package/dist/src/utils/errors.js.map +0 -1
- package/dist/src/utils/logger.d.ts.map +0 -1
- package/dist/src/utils/logger.js.map +0 -1
- /package/dist/src/{run-agent → core/agent}/history.d.ts +0 -0
- /package/dist/src/{run-agent → core/agent}/history.js +0 -0
- /package/dist/src/{run-agent → core/agent}/mutation-tracking.d.ts +0 -0
- /package/dist/src/{run-agent → core/agent}/post-mutation.d.ts +0 -0
- /package/dist/src/{run-agent → core/agent}/post-mutation.js +0 -0
- /package/dist/src/{run-agent → core/agent}/progress-reminders.d.ts +0 -0
- /package/dist/src/{run-agent → core/agent}/progress-reminders.js +0 -0
- /package/dist/src/{run-agent → core/agent}/tool-dispatch.js +0 -0
- /package/dist/src/{run-agent → core/agent}/util.d.ts +0 -0
- /package/dist/src/{run-agent → core/agent}/util.js +0 -0
- /package/dist/src/{config.d.ts → core/config.d.ts} +0 -0
- /package/dist/src/{config.js → core/config.js} +0 -0
- /package/dist/src/{llm → core/llm}/anthropic.d.ts +0 -0
- /package/dist/src/{llm → core/llm}/anthropic.js +0 -0
- /package/dist/src/{llm → core/llm}/factory.d.ts +0 -0
- /package/dist/src/{llm → core/llm}/factory.js +0 -0
- /package/dist/src/{llm → core/llm}/openai-models.d.ts +0 -0
- /package/dist/src/{llm → core/llm}/openai-models.js +0 -0
- /package/dist/src/{llm → core/llm}/openai.d.ts +0 -0
- /package/dist/src/{llm → core/llm}/openai.js +0 -0
- /package/dist/src/{llm → core/llm}/providers.d.ts +0 -0
- /package/dist/src/{llm → core/llm}/providers.js +0 -0
- /package/dist/src/{llm → core/llm}/types.d.ts +0 -0
- /package/dist/src/{llm → core/llm}/types.js +0 -0
- /package/dist/src/{prompts → core/prompts}/system-prompt.d.ts +0 -0
- /package/dist/src/{prompts → core/prompts}/system-prompt.js +0 -0
- /package/dist/src/{runtime → core/runtime}/api-keys.d.ts +0 -0
- /package/dist/src/{runtime → core/runtime}/api-keys.js +0 -0
- /package/dist/src/{runtime → core/runtime}/default-tools.d.ts +0 -0
- /package/dist/src/{runtime → core/runtime}/default-tools.js +0 -0
- /package/dist/src/{runtime → core/runtime}/events.d.ts +0 -0
- /package/dist/src/{runtime → core/runtime}/events.js +0 -0
- /package/dist/src/{runtime → core/runtime}/heartbeat-lucid.d.ts +0 -0
- /package/dist/src/{runtime → core/runtime}/heartbeat-lucid.js +0 -0
- /package/dist/src/{runtime → core/runtime}/heartbeat-scheduler.d.ts +0 -0
- /package/dist/src/{runtime → core/runtime}/heartbeat-scheduler.js +0 -0
- /package/dist/src/{runtime → core/runtime}/heartbeat-store.d.ts +0 -0
- /package/dist/src/{runtime → core/runtime}/heartbeat-store.js +0 -0
- /package/dist/src/{runtime → core/runtime}/heartbeat-views.d.ts +0 -0
- /package/dist/src/{runtime → core/runtime}/heartbeat-views.js +0 -0
- /package/dist/src/{runtime → core/runtime}/heartbeat.d.ts +0 -0
- /package/dist/src/{tools → core/tools}/edit-file.d.ts +0 -0
- /package/dist/src/{tools → core/tools}/edit-file.js +0 -0
- /package/dist/src/{tools → core/tools}/execute-tool.d.ts +0 -0
- /package/dist/src/{tools → core/tools}/execute-tool.js +0 -0
- /package/dist/src/{tools → core/tools}/file-edit-core.d.ts +0 -0
- /package/dist/src/{tools → core/tools}/file-edit-core.js +0 -0
- /package/dist/src/{tools → core/tools}/list-files.d.ts +0 -0
- /package/dist/src/{tools → core/tools}/list-files.js +0 -0
- /package/dist/src/{tools → core/tools}/memory-notes.d.ts +0 -0
- /package/dist/src/{tools → core/tools}/memory-notes.js +0 -0
- /package/dist/src/{tools → core/tools}/read-file.d.ts +0 -0
- /package/dist/src/{tools → core/tools}/read-file.js +0 -0
- /package/dist/src/{tools → core/tools}/registry.d.ts +0 -0
- /package/dist/src/{tools → core/tools}/registry.js +0 -0
- /package/dist/src/{tools → core/tools}/report-state.d.ts +0 -0
- /package/dist/src/{tools → core/tools}/report-state.js +0 -0
- /package/dist/src/{tools → core/tools}/run-shell.d.ts +0 -0
- /package/dist/src/{tools → core/tools}/run-shell.js +0 -0
- /package/dist/src/{tools → core/tools}/search-files.d.ts +0 -0
- /package/dist/src/{tools → core/tools}/search-files.js +0 -0
- /package/dist/src/{tools → core/tools}/update-plan.d.ts +0 -0
- /package/dist/src/{tools → core/tools}/update-plan.js +0 -0
- /package/dist/src/{tools → core/tools}/view-image.d.ts +0 -0
- /package/dist/src/{tools → core/tools}/view-image.js +0 -0
- /package/dist/src/{tools → core/tools}/web-search.d.ts +0 -0
- /package/dist/src/{tools → core/tools}/web-search.js +0 -0
- /package/dist/src/{trace → core/trace}/format.d.ts +0 -0
- /package/dist/src/{trace → core/trace}/format.js +0 -0
- /package/dist/src/{trace → core/trace}/recorder.d.ts +0 -0
- /package/dist/src/{trace → core/trace}/recorder.js +0 -0
- /package/dist/src/{types.d.ts → core/types.d.ts} +0 -0
- /package/dist/src/{types.js → core/types.js} +0 -0
- /package/dist/src/{utils → core/utils}/budget.d.ts +0 -0
- /package/dist/src/{utils → core/utils}/budget.js +0 -0
- /package/dist/src/{utils → core/utils}/errors.d.ts +0 -0
- /package/dist/src/{utils → core/utils}/errors.js +0 -0
- /package/dist/src/{utils → core/utils}/logger.d.ts +0 -0
- /package/dist/src/{utils → core/utils}/logger.js +0 -0
package/README.md
CHANGED
|
@@ -10,6 +10,19 @@ Heddle is designed to make live agent runs more observable, not just easier to l
|
|
|
10
10
|
|
|
11
11
|
If you are interested in the underlying methodology, Heddle's drift telemetry is powered by [CyberLoop on npm](https://www.npmjs.com/package/cyberloop). See the [CyberLoop repository](https://github.com/roackb2/cyberloop) and [paper](https://zenodo.org/records/18138161) for the geometric-control and trajectory-based details.
|
|
12
12
|
|
|
13
|
+
## Agenda
|
|
14
|
+
|
|
15
|
+
- [Chat And CLI Usage](#chat-and-cli-usage)
|
|
16
|
+
- [Control Plane](#control-plane)
|
|
17
|
+
- [Knowledge Persistence](#knowledge-persistence)
|
|
18
|
+
- [Semantic Drift](#semantic-drift)
|
|
19
|
+
- [Heartbeat](#heartbeat)
|
|
20
|
+
- [Programmatic Use](#programmatic-use)
|
|
21
|
+
- [Capability Details](#capability-details)
|
|
22
|
+
- [Supported Providers And Models](#supported-providers-and-models)
|
|
23
|
+
- [Project Config](#project-config)
|
|
24
|
+
- [Design Direction](#design-direction)
|
|
25
|
+
|
|
13
26
|
## How Heddle Helps
|
|
14
27
|
|
|
15
28
|
- daily development work in real coding projects
|
|
@@ -24,6 +37,8 @@ If you are interested in the underlying methodology, Heddle's drift telemetry is
|
|
|
24
37
|
- provider-agnostic model support across OpenAI and Anthropic
|
|
25
38
|
- embeddable `runAgentLoop` API for building non-CLI agent hosts
|
|
26
39
|
- `runAgentHeartbeat` for scheduler-driven autonomous wake cycles without chat by default
|
|
40
|
+
- reorganized core runtime modules under `src/core` for agent, runtime, llm, tools, prompts, trace, and shared utilities
|
|
41
|
+
- native React/Vite control plane served by `heddle daemon` for local browser-based oversight
|
|
27
42
|
- serializable checkpoints for resume, background execution, and hosted workers
|
|
28
43
|
- host-facing heartbeat task/run views plus websocket-friendly status/progress/response adapters
|
|
29
44
|
- provider-backed hosted web search through `web_search`
|
|
@@ -70,7 +85,9 @@ If you are developing inside the Heddle repo itself, `yarn install` also install
|
|
|
70
85
|
|
|
71
86
|
For local development against the full CLI entrypoint, use `yarn cli:dev`. The `chat:dev` scripts intentionally start chat mode directly and do not route subcommands such as `heartbeat`.
|
|
72
87
|
|
|
73
|
-
##
|
|
88
|
+
## Chat And CLI Usage
|
|
89
|
+
|
|
90
|
+
### Quick Start
|
|
74
91
|
|
|
75
92
|
1. Set an API key for a supported provider.
|
|
76
93
|
|
|
@@ -96,34 +113,165 @@ Heddle uses the current directory as the workspace root unless you pass `--cwd`.
|
|
|
96
113
|
|
|
97
114
|
The default workflow is interactive chat, not one-shot prompts. You keep a session open, inspect the repo, switch models, run direct shell commands when needed, and continue earlier sessions later.
|
|
98
115
|
|
|
99
|
-
|
|
116
|
+
### Chat Workflow
|
|
100
117
|
|
|
101
|
-
|
|
118
|
+
Start chat in the current repo:
|
|
102
119
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
- multi-turn chat sessions with saved history under `.heddle/`
|
|
110
|
-
- session management with create, switch, continue, rename, and close flows
|
|
111
|
-
- automatic conversation compaction so longer chats preserve context instead of growing unbounded
|
|
112
|
-
- manual `/compact` to shrink the current session transcript on demand
|
|
113
|
-
- persistent workspace memory notes under `.heddle/memory/`
|
|
114
|
-
- serializable run checkpoints for programmatic hosts and later continuation
|
|
115
|
-
- short working-plan support through `update_plan` for substantial multi-step tasks
|
|
116
|
-
- remembered per-project approvals for repeated commands and edits
|
|
117
|
-
- interrupt and resume support for longer-running coding workflows
|
|
118
|
-
- request-size aware context tracking in chat so the footer reflects model input usage, not only raw history size
|
|
120
|
+
```bash
|
|
121
|
+
heddle
|
|
122
|
+
heddle chat
|
|
123
|
+
heddle --cwd /path/to/project
|
|
124
|
+
heddle chat --model gpt-5.4-mini --max-steps 20
|
|
125
|
+
```
|
|
119
126
|
|
|
120
|
-
|
|
127
|
+
Typical chat use cases:
|
|
121
128
|
|
|
122
|
-
|
|
129
|
+
- ask Heddle to explain architecture, code paths, tests, or build setup
|
|
130
|
+
- iterate on a fix over multiple prompts instead of fitting everything into one request
|
|
131
|
+
- inspect files, search the repo, and edit code inside one persistent session
|
|
132
|
+
- keep a long coding conversation usable through saved sessions, `/continue`, automatic history compaction, and manual `/compact`
|
|
133
|
+
- let the agent create and update a short working plan for a multi-step implementation
|
|
134
|
+
- search official docs or other current external references with provider-backed `web_search`
|
|
135
|
+
- mention important repo files with `@path/to/file` so the agent treats them as first-pass context
|
|
136
|
+
- reference a local screenshot path and have the agent inspect it with `view_image`
|
|
137
|
+
- run direct shell commands from chat with `!<command>`
|
|
138
|
+
- pause and later resume earlier sessions
|
|
123
139
|
|
|
124
|
-
|
|
140
|
+
Useful chat commands:
|
|
125
141
|
|
|
126
|
-
|
|
142
|
+
- `/help`: show local chat commands
|
|
143
|
+
- `/continue`: resume the current session from its last interrupted or prior run
|
|
144
|
+
- `/model`: show the active model
|
|
145
|
+
- `/model list`: show the built-in shortlist
|
|
146
|
+
- `/model set <query>`: open the interactive model picker
|
|
147
|
+
- `/model <name>`: switch models directly
|
|
148
|
+
- `/session list`: list recent saved sessions
|
|
149
|
+
- `/session choose <query>`: choose a recent session interactively
|
|
150
|
+
- `/session new [name]`: create a new session
|
|
151
|
+
- `/session switch <id>`: switch to another session
|
|
152
|
+
- `/session continue <id>`: switch and immediately continue that session
|
|
153
|
+
- `/session rename <name>`: rename the current session
|
|
154
|
+
- `/session close <id>`: remove a saved session
|
|
155
|
+
- `/clear`: clear the current transcript
|
|
156
|
+
- `/compact`: compact older session history immediately
|
|
157
|
+
- `/drift`: show CyberLoop semantic drift detection status
|
|
158
|
+
- `/drift on`: re-enable observe-only CyberLoop kinematics telemetry for chat runs
|
|
159
|
+
- `/drift off`: disable CyberLoop semantic drift detection
|
|
160
|
+
- `!<command>`: run a shell command directly in chat
|
|
161
|
+
|
|
162
|
+
Direct shell in chat:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
!pwd
|
|
166
|
+
!git status
|
|
167
|
+
!yarn test
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Read-oriented commands stay in inspect mode when possible. Workspace-changing or unclassified commands fall back to approval-gated execution.
|
|
171
|
+
|
|
172
|
+
Chat state is stored under `.heddle/`, including saved sessions, traces, approvals, and memory notes. The footer context indicator is an estimate of total request input against the active model's context window, not only the raw chat history length.
|
|
173
|
+
|
|
174
|
+
For local development against the sibling CyberLoop repo, run chat with the middleware module path:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
HEDDLE_CYBERLOOP_ADVANCED_MODULE=/Users/roackb2/Studio/projects/CyberLoop/src/advanced/kinematics-middleware.ts yarn chat:dev:openai
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Drift telemetry is enabled by default for new sessions. For installed usage, install the optional `cyberloop` peer dependency in the same environment as Heddle so it can dynamically import `cyberloop/advanced`.
|
|
181
|
+
|
|
182
|
+
### CLI Commands
|
|
183
|
+
|
|
184
|
+
Supported commands:
|
|
185
|
+
|
|
186
|
+
- `heddle` or `heddle chat`: start interactive chat mode
|
|
187
|
+
- `heddle ask "<goal>"`: run a single prompt and exit
|
|
188
|
+
- `heddle heartbeat start [--every 30m] [--task "<durable task>"]`: create or enable the default heartbeat task and run the foreground scheduler
|
|
189
|
+
- `heddle heartbeat task add --id <id> --task "<durable task>" [--every 15m]`: create or update a scheduled heartbeat task
|
|
190
|
+
- `heddle heartbeat task list`: list local heartbeat tasks
|
|
191
|
+
- `heddle heartbeat task show <id>`: show a task's schedule, last decision, and last run summary
|
|
192
|
+
- `heddle heartbeat task enable <id>` / `heddle heartbeat task disable <id>`: toggle a heartbeat task
|
|
193
|
+
- `heddle heartbeat run --once`: run due heartbeat tasks once
|
|
194
|
+
- `heddle heartbeat run [--poll 60s]`: run the foreground heartbeat scheduler until interrupted; heartbeat runs print scheduler, agent, tool, decision, and checkpoint progress events
|
|
195
|
+
- `heddle heartbeat runs list [--task <id>] [--limit 10]`: list saved heartbeat run records
|
|
196
|
+
- `heddle heartbeat runs show <run-id|latest> [--task <id>]`: show the final agent output for a saved heartbeat run
|
|
197
|
+
- `heddle init`: create a `heddle.config.json` template in the current project
|
|
198
|
+
|
|
199
|
+
Common flags:
|
|
200
|
+
|
|
201
|
+
- `--cwd <path>`: run against another workspace root
|
|
202
|
+
- `--model <name>`: choose the active model
|
|
203
|
+
- `--max-steps <n>`: limit the agent loop length
|
|
204
|
+
|
|
205
|
+
## Control Plane
|
|
206
|
+
|
|
207
|
+
Heddle includes a local browser control plane for workspace oversight when you want a native UI in addition to terminal chat.
|
|
208
|
+
|
|
209
|
+
The current control plane is still early, but it has moved beyond a placeholder dashboard into a workstation-style local UI for inspecting sessions, review evidence, heartbeat tasks, and run history.
|
|
210
|
+
|
|
211
|
+
Current stack:
|
|
212
|
+
|
|
213
|
+
- `src/server`: Express-hosted tRPC server
|
|
214
|
+
- `src/web`: React/Vite web client
|
|
215
|
+
- `src/server/features/control-plane`: control-plane-specific server feature logic
|
|
216
|
+
- pino logs written locally for debugging
|
|
217
|
+
|
|
218
|
+
Start the daemon from a workspace:
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
heddle daemon
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
By default, the daemon binds to `127.0.0.1:8765` and serves the built web app plus the tRPC API. The current browser UI surfaces:
|
|
225
|
+
|
|
226
|
+
- workspace and `.heddle/` state location
|
|
227
|
+
- saved chat sessions with sidebar navigation, conversation view, and review-oriented detail inspection
|
|
228
|
+
- heartbeat task status, scheduling state, selected task detail, and run history
|
|
229
|
+
- recent heartbeat run summaries and usage data
|
|
230
|
+
|
|
231
|
+
You can override host and port:
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
heddle daemon --host 127.0.0.1 --port 8765
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
For local development, run the server and client separately:
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
yarn server:dev
|
|
241
|
+
yarn client:dev
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
`yarn server:dev` starts the tRPC server at `127.0.0.1:8765`. `yarn client:dev` starts the Vite client and proxies `/trpc` to the server.
|
|
245
|
+
|
|
246
|
+
The server writes pino logs to `.heddle/logs/server.log` by default. Override the path with:
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
HEDDLE_SERVER_LOG_FILE=/path/to/server.log yarn server:dev
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
The control plane is still early and not yet a full browser-native chat/operator surface. The next milestones are browser-side `send message` and `continue` actions for sessions, heartbeat task actions, and richer live run updates.
|
|
253
|
+
|
|
254
|
+
## Knowledge Persistence
|
|
255
|
+
|
|
256
|
+
Heddle can maintain durable workspace knowledge under `.heddle/memory/`.
|
|
257
|
+
|
|
258
|
+
The goal is to help Heddle learn from real project work over time instead of rediscovering the same stable facts every session.
|
|
259
|
+
|
|
260
|
+
Typical examples:
|
|
261
|
+
|
|
262
|
+
- architecture notes that future sessions should reuse
|
|
263
|
+
- recurring build, test, or environment quirks
|
|
264
|
+
- important repo conventions and command patterns
|
|
265
|
+
- durable findings from completed implementation work
|
|
266
|
+
|
|
267
|
+
The memory model is intentionally simple:
|
|
268
|
+
|
|
269
|
+
- memory is stored as readable markdown files in the project state directory
|
|
270
|
+
- Heddle can list, read, search, and edit those notes
|
|
271
|
+
- shell tools are still available when flexible retrieval or editing is needed
|
|
272
|
+
- memory is meant for stable, reusable knowledge, not scratch notes or speculative plans
|
|
273
|
+
|
|
274
|
+
This is one of Heddle's more distinctive host-side capabilities: the aim is not just to answer the current prompt, but to let the runtime accumulate project understanding from your operations and become more useful across sessions.
|
|
127
275
|
|
|
128
276
|
## Semantic Drift
|
|
129
277
|
|
|
@@ -257,200 +405,6 @@ const runs = await listHeartbeatRunViews(store, { taskId: 'repo-gardener', limit
|
|
|
257
405
|
|
|
258
406
|
Those views are intentionally smaller than full checkpoints or traces. They expose stable operator-facing fields such as task ID, status, progress, decision, outcome, resumability, usage, and latest summary.
|
|
259
407
|
|
|
260
|
-
## Knowledge Persistence
|
|
261
|
-
|
|
262
|
-
Heddle can maintain durable workspace knowledge under `.heddle/memory/`.
|
|
263
|
-
|
|
264
|
-
The goal is to help Heddle learn from real project work over time instead of rediscovering the same stable facts every session.
|
|
265
|
-
|
|
266
|
-
Typical examples:
|
|
267
|
-
|
|
268
|
-
- architecture notes that future sessions should reuse
|
|
269
|
-
- recurring build, test, or environment quirks
|
|
270
|
-
- important repo conventions and command patterns
|
|
271
|
-
- durable findings from completed implementation work
|
|
272
|
-
|
|
273
|
-
The memory model is intentionally simple:
|
|
274
|
-
|
|
275
|
-
- memory is stored as readable markdown files in the project state directory
|
|
276
|
-
- Heddle can list, read, search, and edit those notes
|
|
277
|
-
- shell tools are still available when flexible retrieval or editing is needed
|
|
278
|
-
- memory is meant for stable, reusable knowledge, not scratch notes or speculative plans
|
|
279
|
-
|
|
280
|
-
This is one of Heddle's more distinctive host-side capabilities: the aim is not just to answer the current prompt, but to let the runtime accumulate project understanding from your operations and become more useful across sessions.
|
|
281
|
-
|
|
282
|
-
## What Heddle Does
|
|
283
|
-
|
|
284
|
-
Heddle runs an agent loop against your workspace:
|
|
285
|
-
|
|
286
|
-
```text
|
|
287
|
-
goal
|
|
288
|
-
-> send transcript + tool definitions to the model
|
|
289
|
-
-> model answers or requests tool calls
|
|
290
|
-
-> execute tools in the workspace
|
|
291
|
-
-> append results to the transcript
|
|
292
|
-
-> continue until done / max steps / error
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
Current focus:
|
|
296
|
-
|
|
297
|
-
- chat-first coding and repository workflows from the terminal
|
|
298
|
-
- minimal runtime behavior instead of a large framework surface
|
|
299
|
-
- traceability and operator control over hidden orchestration
|
|
300
|
-
|
|
301
|
-
## Chat Workflow
|
|
302
|
-
|
|
303
|
-
Start chat in the current repo:
|
|
304
|
-
|
|
305
|
-
```bash
|
|
306
|
-
heddle
|
|
307
|
-
heddle chat
|
|
308
|
-
heddle --cwd /path/to/project
|
|
309
|
-
heddle chat --model gpt-5.4-mini --max-steps 20
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
Typical chat use cases:
|
|
313
|
-
|
|
314
|
-
- ask Heddle to explain architecture, code paths, tests, or build setup
|
|
315
|
-
- iterate on a fix over multiple prompts instead of fitting everything into one request
|
|
316
|
-
- inspect files, search the repo, and edit code inside one persistent session
|
|
317
|
-
- keep a long coding conversation usable through saved sessions, `/continue`, automatic history compaction, and manual `/compact`
|
|
318
|
-
- let the agent create and update a short working plan for a multi-step implementation
|
|
319
|
-
- search official docs or other current external references with provider-backed `web_search`
|
|
320
|
-
- mention important repo files with `@path/to/file` so the agent treats them as first-pass context
|
|
321
|
-
- reference a local screenshot path and have the agent inspect it with `view_image`
|
|
322
|
-
- run direct shell commands from chat with `!<command>`
|
|
323
|
-
- pause and later resume earlier sessions
|
|
324
|
-
|
|
325
|
-
Useful chat commands:
|
|
326
|
-
|
|
327
|
-
- `/help`: show local chat commands
|
|
328
|
-
- `/continue`: resume the current session from its last interrupted or prior run
|
|
329
|
-
- `/model`: show the active model
|
|
330
|
-
- `/model list`: show the built-in shortlist
|
|
331
|
-
- `/model set <query>`: open the interactive model picker
|
|
332
|
-
- `/model <name>`: switch models directly
|
|
333
|
-
- `/session list`: list recent saved sessions
|
|
334
|
-
- `/session choose <query>`: choose a recent session interactively
|
|
335
|
-
- `/session new [name]`: create a new session
|
|
336
|
-
- `/session switch <id>`: switch to another session
|
|
337
|
-
- `/session continue <id>`: switch and immediately continue that session
|
|
338
|
-
- `/session rename <name>`: rename the current session
|
|
339
|
-
- `/session close <id>`: remove a saved session
|
|
340
|
-
- `/clear`: clear the current transcript
|
|
341
|
-
- `/compact`: compact older session history immediately
|
|
342
|
-
- `/drift`: show CyberLoop semantic drift detection status
|
|
343
|
-
- `/drift on`: re-enable observe-only CyberLoop kinematics telemetry for chat runs
|
|
344
|
-
- `/drift off`: disable CyberLoop semantic drift detection
|
|
345
|
-
- `!<command>`: run a shell command directly in chat
|
|
346
|
-
|
|
347
|
-
Direct shell in chat:
|
|
348
|
-
|
|
349
|
-
```bash
|
|
350
|
-
!pwd
|
|
351
|
-
!git status
|
|
352
|
-
!yarn test
|
|
353
|
-
```
|
|
354
|
-
|
|
355
|
-
Read-oriented commands stay in inspect mode when possible. Workspace-changing or unclassified commands fall back to approval-gated execution.
|
|
356
|
-
|
|
357
|
-
Chat state is stored under `.heddle/`, including saved sessions, traces, approvals, and memory notes. The footer context indicator is an estimate of total request input against the active model's context window, not only the raw chat history length.
|
|
358
|
-
|
|
359
|
-
For local development against the sibling CyberLoop repo, run chat with the middleware module path:
|
|
360
|
-
|
|
361
|
-
```bash
|
|
362
|
-
HEDDLE_CYBERLOOP_ADVANCED_MODULE=/Users/roackb2/Studio/projects/CyberLoop/src/advanced/kinematics-middleware.ts yarn chat:dev:openai
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
Drift telemetry is enabled by default for new sessions. For installed usage, install the optional `cyberloop` peer dependency in the same environment as Heddle so it can dynamically import `cyberloop/advanced`.
|
|
366
|
-
|
|
367
|
-
## CLI Usage
|
|
368
|
-
|
|
369
|
-
Supported commands:
|
|
370
|
-
|
|
371
|
-
- `heddle` or `heddle chat`: start interactive chat mode
|
|
372
|
-
- `heddle ask "<goal>"`: run a single prompt and exit
|
|
373
|
-
- `heddle heartbeat start [--every 30m] [--task "<durable task>"]`: create or enable the default heartbeat task and run the foreground scheduler
|
|
374
|
-
- `heddle heartbeat task add --id <id> --task "<durable task>" [--every 15m]`: create or update a scheduled heartbeat task
|
|
375
|
-
- `heddle heartbeat task list`: list local heartbeat tasks
|
|
376
|
-
- `heddle heartbeat task show <id>`: show a task's schedule, last decision, and last run summary
|
|
377
|
-
- `heddle heartbeat task enable <id>` / `heddle heartbeat task disable <id>`: toggle a heartbeat task
|
|
378
|
-
- `heddle heartbeat run --once`: run due heartbeat tasks once
|
|
379
|
-
- `heddle heartbeat run [--poll 60s]`: run the foreground heartbeat scheduler until interrupted; heartbeat runs print scheduler, agent, tool, decision, and checkpoint progress events
|
|
380
|
-
- `heddle heartbeat runs list [--task <id>] [--limit 10]`: list saved heartbeat run records
|
|
381
|
-
- `heddle heartbeat runs show <run-id|latest> [--task <id>]`: show the final agent output for a saved heartbeat run
|
|
382
|
-
- `heddle init`: create a `heddle.config.json` template in the current project
|
|
383
|
-
|
|
384
|
-
Common flags:
|
|
385
|
-
|
|
386
|
-
- `--cwd <path>`: run against another workspace root
|
|
387
|
-
- `--model <name>`: choose the active model
|
|
388
|
-
- `--max-steps <n>`: limit the agent loop length
|
|
389
|
-
|
|
390
|
-
## Supported Providers And Models
|
|
391
|
-
|
|
392
|
-
Heddle currently has working adapters for:
|
|
393
|
-
|
|
394
|
-
- OpenAI
|
|
395
|
-
- Anthropic
|
|
396
|
-
|
|
397
|
-
Environment variables:
|
|
398
|
-
|
|
399
|
-
- `OPENAI_API_KEY` for OpenAI models
|
|
400
|
-
- `ANTHROPIC_API_KEY` for Anthropic models
|
|
401
|
-
- dev fallback env vars are also accepted: `PERSONAL_OPENAI_API_KEY` and `PERSONAL_ANTHROPIC_API_KEY`
|
|
402
|
-
|
|
403
|
-
Default models:
|
|
404
|
-
|
|
405
|
-
- OpenAI: `gpt-5.1-codex`
|
|
406
|
-
- Anthropic: `claude-sonnet-4-6`
|
|
407
|
-
|
|
408
|
-
Built-in model shortlist exposed by the CLI UI:
|
|
409
|
-
|
|
410
|
-
- OpenAI: `gpt-5.4`, `gpt-5.4-pro`, `gpt-5.4-mini`, `gpt-5.4-nano`
|
|
411
|
-
- OpenAI: `gpt-5`, `gpt-5-pro`, `gpt-5-mini`, `gpt-5-nano`
|
|
412
|
-
- OpenAI: `gpt-5.2`, `gpt-5.2-pro`, `gpt-5.1`
|
|
413
|
-
- OpenAI: `gpt-4.1`, `gpt-4.1-mini`, `gpt-4.1-nano`
|
|
414
|
-
- OpenAI: `o3-pro`, `o3`, `o3-mini`, `o4-mini`
|
|
415
|
-
- OpenAI coding models: `gpt-5.1-codex`, `gpt-5.1-codex-max`, `gpt-5.1-codex-mini`
|
|
416
|
-
- Anthropic: `claude-opus-4-6`, `claude-sonnet-4-6`, `claude-haiku-4-5`
|
|
417
|
-
- Anthropic: `claude-opus-4-1`, `claude-opus-4-0`, `claude-sonnet-4-0`
|
|
418
|
-
- Anthropic: `claude-3-7-sonnet-latest`
|
|
419
|
-
- Anthropic: `claude-3-5-sonnet-latest`, `claude-3-5-haiku-latest`
|
|
420
|
-
|
|
421
|
-
Notes:
|
|
422
|
-
|
|
423
|
-
- model selection is inferred from the model name prefix
|
|
424
|
-
- Gemini model names are recognized by provider inference, but a Google adapter is not wired yet
|
|
425
|
-
- you can pass another model name with `--model`, but it only works if the corresponding provider adapter supports it
|
|
426
|
-
|
|
427
|
-
## Project Config
|
|
428
|
-
|
|
429
|
-
You can store project defaults in `heddle.config.json`:
|
|
430
|
-
|
|
431
|
-
```json
|
|
432
|
-
{
|
|
433
|
-
"model": "gpt-5.1-codex",
|
|
434
|
-
"maxSteps": 40,
|
|
435
|
-
"stateDir": ".heddle",
|
|
436
|
-
"directShellApproval": "never",
|
|
437
|
-
"searchIgnoreDirs": [".git", "dist", "node_modules", ".heddle"],
|
|
438
|
-
"agentContextPaths": ["AGENTS.md"]
|
|
439
|
-
}
|
|
440
|
-
```
|
|
441
|
-
|
|
442
|
-
Precedence order:
|
|
443
|
-
|
|
444
|
-
- CLI flags override `heddle.config.json`
|
|
445
|
-
- `heddle.config.json` overrides environment-driven defaults
|
|
446
|
-
|
|
447
|
-
Field notes:
|
|
448
|
-
|
|
449
|
-
- `stateDir`: where traces, logs, approvals, and chat state are stored
|
|
450
|
-
- `directShellApproval`: whether explicit `!command` input in chat still asks for approval
|
|
451
|
-
- `searchIgnoreDirs`: directories excluded from `search_files`
|
|
452
|
-
- `agentContextPaths`: project instruction files injected into the system prompt
|
|
453
|
-
|
|
454
408
|
## Programmatic Use
|
|
455
409
|
|
|
456
410
|
The npm package exports a programmatic execution loop for building other agent hosts on top of Heddle.
|
|
@@ -623,6 +577,119 @@ yarn example:cyberloop-observer
|
|
|
623
577
|
|
|
624
578
|
The public API lives in [src/index.ts](/Users/roackb2/Studio/projects/ProjectHeddle/heddle/src/index.ts).
|
|
625
579
|
|
|
580
|
+
## Capability Details
|
|
581
|
+
|
|
582
|
+
Heddle currently supports:
|
|
583
|
+
|
|
584
|
+
- repository inspection with `list_files`, `read_file`, and `search_files`
|
|
585
|
+
- code and doc changes with `edit_file`
|
|
586
|
+
- provider-backed hosted web search through `web_search`
|
|
587
|
+
- local screenshot and image inspection through `view_image`
|
|
588
|
+
- native browser control plane through `heddle daemon`
|
|
589
|
+
- inline `@file` mentions for file-priority context without pasting file contents into the prompt
|
|
590
|
+
- shell execution with inspect vs approval-gated mutate behavior
|
|
591
|
+
- multi-turn chat sessions with saved history under `.heddle/`
|
|
592
|
+
- session management with create, switch, continue, rename, and close flows
|
|
593
|
+
- automatic conversation compaction so longer chats preserve context instead of growing unbounded
|
|
594
|
+
- manual `/compact` to shrink the current session transcript on demand
|
|
595
|
+
- persistent workspace memory notes under `.heddle/memory/`
|
|
596
|
+
- serializable run checkpoints for programmatic hosts and later continuation
|
|
597
|
+
- short working-plan support through `update_plan` for substantial multi-step tasks
|
|
598
|
+
- remembered per-project approvals for repeated commands and edits
|
|
599
|
+
- interrupt and resume support for longer-running coding workflows
|
|
600
|
+
- request-size aware context tracking in chat so the footer reflects model input usage, not only raw history size
|
|
601
|
+
|
|
602
|
+
The image workflow is intentionally simple for now: users can reference a local image path in chat, and the agent can decide whether to inspect it with `view_image`. Heddle does not require a full multimodal attachment model for this first version.
|
|
603
|
+
|
|
604
|
+
The file-mention workflow is also intentionally lightweight: `@path/to/file` tells Heddle that the file is important context and should be inspected before answering, but it does not automatically inline the file contents into the prompt.
|
|
605
|
+
|
|
606
|
+
The planning workflow is also intentionally lightweight: Heddle does not force a heavyweight planner or a separate "plan mode," but it can automatically record and update a short plan when a task is substantial enough to benefit from visible progress tracking.
|
|
607
|
+
|
|
608
|
+
The web-search workflow is provider-backed rather than crawler-backed: OpenAI models use OpenAI-hosted web search, and Anthropic models use Anthropic-hosted web search when available through the selected model/tool path.
|
|
609
|
+
|
|
610
|
+
## What Heddle Does
|
|
611
|
+
|
|
612
|
+
Heddle runs an agent loop against your workspace:
|
|
613
|
+
|
|
614
|
+
```text
|
|
615
|
+
goal
|
|
616
|
+
-> send transcript + tool definitions to the model
|
|
617
|
+
-> model answers or requests tool calls
|
|
618
|
+
-> execute tools in the workspace
|
|
619
|
+
-> append results to the transcript
|
|
620
|
+
-> continue until done / max steps / error
|
|
621
|
+
```
|
|
622
|
+
|
|
623
|
+
Current focus:
|
|
624
|
+
|
|
625
|
+
- chat-first coding and repository workflows from the terminal
|
|
626
|
+
- minimal runtime behavior instead of a large framework surface
|
|
627
|
+
- traceability and operator control over hidden orchestration
|
|
628
|
+
|
|
629
|
+
## Supported Providers And Models
|
|
630
|
+
|
|
631
|
+
Heddle currently has working adapters for:
|
|
632
|
+
|
|
633
|
+
- OpenAI
|
|
634
|
+
- Anthropic
|
|
635
|
+
|
|
636
|
+
Environment variables:
|
|
637
|
+
|
|
638
|
+
- `OPENAI_API_KEY` for OpenAI models
|
|
639
|
+
- `ANTHROPIC_API_KEY` for Anthropic models
|
|
640
|
+
- dev fallback env vars are also accepted: `PERSONAL_OPENAI_API_KEY` and `PERSONAL_ANTHROPIC_API_KEY`
|
|
641
|
+
|
|
642
|
+
Default models:
|
|
643
|
+
|
|
644
|
+
- OpenAI: `gpt-5.1-codex`
|
|
645
|
+
- Anthropic: `claude-sonnet-4-6`
|
|
646
|
+
|
|
647
|
+
Built-in model shortlist exposed by the CLI UI:
|
|
648
|
+
|
|
649
|
+
- OpenAI: `gpt-5.4`, `gpt-5.4-pro`, `gpt-5.4-mini`, `gpt-5.4-nano`
|
|
650
|
+
- OpenAI: `gpt-5`, `gpt-5-pro`, `gpt-5-mini`, `gpt-5-nano`
|
|
651
|
+
- OpenAI: `gpt-5.2`, `gpt-5.2-pro`, `gpt-5.1`
|
|
652
|
+
- OpenAI: `gpt-4.1`, `gpt-4.1-mini`, `gpt-4.1-nano`
|
|
653
|
+
- OpenAI: `o3-pro`, `o3`, `o3-mini`, `o4-mini`
|
|
654
|
+
- OpenAI coding models: `gpt-5.1-codex`, `gpt-5.1-codex-max`, `gpt-5.1-codex-mini`
|
|
655
|
+
- Anthropic: `claude-opus-4-6`, `claude-sonnet-4-6`, `claude-haiku-4-5`
|
|
656
|
+
- Anthropic: `claude-opus-4-1`, `claude-opus-4-0`, `claude-sonnet-4-0`
|
|
657
|
+
- Anthropic: `claude-3-7-sonnet-latest`
|
|
658
|
+
- Anthropic: `claude-3-5-sonnet-latest`, `claude-3-5-haiku-latest`
|
|
659
|
+
|
|
660
|
+
Notes:
|
|
661
|
+
|
|
662
|
+
- model selection is inferred from the model name prefix
|
|
663
|
+
- Gemini model names are recognized by provider inference, but a Google adapter is not wired yet
|
|
664
|
+
- you can pass another model name with `--model`, but it only works if the corresponding provider adapter supports it
|
|
665
|
+
|
|
666
|
+
## Project Config
|
|
667
|
+
|
|
668
|
+
You can store project defaults in `heddle.config.json`:
|
|
669
|
+
|
|
670
|
+
```json
|
|
671
|
+
{
|
|
672
|
+
"model": "gpt-5.1-codex",
|
|
673
|
+
"maxSteps": 100,
|
|
674
|
+
"stateDir": ".heddle",
|
|
675
|
+
"directShellApproval": "never",
|
|
676
|
+
"searchIgnoreDirs": [".git", "dist", "node_modules", ".heddle"],
|
|
677
|
+
"agentContextPaths": ["AGENTS.md"]
|
|
678
|
+
}
|
|
679
|
+
```
|
|
680
|
+
|
|
681
|
+
Precedence order:
|
|
682
|
+
|
|
683
|
+
- CLI flags override `heddle.config.json`
|
|
684
|
+
- `heddle.config.json` overrides environment-driven defaults
|
|
685
|
+
|
|
686
|
+
Field notes:
|
|
687
|
+
|
|
688
|
+
- `stateDir`: where traces, logs, approvals, and chat state are stored
|
|
689
|
+
- `directShellApproval`: whether explicit `!command` input in chat still asks for approval
|
|
690
|
+
- `searchIgnoreDirs`: directories excluded from `search_files`
|
|
691
|
+
- `agentContextPaths`: project instruction files injected into the system prompt
|
|
692
|
+
|
|
626
693
|
## Design Direction
|
|
627
694
|
|
|
628
695
|
Heddle is currently optimized for coding and terminal workflows, but the long-term goal is broader: an open, provider-agnostic runtime for tool-using agents in real working environments.
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
// due tasks once, and persists task/checkpoint/run state for the next wake.
|
|
13
13
|
// ---------------------------------------------------------------------------
|
|
14
14
|
import { join } from 'node:path';
|
|
15
|
-
import { inferProviderFromModel } from '../src/llm/providers.js';
|
|
16
|
-
import { resolveProviderApiKey } from '../src/runtime/api-keys.js';
|
|
17
|
-
import { createFileHeartbeatTaskStore, runDueHeartbeatTasks, } from '../src/runtime/heartbeat-scheduler.js';
|
|
15
|
+
import { inferProviderFromModel } from '../src/core/llm/providers.js';
|
|
16
|
+
import { resolveProviderApiKey } from '../src/core/runtime/api-keys.js';
|
|
17
|
+
import { createFileHeartbeatTaskStore, runDueHeartbeatTasks, } from '../src/core/runtime/heartbeat-scheduler.js';
|
|
18
18
|
const DEFAULT_EXAMPLE_MODEL = 'gpt-5.1-codex-mini';
|
|
19
19
|
const STORE_DIR = join(process.cwd(), '.heddle', 'examples', 'heartbeat-scheduler');
|
|
20
20
|
const TASK_ID = 'demo-maintenance';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat-scheduler.js","sourceRoot":"","sources":["../../examples/heartbeat-scheduler.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,+BAA+B;AAC/B,EAAE;AACF,SAAS;AACT,2DAA2D;AAC3D,EAAE;AACF,YAAY;AACZ,+GAA+G;AAC/G,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,4EAA4E;AAC5E,8EAA8E;AAE9E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"heartbeat-scheduler.js","sourceRoot":"","sources":["../../examples/heartbeat-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
// within a small step budget, then persists the next checkpoint.
|
|
13
13
|
// ---------------------------------------------------------------------------
|
|
14
14
|
import { join } from 'node:path';
|
|
15
|
-
import { inferProviderFromModel } from '../src/llm/providers.js';
|
|
16
|
-
import { resolveProviderApiKey } from '../src/runtime/api-keys.js';
|
|
17
|
-
import { createFileHeartbeatCheckpointStore, runStoredHeartbeat } from '../src/runtime/heartbeat-store.js';
|
|
15
|
+
import { inferProviderFromModel } from '../src/core/llm/providers.js';
|
|
16
|
+
import { resolveProviderApiKey } from '../src/core/runtime/api-keys.js';
|
|
17
|
+
import { createFileHeartbeatCheckpointStore, runStoredHeartbeat } from '../src/core/runtime/heartbeat-store.js';
|
|
18
18
|
const DEFAULT_EXAMPLE_MODEL = 'gpt-5.1-codex-mini';
|
|
19
19
|
const CHECKPOINT_PATH = join(process.cwd(), '.heddle', 'examples', 'heartbeat-demo-checkpoint.json');
|
|
20
20
|
async function main() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../examples/heartbeat.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,qBAAqB;AACrB,EAAE;AACF,SAAS;AACT,iDAAiD;AACjD,EAAE;AACF,YAAY;AACZ,qGAAqG;AACrG,EAAE;AACF,+EAA+E;AAC/E,iFAAiF;AACjF,iEAAiE;AACjE,8EAA8E;AAE9E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../examples/heartbeat.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,qBAAqB;AACrB,EAAE;AACF,SAAS;AACT,iDAAiD;AACjD,EAAE;AACF,YAAY;AACZ,qGAAqG;AACrG,EAAE;AACF,+EAA+E;AAC/E,iFAAiF;AACjF,iEAAiE;AACjE,8EAA8E;AAE9E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,kCAAkC,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAEhH,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AACnD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,gCAAgC,CAAC,CAAC;AAErG,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,qBAAqB,CAAC;IACpG,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,uBAAuB,QAAQ,IAAI;YACnC,0GAA0G,CAC3G,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,kCAAkC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;QACtC,KAAK;QACL,IAAI,EACF,iMAAiM;QACnM,KAAK;QACL,MAAM;QACN,KAAK,EAAE,EAAE;QACT,mBAAmB,EAAE,KAAK;QAC1B,aAAa,EAAE,OAAO,CAAC,GAAG,EAAE;QAC5B,OAAO,CAAC,KAAK;YACX,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,mCAAmC,KAAK,CAAC,KAAK,aAAa,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3F,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,CAAC,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1F,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,sCAAsC,KAAK,CAAC,OAAO,UAAU,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACvG,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,WAAW,IAAI,MAAM,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,cAAc,eAAe,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-events.js","sourceRoot":"","sources":["../../examples/host-events.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAA4C,MAAM,iBAAiB,CAAC;AAG5G,8EAA8E;AAC9E,mEAAmE;AACnE,8EAA8E;AAC9E,MAAM,aAAa,GAAG,CAAC,QAA6C,EAAc,EAAE;IAClF,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,OAAO;QACL,IAAI,EAAE;YACJ,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,UAAU;YACjB,YAAY,EAAE;gBACZ,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,IAAI;gBACpB,kBAAkB,EAAE,KAAK;gBACzB,iBAAiB,EAAE,IAAI;aACxB;SACF;QACD,KAAK,CAAC,IAAI
|
|
1
|
+
{"version":3,"file":"host-events.js","sourceRoot":"","sources":["../../examples/host-events.ts"],"names":[],"mappings":"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"}
|