phaibel 4.0.7
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 +245 -0
- package/dist/agentary.txt +82 -0
- package/dist/client/index.d.ts +135 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +260 -0
- package/dist/client/index.js.map +1 -0
- package/dist/commands/cal.d.ts +31 -0
- package/dist/commands/cal.d.ts.map +1 -0
- package/dist/commands/cal.js +281 -0
- package/dist/commands/cal.js.map +1 -0
- package/dist/commands/chat.d.ts +3 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +762 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/config.d.ts +4 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +184 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/cron.d.ts +4 -0
- package/dist/commands/cron.d.ts.map +1 -0
- package/dist/commands/cron.js +165 -0
- package/dist/commands/cron.js.map +1 -0
- package/dist/commands/entity-type.d.ts +3 -0
- package/dist/commands/entity-type.d.ts.map +1 -0
- package/dist/commands/entity-type.js +279 -0
- package/dist/commands/entity-type.js.map +1 -0
- package/dist/commands/entity.d.ts +3 -0
- package/dist/commands/entity.d.ts.map +1 -0
- package/dist/commands/entity.js +262 -0
- package/dist/commands/entity.js.map +1 -0
- package/dist/commands/event.d.ts +4 -0
- package/dist/commands/event.d.ts.map +1 -0
- package/dist/commands/event.js +515 -0
- package/dist/commands/event.js.map +1 -0
- package/dist/commands/feral.d.ts +3 -0
- package/dist/commands/feral.d.ts.map +1 -0
- package/dist/commands/feral.js +272 -0
- package/dist/commands/feral.js.map +1 -0
- package/dist/commands/goal.d.ts +4 -0
- package/dist/commands/goal.d.ts.map +1 -0
- package/dist/commands/goal.js +14 -0
- package/dist/commands/goal.js.map +1 -0
- package/dist/commands/inbox.d.ts +13 -0
- package/dist/commands/inbox.d.ts.map +1 -0
- package/dist/commands/inbox.js +210 -0
- package/dist/commands/inbox.js.map +1 -0
- package/dist/commands/init.d.ts +4 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +154 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/interview.d.ts +14 -0
- package/dist/commands/interview.d.ts.map +1 -0
- package/dist/commands/interview.js +343 -0
- package/dist/commands/interview.js.map +1 -0
- package/dist/commands/list.d.ts +11 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +168 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/note.d.ts +4 -0
- package/dist/commands/note.d.ts.map +1 -0
- package/dist/commands/note.js +548 -0
- package/dist/commands/note.js.map +1 -0
- package/dist/commands/pamp.d.ts +4 -0
- package/dist/commands/pamp.d.ts.map +1 -0
- package/dist/commands/pamp.js +323 -0
- package/dist/commands/pamp.js.map +1 -0
- package/dist/commands/person.d.ts +4 -0
- package/dist/commands/person.d.ts.map +1 -0
- package/dist/commands/person.js +185 -0
- package/dist/commands/person.js.map +1 -0
- package/dist/commands/project.d.ts +4 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +70 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/recurrence.d.ts +17 -0
- package/dist/commands/recurrence.d.ts.map +1 -0
- package/dist/commands/recurrence.js +496 -0
- package/dist/commands/recurrence.js.map +1 -0
- package/dist/commands/remember.d.ts +4 -0
- package/dist/commands/remember.d.ts.map +1 -0
- package/dist/commands/remember.js +70 -0
- package/dist/commands/remember.js.map +1 -0
- package/dist/commands/research.d.ts +4 -0
- package/dist/commands/research.d.ts.map +1 -0
- package/dist/commands/research.js +14 -0
- package/dist/commands/research.js.map +1 -0
- package/dist/commands/service.d.ts +14 -0
- package/dist/commands/service.d.ts.map +1 -0
- package/dist/commands/service.js +313 -0
- package/dist/commands/service.js.map +1 -0
- package/dist/commands/setup.d.ts +4 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +42 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/shell.d.ts +3 -0
- package/dist/commands/shell.d.ts.map +1 -0
- package/dist/commands/shell.js +346 -0
- package/dist/commands/shell.js.map +1 -0
- package/dist/commands/skill.d.ts +4 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +84 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/sync.d.ts +4 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +68 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/time.d.ts +3 -0
- package/dist/commands/time.d.ts.map +1 -0
- package/dist/commands/time.js +12 -0
- package/dist/commands/time.js.map +1 -0
- package/dist/commands/today.d.ts +4 -0
- package/dist/commands/today.d.ts.map +1 -0
- package/dist/commands/today.js +112 -0
- package/dist/commands/today.js.map +1 -0
- package/dist/commands/todo.d.ts +4 -0
- package/dist/commands/todo.d.ts.map +1 -0
- package/dist/commands/todo.js +678 -0
- package/dist/commands/todo.js.map +1 -0
- package/dist/commands/todont.d.ts +19 -0
- package/dist/commands/todont.d.ts.map +1 -0
- package/dist/commands/todont.js +209 -0
- package/dist/commands/todont.js.map +1 -0
- package/dist/commands/week.d.ts +4 -0
- package/dist/commands/week.d.ts.map +1 -0
- package/dist/commands/week.js +267 -0
- package/dist/commands/week.js.map +1 -0
- package/dist/config.d.ts +16 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +141 -0
- package/dist/config.js.map +1 -0
- package/dist/context/mentions.d.ts +21 -0
- package/dist/context/mentions.d.ts.map +1 -0
- package/dist/context/mentions.js +146 -0
- package/dist/context/mentions.js.map +1 -0
- package/dist/context/reader.d.ts +54 -0
- package/dist/context/reader.d.ts.map +1 -0
- package/dist/context/reader.js +133 -0
- package/dist/context/reader.js.map +1 -0
- package/dist/dobbai.txt +55 -0
- package/dist/dobbi.txt +55 -0
- package/dist/dobbie-bundle.cjs +73313 -0
- package/dist/dobbie.txt +55 -0
- package/dist/entities/embedding-index.d.ts +26 -0
- package/dist/entities/embedding-index.d.ts.map +1 -0
- package/dist/entities/embedding-index.js +200 -0
- package/dist/entities/embedding-index.js.map +1 -0
- package/dist/entities/entity-index.d.ts +74 -0
- package/dist/entities/entity-index.d.ts.map +1 -0
- package/dist/entities/entity-index.js +369 -0
- package/dist/entities/entity-index.js.map +1 -0
- package/dist/entities/entity-summary.d.ts +6 -0
- package/dist/entities/entity-summary.d.ts.map +1 -0
- package/dist/entities/entity-summary.js +36 -0
- package/dist/entities/entity-summary.js.map +1 -0
- package/dist/entities/entity-type-config.d.ts +83 -0
- package/dist/entities/entity-type-config.d.ts.map +1 -0
- package/dist/entities/entity-type-config.js +134 -0
- package/dist/entities/entity-type-config.js.map +1 -0
- package/dist/entities/entity-types-defaults.d.ts +5 -0
- package/dist/entities/entity-types-defaults.d.ts.map +1 -0
- package/dist/entities/entity-types-defaults.js +59 -0
- package/dist/entities/entity-types-defaults.js.map +1 -0
- package/dist/entities/entity-validator.d.ts +21 -0
- package/dist/entities/entity-validator.d.ts.map +1 -0
- package/dist/entities/entity-validator.js +102 -0
- package/dist/entities/entity-validator.js.map +1 -0
- package/dist/entities/entity.d.ts +180 -0
- package/dist/entities/entity.d.ts.map +1 -0
- package/dist/entities/entity.js +357 -0
- package/dist/entities/entity.js.map +1 -0
- package/dist/entities/spawner.d.ts +67 -0
- package/dist/entities/spawner.d.ts.map +1 -0
- package/dist/entities/spawner.js +294 -0
- package/dist/entities/spawner.js.map +1 -0
- package/dist/feral/agent/agent-brain.d.ts +22 -0
- package/dist/feral/agent/agent-brain.d.ts.map +1 -0
- package/dist/feral/agent/agent-brain.js +5 -0
- package/dist/feral/agent/agent-brain.js.map +1 -0
- package/dist/feral/agent/agent.d.ts +27 -0
- package/dist/feral/agent/agent.d.ts.map +1 -0
- package/dist/feral/agent/agent.js +12 -0
- package/dist/feral/agent/agent.js.map +1 -0
- package/dist/feral/agent/chatgpt-brain.d.ts +14 -0
- package/dist/feral/agent/chatgpt-brain.d.ts.map +1 -0
- package/dist/feral/agent/chatgpt-brain.js +73 -0
- package/dist/feral/agent/chatgpt-brain.js.map +1 -0
- package/dist/feral/agent/index.d.ts +10 -0
- package/dist/feral/agent/index.d.ts.map +1 -0
- package/dist/feral/agent/index.js +13 -0
- package/dist/feral/agent/index.js.map +1 -0
- package/dist/feral/agent/model-schema.d.ts +37 -0
- package/dist/feral/agent/model-schema.d.ts.map +1 -0
- package/dist/feral/agent/model-schema.js +43 -0
- package/dist/feral/agent/model-schema.js.map +1 -0
- package/dist/feral/agent/process-agent.d.ts +20 -0
- package/dist/feral/agent/process-agent.d.ts.map +1 -0
- package/dist/feral/agent/process-agent.js +81 -0
- package/dist/feral/agent/process-agent.js.map +1 -0
- package/dist/feral/agent/protoflow-agent.d.ts +20 -0
- package/dist/feral/agent/protoflow-agent.d.ts.map +1 -0
- package/dist/feral/agent/protoflow-agent.js +99 -0
- package/dist/feral/agent/protoflow-agent.js.map +1 -0
- package/dist/feral/agent/render-prompt.d.ts +12 -0
- package/dist/feral/agent/render-prompt.d.ts.map +1 -0
- package/dist/feral/agent/render-prompt.js +26 -0
- package/dist/feral/agent/render-prompt.js.map +1 -0
- package/dist/feral/bootstrap.d.ts +31 -0
- package/dist/feral/bootstrap.d.ts.map +1 -0
- package/dist/feral/bootstrap.js +241 -0
- package/dist/feral/bootstrap.js.map +1 -0
- package/dist/feral/catalog/agent-catalog-source.d.ts +9 -0
- package/dist/feral/catalog/agent-catalog-source.d.ts.map +1 -0
- package/dist/feral/catalog/agent-catalog-source.js +115 -0
- package/dist/feral/catalog/agent-catalog-source.js.map +1 -0
- package/dist/feral/catalog/built-in-catalog-source.d.ts +14 -0
- package/dist/feral/catalog/built-in-catalog-source.d.ts.map +1 -0
- package/dist/feral/catalog/built-in-catalog-source.js +25 -0
- package/dist/feral/catalog/built-in-catalog-source.js.map +1 -0
- package/dist/feral/catalog/catalog-node.d.ts +22 -0
- package/dist/feral/catalog/catalog-node.d.ts.map +1 -0
- package/dist/feral/catalog/catalog-node.js +14 -0
- package/dist/feral/catalog/catalog-node.js.map +1 -0
- package/dist/feral/catalog/catalog.d.ts +17 -0
- package/dist/feral/catalog/catalog.d.ts.map +1 -0
- package/dist/feral/catalog/catalog.js +27 -0
- package/dist/feral/catalog/catalog.js.map +1 -0
- package/dist/feral/catalog/entity-catalog-source.d.ts +13 -0
- package/dist/feral/catalog/entity-catalog-source.d.ts.map +1 -0
- package/dist/feral/catalog/entity-catalog-source.js +327 -0
- package/dist/feral/catalog/entity-catalog-source.js.map +1 -0
- package/dist/feral/catalog/feral-catalog-config.d.ts +26 -0
- package/dist/feral/catalog/feral-catalog-config.d.ts.map +1 -0
- package/dist/feral/catalog/feral-catalog-config.js +32 -0
- package/dist/feral/catalog/feral-catalog-config.js.map +1 -0
- package/dist/feral/catalog/introspect-catalog-source.d.ts +5 -0
- package/dist/feral/catalog/introspect-catalog-source.d.ts.map +1 -0
- package/dist/feral/catalog/introspect-catalog-source.js +83 -0
- package/dist/feral/catalog/introspect-catalog-source.js.map +1 -0
- package/dist/feral/catalog/json-catalog-source.d.ts +14 -0
- package/dist/feral/catalog/json-catalog-source.d.ts.map +1 -0
- package/dist/feral/catalog/json-catalog-source.js +26 -0
- package/dist/feral/catalog/json-catalog-source.js.map +1 -0
- package/dist/feral/catalog/mcp-catalog-source.d.ts +13 -0
- package/dist/feral/catalog/mcp-catalog-source.d.ts.map +1 -0
- package/dist/feral/catalog/mcp-catalog-source.js +28 -0
- package/dist/feral/catalog/mcp-catalog-source.js.map +1 -0
- package/dist/feral/catalog/output-catalog-source.d.ts +5 -0
- package/dist/feral/catalog/output-catalog-source.d.ts.map +1 -0
- package/dist/feral/catalog/output-catalog-source.js +32 -0
- package/dist/feral/catalog/output-catalog-source.js.map +1 -0
- package/dist/feral/catalog/pamp-catalog-source.d.ts +9 -0
- package/dist/feral/catalog/pamp-catalog-source.d.ts.map +1 -0
- package/dist/feral/catalog/pamp-catalog-source.js +42 -0
- package/dist/feral/catalog/pamp-catalog-source.js.map +1 -0
- package/dist/feral/catalog/slack-catalog-source.d.ts +10 -0
- package/dist/feral/catalog/slack-catalog-source.d.ts.map +1 -0
- package/dist/feral/catalog/slack-catalog-source.js +96 -0
- package/dist/feral/catalog/slack-catalog-source.js.map +1 -0
- package/dist/feral/catalog/system-catalog-source.d.ts +5 -0
- package/dist/feral/catalog/system-catalog-source.d.ts.map +1 -0
- package/dist/feral/catalog/system-catalog-source.js +74 -0
- package/dist/feral/catalog/system-catalog-source.js.map +1 -0
- package/dist/feral/configuration/configuration-description.d.ts +24 -0
- package/dist/feral/configuration/configuration-description.d.ts.map +1 -0
- package/dist/feral/configuration/configuration-description.js +5 -0
- package/dist/feral/configuration/configuration-description.js.map +1 -0
- package/dist/feral/configuration/configuration-manager.d.ts +12 -0
- package/dist/feral/configuration/configuration-manager.d.ts.map +1 -0
- package/dist/feral/configuration/configuration-manager.js +41 -0
- package/dist/feral/configuration/configuration-manager.js.map +1 -0
- package/dist/feral/configuration/configuration-value.d.ts +16 -0
- package/dist/feral/configuration/configuration-value.d.ts.map +1 -0
- package/dist/feral/configuration/configuration-value.js +22 -0
- package/dist/feral/configuration/configuration-value.js.map +1 -0
- package/dist/feral/context/context.d.ts +28 -0
- package/dist/feral/context/context.d.ts.map +1 -0
- package/dist/feral/context/context.js +44 -0
- package/dist/feral/context/context.js.map +1 -0
- package/dist/feral/engine/process-engine.d.ts +23 -0
- package/dist/feral/engine/process-engine.d.ts.map +1 -0
- package/dist/feral/engine/process-engine.js +134 -0
- package/dist/feral/engine/process-engine.js.map +1 -0
- package/dist/feral/errors.d.ts +28 -0
- package/dist/feral/errors.d.ts.map +1 -0
- package/dist/feral/errors.js +58 -0
- package/dist/feral/errors.js.map +1 -0
- package/dist/feral/events/event-dispatcher.d.ts +9 -0
- package/dist/feral/events/event-dispatcher.d.ts.map +1 -0
- package/dist/feral/events/event-dispatcher.js +27 -0
- package/dist/feral/events/event-dispatcher.js.map +1 -0
- package/dist/feral/events/events.d.ts +41 -0
- package/dist/feral/events/events.d.ts.map +1 -0
- package/dist/feral/events/events.js +5 -0
- package/dist/feral/events/events.js.map +1 -0
- package/dist/feral/events/subscribers/cycle-detection-subscriber.d.ts +7 -0
- package/dist/feral/events/subscribers/cycle-detection-subscriber.d.ts.map +1 -0
- package/dist/feral/events/subscribers/cycle-detection-subscriber.js +21 -0
- package/dist/feral/events/subscribers/cycle-detection-subscriber.js.map +1 -0
- package/dist/feral/events/subscribers/logger-subscriber.d.ts +6 -0
- package/dist/feral/events/subscribers/logger-subscriber.d.ts.map +1 -0
- package/dist/feral/events/subscribers/logger-subscriber.js +23 -0
- package/dist/feral/events/subscribers/logger-subscriber.js.map +1 -0
- package/dist/feral/events/subscribers/profiler-subscriber.d.ts +8 -0
- package/dist/feral/events/subscribers/profiler-subscriber.d.ts.map +1 -0
- package/dist/feral/events/subscribers/profiler-subscriber.js +27 -0
- package/dist/feral/events/subscribers/profiler-subscriber.js.map +1 -0
- package/dist/feral/feral-tool-registry.d.ts +18 -0
- package/dist/feral/feral-tool-registry.d.ts.map +1 -0
- package/dist/feral/feral-tool-registry.js +78 -0
- package/dist/feral/feral-tool-registry.js.map +1 -0
- package/dist/feral/index.d.ts +88 -0
- package/dist/feral/index.d.ts.map +1 -0
- package/dist/feral/index.js +89 -0
- package/dist/feral/index.js.map +1 -0
- package/dist/feral/node-code/abstract-node-code.d.ts +38 -0
- package/dist/feral/node-code/abstract-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/abstract-node-code.js +127 -0
- package/dist/feral/node-code/abstract-node-code.js.map +1 -0
- package/dist/feral/node-code/data/calculation-node-code.d.ts +11 -0
- package/dist/feral/node-code/data/calculation-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/data/calculation-node-code.js +65 -0
- package/dist/feral/node-code/data/calculation-node-code.js.map +1 -0
- package/dist/feral/node-code/data/clean-llm-json-node-code.d.ts +11 -0
- package/dist/feral/node-code/data/clean-llm-json-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/data/clean-llm-json-node-code.js +47 -0
- package/dist/feral/node-code/data/clean-llm-json-node-code.js.map +1 -0
- package/dist/feral/node-code/data/counter-node-code.d.ts +11 -0
- package/dist/feral/node-code/data/counter-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/data/counter-node-code.js +29 -0
- package/dist/feral/node-code/data/counter-node-code.js.map +1 -0
- package/dist/feral/node-code/data/http-node-code.d.ts +11 -0
- package/dist/feral/node-code/data/http-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/data/http-node-code.js +66 -0
- package/dist/feral/node-code/data/http-node-code.js.map +1 -0
- package/dist/feral/node-code/data/json-decode-node-code.d.ts +11 -0
- package/dist/feral/node-code/data/json-decode-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/data/json-decode-node-code.js +34 -0
- package/dist/feral/node-code/data/json-decode-node-code.js.map +1 -0
- package/dist/feral/node-code/data/json-encode-node-code.d.ts +11 -0
- package/dist/feral/node-code/data/json-encode-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/data/json-encode-node-code.js +30 -0
- package/dist/feral/node-code/data/json-encode-node-code.js.map +1 -0
- package/dist/feral/node-code/data/llm-chat-node-code.d.ts +11 -0
- package/dist/feral/node-code/data/llm-chat-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/data/llm-chat-node-code.js +93 -0
- package/dist/feral/node-code/data/llm-chat-node-code.js.map +1 -0
- package/dist/feral/node-code/data/log-node-code.d.ts +13 -0
- package/dist/feral/node-code/data/log-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/data/log-node-code.js +44 -0
- package/dist/feral/node-code/data/log-node-code.js.map +1 -0
- package/dist/feral/node-code/data/random-value-node-code.d.ts +11 -0
- package/dist/feral/node-code/data/random-value-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/data/random-value-node-code.js +43 -0
- package/dist/feral/node-code/data/random-value-node-code.js.map +1 -0
- package/dist/feral/node-code/data/read-file-node-code.d.ts +11 -0
- package/dist/feral/node-code/data/read-file-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/data/read-file-node-code.js +50 -0
- package/dist/feral/node-code/data/read-file-node-code.js.map +1 -0
- package/dist/feral/node-code/data/set-context-table-node-code.d.ts +11 -0
- package/dist/feral/node-code/data/set-context-table-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/data/set-context-table-node-code.js +34 -0
- package/dist/feral/node-code/data/set-context-table-node-code.js.map +1 -0
- package/dist/feral/node-code/data/set-context-value-node-code.d.ts +11 -0
- package/dist/feral/node-code/data/set-context-value-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/data/set-context-value-node-code.js +43 -0
- package/dist/feral/node-code/data/set-context-value-node-code.js.map +1 -0
- package/dist/feral/node-code/data/weather-node-code.d.ts +11 -0
- package/dist/feral/node-code/data/weather-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/data/weather-node-code.js +88 -0
- package/dist/feral/node-code/data/weather-node-code.js.map +1 -0
- package/dist/feral/node-code/entity/complete-entity-node-code.d.ts +11 -0
- package/dist/feral/node-code/entity/complete-entity-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/entity/complete-entity-node-code.js +72 -0
- package/dist/feral/node-code/entity/complete-entity-node-code.js.map +1 -0
- package/dist/feral/node-code/entity/create-entity-node-code.d.ts +11 -0
- package/dist/feral/node-code/entity/create-entity-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/entity/create-entity-node-code.js +109 -0
- package/dist/feral/node-code/entity/create-entity-node-code.js.map +1 -0
- package/dist/feral/node-code/entity/create-entity-type-node-code.d.ts +11 -0
- package/dist/feral/node-code/entity/create-entity-type-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/entity/create-entity-type-node-code.js +131 -0
- package/dist/feral/node-code/entity/create-entity-type-node-code.js.map +1 -0
- package/dist/feral/node-code/entity/create-recurring-task-node-code.d.ts +15 -0
- package/dist/feral/node-code/entity/create-recurring-task-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/entity/create-recurring-task-node-code.js +146 -0
- package/dist/feral/node-code/entity/create-recurring-task-node-code.js.map +1 -0
- package/dist/feral/node-code/entity/delete-entity-node-code.d.ts +11 -0
- package/dist/feral/node-code/entity/delete-entity-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/entity/delete-entity-node-code.js +60 -0
- package/dist/feral/node-code/entity/delete-entity-node-code.js.map +1 -0
- package/dist/feral/node-code/entity/delete-entity-type-node-code.d.ts +11 -0
- package/dist/feral/node-code/entity/delete-entity-type-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/entity/delete-entity-type-node-code.js +51 -0
- package/dist/feral/node-code/entity/delete-entity-type-node-code.js.map +1 -0
- package/dist/feral/node-code/entity/find-entity-node-code.d.ts +13 -0
- package/dist/feral/node-code/entity/find-entity-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/entity/find-entity-node-code.js +59 -0
- package/dist/feral/node-code/entity/find-entity-node-code.js.map +1 -0
- package/dist/feral/node-code/entity/link-entities-node-code.d.ts +11 -0
- package/dist/feral/node-code/entity/link-entities-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/entity/link-entities-node-code.js +64 -0
- package/dist/feral/node-code/entity/link-entities-node-code.js.map +1 -0
- package/dist/feral/node-code/entity/list-entities-node-code.d.ts +11 -0
- package/dist/feral/node-code/entity/list-entities-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/entity/list-entities-node-code.js +44 -0
- package/dist/feral/node-code/entity/list-entities-node-code.js.map +1 -0
- package/dist/feral/node-code/entity/list-entity-types-node-code.d.ts +11 -0
- package/dist/feral/node-code/entity/list-entity-types-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/entity/list-entity-types-node-code.js +22 -0
- package/dist/feral/node-code/entity/list-entity-types-node-code.js.map +1 -0
- package/dist/feral/node-code/entity/load-vault-context-node-code.d.ts +11 -0
- package/dist/feral/node-code/entity/load-vault-context-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/entity/load-vault-context-node-code.js +66 -0
- package/dist/feral/node-code/entity/load-vault-context-node-code.js.map +1 -0
- package/dist/feral/node-code/entity/search-entities-node-code.d.ts +13 -0
- package/dist/feral/node-code/entity/search-entities-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/entity/search-entities-node-code.js +66 -0
- package/dist/feral/node-code/entity/search-entities-node-code.js.map +1 -0
- package/dist/feral/node-code/entity/set-entity-field-node-code.d.ts +11 -0
- package/dist/feral/node-code/entity/set-entity-field-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/entity/set-entity-field-node-code.js +65 -0
- package/dist/feral/node-code/entity/set-entity-field-node-code.js.map +1 -0
- package/dist/feral/node-code/entity/sort-entities-node-code.d.ts +11 -0
- package/dist/feral/node-code/entity/sort-entities-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/entity/sort-entities-node-code.js +67 -0
- package/dist/feral/node-code/entity/sort-entities-node-code.js.map +1 -0
- package/dist/feral/node-code/entity/update-entity-node-code.d.ts +13 -0
- package/dist/feral/node-code/entity/update-entity-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/entity/update-entity-node-code.js +131 -0
- package/dist/feral/node-code/entity/update-entity-node-code.js.map +1 -0
- package/dist/feral/node-code/entity/update-entity-type-node-code.d.ts +11 -0
- package/dist/feral/node-code/entity/update-entity-type-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/entity/update-entity-type-node-code.js +118 -0
- package/dist/feral/node-code/entity/update-entity-type-node-code.js.map +1 -0
- package/dist/feral/node-code/flow/array-iterator-node-code.d.ts +11 -0
- package/dist/feral/node-code/flow/array-iterator-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/flow/array-iterator-node-code.js +91 -0
- package/dist/feral/node-code/flow/array-iterator-node-code.js.map +1 -0
- package/dist/feral/node-code/flow/comparator-node-code.d.ts +11 -0
- package/dist/feral/node-code/flow/comparator-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/flow/comparator-node-code.js +55 -0
- package/dist/feral/node-code/flow/comparator-node-code.js.map +1 -0
- package/dist/feral/node-code/flow/context-value-result-node-code.d.ts +11 -0
- package/dist/feral/node-code/flow/context-value-result-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/flow/context-value-result-node-code.js +22 -0
- package/dist/feral/node-code/flow/context-value-result-node-code.js.map +1 -0
- package/dist/feral/node-code/flow/noop-node-code.d.ts +11 -0
- package/dist/feral/node-code/flow/noop-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/flow/noop-node-code.js +19 -0
- package/dist/feral/node-code/flow/noop-node-code.js.map +1 -0
- package/dist/feral/node-code/flow/start-node-code.d.ts +11 -0
- package/dist/feral/node-code/flow/start-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/flow/start-node-code.js +19 -0
- package/dist/feral/node-code/flow/start-node-code.js.map +1 -0
- package/dist/feral/node-code/flow/stop-node-code.d.ts +11 -0
- package/dist/feral/node-code/flow/stop-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/flow/stop-node-code.js +19 -0
- package/dist/feral/node-code/flow/stop-node-code.js.map +1 -0
- package/dist/feral/node-code/flow/sub-process-node-code.d.ts +11 -0
- package/dist/feral/node-code/flow/sub-process-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/flow/sub-process-node-code.js +53 -0
- package/dist/feral/node-code/flow/sub-process-node-code.js.map +1 -0
- package/dist/feral/node-code/flow/throw-exception-node-code.d.ts +11 -0
- package/dist/feral/node-code/flow/throw-exception-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/flow/throw-exception-node-code.js +20 -0
- package/dist/feral/node-code/flow/throw-exception-node-code.js.map +1 -0
- package/dist/feral/node-code/genai/data-synthesis-prep-node-code.d.ts +15 -0
- package/dist/feral/node-code/genai/data-synthesis-prep-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/genai/data-synthesis-prep-node-code.js +44 -0
- package/dist/feral/node-code/genai/data-synthesis-prep-node-code.js.map +1 -0
- package/dist/feral/node-code/genai/generate-html-node-code.d.ts +13 -0
- package/dist/feral/node-code/genai/generate-html-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/genai/generate-html-node-code.js +47 -0
- package/dist/feral/node-code/genai/generate-html-node-code.js.map +1 -0
- package/dist/feral/node-code/genai/generate-markdown-node-code.d.ts +27 -0
- package/dist/feral/node-code/genai/generate-markdown-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/genai/generate-markdown-node-code.js +81 -0
- package/dist/feral/node-code/genai/generate-markdown-node-code.js.map +1 -0
- package/dist/feral/node-code/genai/hydrate-model-node-code.d.ts +21 -0
- package/dist/feral/node-code/genai/hydrate-model-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/genai/hydrate-model-node-code.js +83 -0
- package/dist/feral/node-code/genai/hydrate-model-node-code.js.map +1 -0
- package/dist/feral/node-code/genai/merge-strings-node-code.d.ts +14 -0
- package/dist/feral/node-code/genai/merge-strings-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/genai/merge-strings-node-code.js +34 -0
- package/dist/feral/node-code/genai/merge-strings-node-code.js.map +1 -0
- package/dist/feral/node-code/genai/model-to-output-node-code.d.ts +18 -0
- package/dist/feral/node-code/genai/model-to-output-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/genai/model-to-output-node-code.js +49 -0
- package/dist/feral/node-code/genai/model-to-output-node-code.js.map +1 -0
- package/dist/feral/node-code/genai/openai-node-code.d.ts +14 -0
- package/dist/feral/node-code/genai/openai-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/genai/openai-node-code.js +66 -0
- package/dist/feral/node-code/genai/openai-node-code.js.map +1 -0
- package/dist/feral/node-code/genai/write-entity-node-code.d.ts +22 -0
- package/dist/feral/node-code/genai/write-entity-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/genai/write-entity-node-code.js +46 -0
- package/dist/feral/node-code/genai/write-entity-node-code.js.map +1 -0
- package/dist/feral/node-code/genai/write-file-node-code.d.ts +13 -0
- package/dist/feral/node-code/genai/write-file-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/genai/write-file-node-code.js +59 -0
- package/dist/feral/node-code/genai/write-file-node-code.js.map +1 -0
- package/dist/feral/node-code/genai/write-to-redis-node-code.d.ts +23 -0
- package/dist/feral/node-code/genai/write-to-redis-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/genai/write-to-redis-node-code.js +48 -0
- package/dist/feral/node-code/genai/write-to-redis-node-code.js.map +1 -0
- package/dist/feral/node-code/input/prompt-input-node-code.d.ts +11 -0
- package/dist/feral/node-code/input/prompt-input-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/input/prompt-input-node-code.js +70 -0
- package/dist/feral/node-code/input/prompt-input-node-code.js.map +1 -0
- package/dist/feral/node-code/input/prompt-select-node-code.d.ts +11 -0
- package/dist/feral/node-code/input/prompt-select-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/input/prompt-select-node-code.js +65 -0
- package/dist/feral/node-code/input/prompt-select-node-code.js.map +1 -0
- package/dist/feral/node-code/mcp/mcp-call-tool-node-code.d.ts +12 -0
- package/dist/feral/node-code/mcp/mcp-call-tool-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/mcp/mcp-call-tool-node-code.js +44 -0
- package/dist/feral/node-code/mcp/mcp-call-tool-node-code.js.map +1 -0
- package/dist/feral/node-code/node-code-factory.d.ts +20 -0
- package/dist/feral/node-code/node-code-factory.d.ts.map +1 -0
- package/dist/feral/node-code/node-code-factory.js +32 -0
- package/dist/feral/node-code/node-code-factory.js.map +1 -0
- package/dist/feral/node-code/node-code.d.ts +22 -0
- package/dist/feral/node-code/node-code.d.ts.map +1 -0
- package/dist/feral/node-code/node-code.js +9 -0
- package/dist/feral/node-code/node-code.js.map +1 -0
- package/dist/feral/node-code/output/agent-speak-node-code.d.ts +11 -0
- package/dist/feral/node-code/output/agent-speak-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/output/agent-speak-node-code.js +56 -0
- package/dist/feral/node-code/output/agent-speak-node-code.js.map +1 -0
- package/dist/feral/node-code/output/dobbai-speak-node-code.d.ts +11 -0
- package/dist/feral/node-code/output/dobbai-speak-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/output/dobbai-speak-node-code.js +56 -0
- package/dist/feral/node-code/output/dobbai-speak-node-code.js.map +1 -0
- package/dist/feral/node-code/output/dobbi-speak-node-code.d.ts +15 -0
- package/dist/feral/node-code/output/dobbi-speak-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/output/dobbi-speak-node-code.js +60 -0
- package/dist/feral/node-code/output/dobbi-speak-node-code.js.map +1 -0
- package/dist/feral/node-code/output/dobbie-speak-node-code.d.ts +11 -0
- package/dist/feral/node-code/output/dobbie-speak-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/output/dobbie-speak-node-code.js +56 -0
- package/dist/feral/node-code/output/dobbie-speak-node-code.js.map +1 -0
- package/dist/feral/node-code/pamp/pamp-await-reply-node-code.d.ts +11 -0
- package/dist/feral/node-code/pamp/pamp-await-reply-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/pamp/pamp-await-reply-node-code.js +51 -0
- package/dist/feral/node-code/pamp/pamp-await-reply-node-code.js.map +1 -0
- package/dist/feral/node-code/pamp/pamp-check-inbox-node-code.d.ts +11 -0
- package/dist/feral/node-code/pamp/pamp-check-inbox-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/pamp/pamp-check-inbox-node-code.js +37 -0
- package/dist/feral/node-code/pamp/pamp-check-inbox-node-code.js.map +1 -0
- package/dist/feral/node-code/pamp/pamp-send-node-code.d.ts +11 -0
- package/dist/feral/node-code/pamp/pamp-send-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/pamp/pamp-send-node-code.js +48 -0
- package/dist/feral/node-code/pamp/pamp-send-node-code.js.map +1 -0
- package/dist/feral/node-code/pamp/pamp-share-entity-node-code.d.ts +11 -0
- package/dist/feral/node-code/pamp/pamp-share-entity-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/pamp/pamp-share-entity-node-code.js +45 -0
- package/dist/feral/node-code/pamp/pamp-share-entity-node-code.js.map +1 -0
- package/dist/feral/node-code/slack/slack-block-builder-node-code.d.ts +18 -0
- package/dist/feral/node-code/slack/slack-block-builder-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/slack/slack-block-builder-node-code.js +100 -0
- package/dist/feral/node-code/slack/slack-block-builder-node-code.js.map +1 -0
- package/dist/feral/node-code/slack/slack-post-webhook-node-code.d.ts +13 -0
- package/dist/feral/node-code/slack/slack-post-webhook-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/slack/slack-post-webhook-node-code.js +47 -0
- package/dist/feral/node-code/slack/slack-post-webhook-node-code.js.map +1 -0
- package/dist/feral/node-code/slack/slack-process-slash-command-node-code.d.ts +14 -0
- package/dist/feral/node-code/slack/slack-process-slash-command-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/slack/slack-process-slash-command-node-code.js +39 -0
- package/dist/feral/node-code/slack/slack-process-slash-command-node-code.js.map +1 -0
- package/dist/feral/node-code/system/cli-command-node-code.d.ts +11 -0
- package/dist/feral/node-code/system/cli-command-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/system/cli-command-node-code.js +50 -0
- package/dist/feral/node-code/system/cli-command-node-code.js.map +1 -0
- package/dist/feral/node-code/system/introspect-node-code.d.ts +12 -0
- package/dist/feral/node-code/system/introspect-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/system/introspect-node-code.js +98 -0
- package/dist/feral/node-code/system/introspect-node-code.js.map +1 -0
- package/dist/feral/node-code/system/list-catalog-nodes-node-code.d.ts +10 -0
- package/dist/feral/node-code/system/list-catalog-nodes-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/system/list-catalog-nodes-node-code.js +33 -0
- package/dist/feral/node-code/system/list-catalog-nodes-node-code.js.map +1 -0
- package/dist/feral/node-code/system/list-processes-node-code.d.ts +10 -0
- package/dist/feral/node-code/system/list-processes-node-code.d.ts.map +1 -0
- package/dist/feral/node-code/system/list-processes-node-code.js +22 -0
- package/dist/feral/node-code/system/list-processes-node-code.js.map +1 -0
- package/dist/feral/process/edge.d.ts +18 -0
- package/dist/feral/process/edge.d.ts.map +1 -0
- package/dist/feral/process/edge.js +32 -0
- package/dist/feral/process/edge.js.map +1 -0
- package/dist/feral/process/json-process-source.d.ts +18 -0
- package/dist/feral/process/json-process-source.d.ts.map +1 -0
- package/dist/feral/process/json-process-source.js +55 -0
- package/dist/feral/process/json-process-source.js.map +1 -0
- package/dist/feral/process/node.d.ts +14 -0
- package/dist/feral/process/node.d.ts.map +1 -0
- package/dist/feral/process/node.js +5 -0
- package/dist/feral/process/node.js.map +1 -0
- package/dist/feral/process/process-factory.d.ts +18 -0
- package/dist/feral/process/process-factory.d.ts.map +1 -0
- package/dist/feral/process/process-factory.js +30 -0
- package/dist/feral/process/process-factory.js.map +1 -0
- package/dist/feral/process/process-json-hydrator.d.ts +53 -0
- package/dist/feral/process/process-json-hydrator.d.ts.map +1 -0
- package/dist/feral/process/process-json-hydrator.js +48 -0
- package/dist/feral/process/process-json-hydrator.js.map +1 -0
- package/dist/feral/process/process.d.ts +17 -0
- package/dist/feral/process/process.d.ts.map +1 -0
- package/dist/feral/process/process.js +5 -0
- package/dist/feral/process/process.js.map +1 -0
- package/dist/feral/result/result.d.ts +30 -0
- package/dist/feral/result/result.d.ts.map +1 -0
- package/dist/feral/result/result.js +28 -0
- package/dist/feral/result/result.js.map +1 -0
- package/dist/feral/runner/runner.d.ts +13 -0
- package/dist/feral/runner/runner.d.ts.map +1 -0
- package/dist/feral/runner/runner.js +28 -0
- package/dist/feral/runner/runner.js.map +1 -0
- package/dist/feral/security/file-access-guard.d.ts +18 -0
- package/dist/feral/security/file-access-guard.d.ts.map +1 -0
- package/dist/feral/security/file-access-guard.js +69 -0
- package/dist/feral/security/file-access-guard.js.map +1 -0
- package/dist/feral/slack/block-builder.d.ts +61 -0
- package/dist/feral/slack/block-builder.d.ts.map +1 -0
- package/dist/feral/slack/block-builder.js +206 -0
- package/dist/feral/slack/block-builder.js.map +1 -0
- package/dist/feral/slack/blocks.d.ts +86 -0
- package/dist/feral/slack/blocks.d.ts.map +1 -0
- package/dist/feral/slack/blocks.js +181 -0
- package/dist/feral/slack/blocks.js.map +1 -0
- package/dist/feral/slack/composition.d.ts +54 -0
- package/dist/feral/slack/composition.d.ts.map +1 -0
- package/dist/feral/slack/composition.js +114 -0
- package/dist/feral/slack/composition.js.map +1 -0
- package/dist/feral/slack/elements.d.ts +123 -0
- package/dist/feral/slack/elements.d.ts.map +1 -0
- package/dist/feral/slack/elements.js +269 -0
- package/dist/feral/slack/elements.js.map +1 -0
- package/dist/feral/slack/index.d.ts +12 -0
- package/dist/feral/slack/index.d.ts.map +1 -0
- package/dist/feral/slack/index.js +20 -0
- package/dist/feral/slack/index.js.map +1 -0
- package/dist/feral/slack/mapping-factory.d.ts +24 -0
- package/dist/feral/slack/mapping-factory.d.ts.map +1 -0
- package/dist/feral/slack/mapping-factory.js +45 -0
- package/dist/feral/slack/mapping-factory.js.map +1 -0
- package/dist/feral/slack/messages.d.ts +34 -0
- package/dist/feral/slack/messages.d.ts.map +1 -0
- package/dist/feral/slack/messages.js +53 -0
- package/dist/feral/slack/messages.js.map +1 -0
- package/dist/feral/slack/slack-facade.d.ts +20 -0
- package/dist/feral/slack/slack-facade.d.ts.map +1 -0
- package/dist/feral/slack/slack-facade.js +41 -0
- package/dist/feral/slack/slack-facade.js.map +1 -0
- package/dist/feral/slack/slack-markdown-formatter.d.ts +22 -0
- package/dist/feral/slack/slack-markdown-formatter.d.ts.map +1 -0
- package/dist/feral/slack/slack-markdown-formatter.js +36 -0
- package/dist/feral/slack/slack-markdown-formatter.js.map +1 -0
- package/dist/feral/slack/slash-command-input.d.ts +23 -0
- package/dist/feral/slack/slash-command-input.d.ts.map +1 -0
- package/dist/feral/slack/slash-command-input.js +45 -0
- package/dist/feral/slack/slash-command-input.js.map +1 -0
- package/dist/feral/slack/types.d.ts +64 -0
- package/dist/feral/slack/types.d.ts.map +1 -0
- package/dist/feral/slack/types.js +44 -0
- package/dist/feral/slack/types.js.map +1 -0
- package/dist/feral/trace/process-trace.d.ts +44 -0
- package/dist/feral/trace/process-trace.d.ts.map +1 -0
- package/dist/feral/trace/process-trace.js +44 -0
- package/dist/feral/trace/process-trace.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +157 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/providers/claude.d.ts +11 -0
- package/dist/llm/providers/claude.d.ts.map +1 -0
- package/dist/llm/providers/claude.js +45 -0
- package/dist/llm/providers/claude.js.map +1 -0
- package/dist/llm/providers/index.d.ts +5 -0
- package/dist/llm/providers/index.d.ts.map +1 -0
- package/dist/llm/providers/index.js +20 -0
- package/dist/llm/providers/index.js.map +1 -0
- package/dist/llm/providers/openai.d.ts +12 -0
- package/dist/llm/providers/openai.d.ts.map +1 -0
- package/dist/llm/providers/openai.js +62 -0
- package/dist/llm/providers/openai.js.map +1 -0
- package/dist/llm/router.d.ts +32 -0
- package/dist/llm/router.d.ts.map +1 -0
- package/dist/llm/router.js +100 -0
- package/dist/llm/router.js.map +1 -0
- package/dist/llm/types.d.ts +18 -0
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/llm/types.js +2 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/markdown/parser.d.ts +26 -0
- package/dist/markdown/parser.d.ts.map +1 -0
- package/dist/markdown/parser.js +58 -0
- package/dist/markdown/parser.js.map +1 -0
- package/dist/pamp/client.d.ts +39 -0
- package/dist/pamp/client.d.ts.map +1 -0
- package/dist/pamp/client.js +336 -0
- package/dist/pamp/client.js.map +1 -0
- package/dist/pamp/crypto.d.ts +23 -0
- package/dist/pamp/crypto.d.ts.map +1 -0
- package/dist/pamp/crypto.js +130 -0
- package/dist/pamp/crypto.js.map +1 -0
- package/dist/pamp/envelope.d.ts +23 -0
- package/dist/pamp/envelope.d.ts.map +1 -0
- package/dist/pamp/envelope.js +67 -0
- package/dist/pamp/envelope.js.map +1 -0
- package/dist/pamp/index.d.ts +6 -0
- package/dist/pamp/index.d.ts.map +1 -0
- package/dist/pamp/index.js +9 -0
- package/dist/pamp/index.js.map +1 -0
- package/dist/pamp/storage.d.ts +20 -0
- package/dist/pamp/storage.d.ts.map +1 -0
- package/dist/pamp/storage.js +160 -0
- package/dist/pamp/storage.js.map +1 -0
- package/dist/pamp/types.d.ts +80 -0
- package/dist/pamp/types.d.ts.map +1 -0
- package/dist/pamp/types.js +7 -0
- package/dist/pamp/types.js.map +1 -0
- package/dist/paths.d.ts +24 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +70 -0
- package/dist/paths.js.map +1 -0
- package/dist/personalities.d.ts +20 -0
- package/dist/personalities.d.ts.map +1 -0
- package/dist/personalities.js +181 -0
- package/dist/personalities.js.map +1 -0
- package/dist/phaibel.txt +82 -0
- package/dist/responses.d.ts +34 -0
- package/dist/responses.d.ts.map +1 -0
- package/dist/responses.js +467 -0
- package/dist/responses.js.map +1 -0
- package/dist/schemas/index.d.ts +154 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +73 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/service/api-router.d.ts +7 -0
- package/dist/service/api-router.d.ts.map +1 -0
- package/dist/service/api-router.js +478 -0
- package/dist/service/api-router.js.map +1 -0
- package/dist/service/context/provider.d.ts +76 -0
- package/dist/service/context/provider.d.ts.map +1 -0
- package/dist/service/context/provider.js +140 -0
- package/dist/service/context/provider.js.map +1 -0
- package/dist/service/cron/feedback-analysis.d.ts +2 -0
- package/dist/service/cron/feedback-analysis.d.ts.map +1 -0
- package/dist/service/cron/feedback-analysis.js +100 -0
- package/dist/service/cron/feedback-analysis.js.map +1 -0
- package/dist/service/cron/pamp-checker.d.ts +7 -0
- package/dist/service/cron/pamp-checker.d.ts.map +1 -0
- package/dist/service/cron/pamp-checker.js +29 -0
- package/dist/service/cron/pamp-checker.js.map +1 -0
- package/dist/service/cron/process-evaluator.d.ts +6 -0
- package/dist/service/cron/process-evaluator.d.ts.map +1 -0
- package/dist/service/cron/process-evaluator.js +126 -0
- package/dist/service/cron/process-evaluator.js.map +1 -0
- package/dist/service/cron/process-lifecycle.d.ts +6 -0
- package/dist/service/cron/process-lifecycle.d.ts.map +1 -0
- package/dist/service/cron/process-lifecycle.js +202 -0
- package/dist/service/cron/process-lifecycle.js.map +1 -0
- package/dist/service/cron/scheduler.d.ts +36 -0
- package/dist/service/cron/scheduler.d.ts.map +1 -0
- package/dist/service/cron/scheduler.js +232 -0
- package/dist/service/cron/scheduler.js.map +1 -0
- package/dist/service/daemon.d.ts +24 -0
- package/dist/service/daemon.d.ts.map +1 -0
- package/dist/service/daemon.js +181 -0
- package/dist/service/daemon.js.map +1 -0
- package/dist/service/index.d.ts +11 -0
- package/dist/service/index.d.ts.map +1 -0
- package/dist/service/index.js +255 -0
- package/dist/service/index.js.map +1 -0
- package/dist/service/protocol.d.ts +119 -0
- package/dist/service/protocol.d.ts.map +1 -0
- package/dist/service/protocol.js +17 -0
- package/dist/service/protocol.js.map +1 -0
- package/dist/service/queue/manager.d.ts +66 -0
- package/dist/service/queue/manager.d.ts.map +1 -0
- package/dist/service/queue/manager.js +206 -0
- package/dist/service/queue/manager.js.map +1 -0
- package/dist/service/queue/processor.d.ts +53 -0
- package/dist/service/queue/processor.d.ts.map +1 -0
- package/dist/service/queue/processor.js +288 -0
- package/dist/service/queue/processor.js.map +1 -0
- package/dist/service/queue/queue-persistence.d.ts +27 -0
- package/dist/service/queue/queue-persistence.d.ts.map +1 -0
- package/dist/service/queue/queue-persistence.js +53 -0
- package/dist/service/queue/queue-persistence.js.map +1 -0
- package/dist/service/server.d.ts +28 -0
- package/dist/service/server.d.ts.map +1 -0
- package/dist/service/server.js +101 -0
- package/dist/service/server.js.map +1 -0
- package/dist/service/task/builder.d.ts +43 -0
- package/dist/service/task/builder.d.ts.map +1 -0
- package/dist/service/task/builder.js +100 -0
- package/dist/service/task/builder.js.map +1 -0
- package/dist/service/task/types.d.ts +2 -0
- package/dist/service/task/types.d.ts.map +1 -0
- package/dist/service/task/types.js +3 -0
- package/dist/service/task/types.js.map +1 -0
- package/dist/service/web-client.html +1569 -0
- package/dist/service/web-server.d.ts +18 -0
- package/dist/service/web-server.d.ts.map +1 -0
- package/dist/service/web-server.js +395 -0
- package/dist/service/web-server.js.map +1 -0
- package/dist/shell/banner.d.ts +11 -0
- package/dist/shell/banner.d.ts.map +1 -0
- package/dist/shell/banner.js +66 -0
- package/dist/shell/banner.js.map +1 -0
- package/dist/shell/status-poller.d.ts +27 -0
- package/dist/shell/status-poller.d.ts.map +1 -0
- package/dist/shell/status-poller.js +77 -0
- package/dist/shell/status-poller.js.map +1 -0
- package/dist/shell/tui.d.ts +32 -0
- package/dist/shell/tui.d.ts.map +1 -0
- package/dist/shell/tui.js +69 -0
- package/dist/shell/tui.js.map +1 -0
- package/dist/skills/mcp-manager.d.ts +30 -0
- package/dist/skills/mcp-manager.d.ts.map +1 -0
- package/dist/skills/mcp-manager.js +104 -0
- package/dist/skills/mcp-manager.js.map +1 -0
- package/dist/skills/skill-config.d.ts +13 -0
- package/dist/skills/skill-config.d.ts.map +1 -0
- package/dist/skills/skill-config.js +23 -0
- package/dist/skills/skill-config.js.map +1 -0
- package/dist/state/manager.d.ts +73 -0
- package/dist/state/manager.d.ts.map +1 -0
- package/dist/state/manager.js +201 -0
- package/dist/state/manager.js.map +1 -0
- package/dist/tools/daily.d.ts +2 -0
- package/dist/tools/daily.d.ts.map +1 -0
- package/dist/tools/daily.js +310 -0
- package/dist/tools/daily.js.map +1 -0
- package/dist/tools/events.d.ts +2 -0
- package/dist/tools/events.d.ts.map +1 -0
- package/dist/tools/events.js +132 -0
- package/dist/tools/events.js.map +1 -0
- package/dist/tools/goals.d.ts +2 -0
- package/dist/tools/goals.d.ts.map +1 -0
- package/dist/tools/goals.js +128 -0
- package/dist/tools/goals.js.map +1 -0
- package/dist/tools/index.d.ts +10 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +13 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/notes.d.ts +2 -0
- package/dist/tools/notes.d.ts.map +1 -0
- package/dist/tools/notes.js +88 -0
- package/dist/tools/notes.js.map +1 -0
- package/dist/tools/project.d.ts +2 -0
- package/dist/tools/project.d.ts.map +1 -0
- package/dist/tools/project.js +112 -0
- package/dist/tools/project.js.map +1 -0
- package/dist/tools/research.d.ts +2 -0
- package/dist/tools/research.d.ts.map +1 -0
- package/dist/tools/research.js +64 -0
- package/dist/tools/research.js.map +1 -0
- package/dist/tools/summarize.d.ts +2 -0
- package/dist/tools/summarize.d.ts.map +1 -0
- package/dist/tools/summarize.js +31 -0
- package/dist/tools/summarize.js.map +1 -0
- package/dist/tools/tasks.d.ts +2 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/tasks.js +90 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/tools/time.d.ts +2 -0
- package/dist/tools/time.d.ts.map +1 -0
- package/dist/tools/time.js +21 -0
- package/dist/tools/time.js.map +1 -0
- package/dist/tools/types.d.ts +56 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +17 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/ui/breadcrumb.d.ts +11 -0
- package/dist/ui/breadcrumb.d.ts.map +1 -0
- package/dist/ui/breadcrumb.js +35 -0
- package/dist/ui/breadcrumb.js.map +1 -0
- package/dist/ui/entity-prompt.d.ts +52 -0
- package/dist/ui/entity-prompt.d.ts.map +1 -0
- package/dist/ui/entity-prompt.js +130 -0
- package/dist/ui/entity-prompt.js.map +1 -0
- package/dist/utils/chat-logger.d.ts +28 -0
- package/dist/utils/chat-logger.d.ts.map +1 -0
- package/dist/utils/chat-logger.js +85 -0
- package/dist/utils/chat-logger.js.map +1 -0
- package/dist/utils/debug.d.ts +14 -0
- package/dist/utils/debug.d.ts.map +1 -0
- package/dist/utils/debug.js +31 -0
- package/dist/utils/debug.js.map +1 -0
- package/dist/utils/execution-logger.d.ts +21 -0
- package/dist/utils/execution-logger.d.ts.map +1 -0
- package/dist/utils/execution-logger.js +46 -0
- package/dist/utils/execution-logger.js.map +1 -0
- package/dist/utils/ics-parser.d.ts +14 -0
- package/dist/utils/ics-parser.d.ts.map +1 -0
- package/dist/utils/ics-parser.js +57 -0
- package/dist/utils/ics-parser.js.map +1 -0
- package/dist/utils/json-parser.d.ts +10 -0
- package/dist/utils/json-parser.d.ts.map +1 -0
- package/dist/utils/json-parser.js +164 -0
- package/dist/utils/json-parser.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
2
|
+
// Process Lifecycle Manager — creates, updates, and retires reusable processes
|
|
3
|
+
// from execution logs. Runs as an hourly cron job.
|
|
4
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
5
|
+
import { promises as fs } from 'fs';
|
|
6
|
+
import path from 'path';
|
|
7
|
+
import { findVaultRoot } from '../../state/manager.js';
|
|
8
|
+
import { readRecentExecutionLogs } from '../../utils/execution-logger.js';
|
|
9
|
+
import { parseJsonResponse } from '../../utils/json-parser.js';
|
|
10
|
+
import { getModelForCapability } from '../../llm/router.js';
|
|
11
|
+
/**
|
|
12
|
+
* Full lifecycle evaluation: create new processes, update underperformers,
|
|
13
|
+
* and retire broken/unused ones.
|
|
14
|
+
*/
|
|
15
|
+
export async function evaluateProcessLifecycle() {
|
|
16
|
+
const vaultRoot = await findVaultRoot();
|
|
17
|
+
if (!vaultRoot) {
|
|
18
|
+
return 'No vault found — skipping process lifecycle';
|
|
19
|
+
}
|
|
20
|
+
// 1. Collect data
|
|
21
|
+
const logs = await readRecentExecutionLogs(14);
|
|
22
|
+
const processDir = path.join(vaultRoot, 'processes');
|
|
23
|
+
const existingProcesses = await loadProcesses(processDir);
|
|
24
|
+
const customLogs = logs.filter(l => l.process_source === 'custom');
|
|
25
|
+
const reuseLogs = logs.filter(l => l.process_source === 'reuse');
|
|
26
|
+
if (customLogs.length < 2 && existingProcesses.length === 0) {
|
|
27
|
+
return `Not enough data — ${customLogs.length} custom log(s), 0 processes`;
|
|
28
|
+
}
|
|
29
|
+
// 2. Compute usage stats per existing process
|
|
30
|
+
const stats = computeUsageStats(existingProcesses, reuseLogs);
|
|
31
|
+
// 3. Send to LLM
|
|
32
|
+
const llm = await getModelForCapability('reason');
|
|
33
|
+
const existingProcessSummaries = existingProcesses.map(p => ({
|
|
34
|
+
key: p.key,
|
|
35
|
+
description: p.description,
|
|
36
|
+
process: p.json,
|
|
37
|
+
}));
|
|
38
|
+
const statsSection = stats.length > 0
|
|
39
|
+
? stats.map(s => `- ${s.key}: used ${s.timesUsed}x, ${Math.round(s.successRate * 100)}% success, last used ${s.lastUsed ?? 'never'}`).join('\n')
|
|
40
|
+
: 'No usage data yet';
|
|
41
|
+
const customLogSummaries = customLogs.map(l => ({
|
|
42
|
+
user_input: l.user_input,
|
|
43
|
+
success: l.success,
|
|
44
|
+
outcome_summary: l.outcome_summary,
|
|
45
|
+
process_json: l.process_json,
|
|
46
|
+
}));
|
|
47
|
+
const reuseLogSummaries = reuseLogs.map(l => ({
|
|
48
|
+
process_key: l.process_key,
|
|
49
|
+
success: l.success,
|
|
50
|
+
outcome_summary: l.outcome_summary,
|
|
51
|
+
}));
|
|
52
|
+
const response = await llm.chat([{
|
|
53
|
+
role: 'user',
|
|
54
|
+
content: `EXISTING PROCESSES (${existingProcesses.length}):
|
|
55
|
+
${JSON.stringify(existingProcessSummaries, null, 2)}
|
|
56
|
+
|
|
57
|
+
USAGE STATS (last 14 days):
|
|
58
|
+
${statsSection}
|
|
59
|
+
|
|
60
|
+
RECENT CUSTOM EXECUTIONS (${customLogs.length}):
|
|
61
|
+
${JSON.stringify(customLogSummaries, null, 2)}
|
|
62
|
+
|
|
63
|
+
RECENT REUSE EXECUTIONS (${reuseLogs.length}):
|
|
64
|
+
${JSON.stringify(reuseLogSummaries, null, 2)}
|
|
65
|
+
|
|
66
|
+
RULES:
|
|
67
|
+
- CREATE when 2+ similar custom executions show a repeatable pattern
|
|
68
|
+
- UPDATE when an existing process has success rate < 70%, or custom logs show a better approach for the same task
|
|
69
|
+
- RETIRE when a process is unused for 14+ days, or always failing — but never retire processes less than 3 days old
|
|
70
|
+
- Use {context_key} interpolation for variable parts (e.g. {user_input}, {entity_title})
|
|
71
|
+
- Prefer simple, focused processes (5-8 nodes max)
|
|
72
|
+
- Every process must start with a "start" node and end with a "stop" node
|
|
73
|
+
- Process key should be descriptive (e.g. "create-task-with-tag", "list-events-today")
|
|
74
|
+
- Don't create duplicates of existing processes
|
|
75
|
+
|
|
76
|
+
Return a JSON object:
|
|
77
|
+
{
|
|
78
|
+
"create": [
|
|
79
|
+
{ "key": "process-key", "description": "What it does", "process": { ... valid process JSON ... } }
|
|
80
|
+
],
|
|
81
|
+
"update": [
|
|
82
|
+
{ "key": "existing-key", "description": "Updated description", "process": { ... improved process JSON ... } }
|
|
83
|
+
],
|
|
84
|
+
"retire": [
|
|
85
|
+
{ "key": "existing-key", "reason": "Why it should be retired" }
|
|
86
|
+
],
|
|
87
|
+
"reasoning": "Overall analysis"
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
If no actions needed, return empty arrays. Return ONLY the JSON object, no markdown fences.`,
|
|
91
|
+
}], {
|
|
92
|
+
systemPrompt: 'You are the process lifecycle engine for Phaibel, a Personal Digital Agent. Analyze execution logs and process performance to create new processes, improve underperforming ones, and retire broken or unused ones. Quality over quantity — only act when the data clearly supports it.',
|
|
93
|
+
temperature: 0.3,
|
|
94
|
+
});
|
|
95
|
+
// 4. Parse LLM response
|
|
96
|
+
let decision;
|
|
97
|
+
try {
|
|
98
|
+
decision = parseJsonResponse(response);
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return 'Failed to parse LLM response for process lifecycle';
|
|
102
|
+
}
|
|
103
|
+
// Normalize missing arrays
|
|
104
|
+
decision.create = decision.create ?? [];
|
|
105
|
+
decision.update = decision.update ?? [];
|
|
106
|
+
decision.retire = decision.retire ?? [];
|
|
107
|
+
const totalActions = decision.create.length + decision.update.length + decision.retire.length;
|
|
108
|
+
if (totalActions === 0) {
|
|
109
|
+
return `No lifecycle actions needed: ${decision.reasoning}`;
|
|
110
|
+
}
|
|
111
|
+
// 5. Execute decisions
|
|
112
|
+
await fs.mkdir(processDir, { recursive: true });
|
|
113
|
+
const existingKeys = new Set(existingProcesses.map(p => p.key));
|
|
114
|
+
let created = 0;
|
|
115
|
+
let updated = 0;
|
|
116
|
+
let retired = 0;
|
|
117
|
+
// Create new processes
|
|
118
|
+
for (const np of decision.create) {
|
|
119
|
+
if (existingKeys.has(np.key))
|
|
120
|
+
continue;
|
|
121
|
+
const filename = `${np.key.replace(/\./g, '-')}.json`;
|
|
122
|
+
const filepath = path.join(processDir, filename);
|
|
123
|
+
try {
|
|
124
|
+
await fs.access(filepath);
|
|
125
|
+
continue; // file exists, skip
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
// file doesn't exist, proceed
|
|
129
|
+
}
|
|
130
|
+
await fs.writeFile(filepath, JSON.stringify(np.process, null, 2));
|
|
131
|
+
created++;
|
|
132
|
+
}
|
|
133
|
+
// Update existing processes
|
|
134
|
+
for (const up of decision.update) {
|
|
135
|
+
const existing = existingProcesses.find(p => p.key === up.key);
|
|
136
|
+
if (!existing)
|
|
137
|
+
continue;
|
|
138
|
+
const filepath = path.join(processDir, existing.filename);
|
|
139
|
+
await fs.writeFile(filepath, JSON.stringify(up.process, null, 2));
|
|
140
|
+
updated++;
|
|
141
|
+
}
|
|
142
|
+
// Retire processes (soft delete to .trash)
|
|
143
|
+
for (const rt of decision.retire) {
|
|
144
|
+
const existing = existingProcesses.find(p => p.key === rt.key);
|
|
145
|
+
if (!existing)
|
|
146
|
+
continue;
|
|
147
|
+
const src = path.join(processDir, existing.filename);
|
|
148
|
+
const trashDir = path.join(vaultRoot, '.trash', 'processes');
|
|
149
|
+
await fs.mkdir(trashDir, { recursive: true });
|
|
150
|
+
const dest = path.join(trashDir, existing.filename);
|
|
151
|
+
await fs.rename(src, dest);
|
|
152
|
+
retired++;
|
|
153
|
+
}
|
|
154
|
+
return `Lifecycle: ${created} created, ${updated} updated, ${retired} retired. ${decision.reasoning}`;
|
|
155
|
+
}
|
|
156
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
157
|
+
// Helpers
|
|
158
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
159
|
+
async function loadProcesses(processDir) {
|
|
160
|
+
let files;
|
|
161
|
+
try {
|
|
162
|
+
files = await fs.readdir(processDir);
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
return [];
|
|
166
|
+
}
|
|
167
|
+
const processes = [];
|
|
168
|
+
for (const file of files) {
|
|
169
|
+
if (!file.endsWith('.json'))
|
|
170
|
+
continue;
|
|
171
|
+
try {
|
|
172
|
+
const raw = await fs.readFile(path.join(processDir, file), 'utf-8');
|
|
173
|
+
const parsed = JSON.parse(raw);
|
|
174
|
+
processes.push({
|
|
175
|
+
key: parsed.key,
|
|
176
|
+
description: parsed.description || '',
|
|
177
|
+
filename: file,
|
|
178
|
+
json: parsed,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
// skip invalid files
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return processes;
|
|
186
|
+
}
|
|
187
|
+
function computeUsageStats(processes, reuseLogs) {
|
|
188
|
+
return processes.map(p => {
|
|
189
|
+
const matching = reuseLogs.filter(l => l.process_key === p.key);
|
|
190
|
+
const successes = matching.filter(l => l.success).length;
|
|
191
|
+
const lastLog = matching.length > 0
|
|
192
|
+
? matching[matching.length - 1].timestamp
|
|
193
|
+
: null;
|
|
194
|
+
return {
|
|
195
|
+
key: p.key,
|
|
196
|
+
timesUsed: matching.length,
|
|
197
|
+
successRate: matching.length > 0 ? successes / matching.length : 1,
|
|
198
|
+
lastUsed: lastLog,
|
|
199
|
+
};
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=process-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-lifecycle.js","sourceRoot":"","sources":["../../../src/service/cron/process-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface CronJobConfig {
|
|
2
|
+
enabled: boolean;
|
|
3
|
+
intervalMinutes: number;
|
|
4
|
+
}
|
|
5
|
+
export interface CronConfig {
|
|
6
|
+
jobs: Record<string, CronJobConfig>;
|
|
7
|
+
}
|
|
8
|
+
export declare function loadCronConfig(): Promise<CronConfig>;
|
|
9
|
+
export declare function saveCronConfig(config: CronConfig): Promise<void>;
|
|
10
|
+
export interface CronJobStatus {
|
|
11
|
+
name: string;
|
|
12
|
+
enabled: boolean;
|
|
13
|
+
intervalMinutes: number;
|
|
14
|
+
running: boolean;
|
|
15
|
+
lastRunAt: string | null;
|
|
16
|
+
lastResult: string | null;
|
|
17
|
+
lastError: string | null;
|
|
18
|
+
nextRunAt: string | null;
|
|
19
|
+
}
|
|
20
|
+
export interface CronStatus {
|
|
21
|
+
jobs: CronJobStatus[];
|
|
22
|
+
}
|
|
23
|
+
export declare class CronScheduler {
|
|
24
|
+
private jobs;
|
|
25
|
+
private config;
|
|
26
|
+
start(): Promise<void>;
|
|
27
|
+
stop(): void;
|
|
28
|
+
getStatus(): CronStatus;
|
|
29
|
+
runJob(name: string): Promise<string>;
|
|
30
|
+
reload(): Promise<void>;
|
|
31
|
+
private startJob;
|
|
32
|
+
private tick;
|
|
33
|
+
private executeJob;
|
|
34
|
+
}
|
|
35
|
+
export declare function getCronScheduler(): CronScheduler;
|
|
36
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/service/cron/scheduler.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACvC;AAcD,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC,CAY1D;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtE;AAsED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,aAAa,EAAE,CAAC;CACzB;AAeD,qBAAa,aAAa;IACtB,OAAO,CAAC,IAAI,CAAiC;IAC7C,OAAO,CAAC,MAAM,CAA2B;IAEnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B,IAAI,IAAI,IAAI;IAOZ,SAAS,IAAI,UAAU;IAwBjB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAcrC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B,OAAO,CAAC,QAAQ;YAgBF,IAAI;YAOJ,UAAU;CAwC3B;AAKD,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
2
|
+
// CRON SCHEDULER
|
|
3
|
+
// Runs periodic background jobs inside the service daemon.
|
|
4
|
+
// Jobs execute directly (not through the queue) to avoid competing with
|
|
5
|
+
// user-submitted tasks for the 10-slot queue.
|
|
6
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
7
|
+
import { promises as fs } from 'fs';
|
|
8
|
+
import { syncCalendar } from '../../commands/cal.js';
|
|
9
|
+
import { processInbox } from '../../commands/inbox.js';
|
|
10
|
+
import { generateRecurrences } from '../../commands/recurrence.js';
|
|
11
|
+
import { evaluateProcessLifecycle } from './process-lifecycle.js';
|
|
12
|
+
import { checkPampMail } from './pamp-checker.js';
|
|
13
|
+
import { getEntityIndex } from '../../entities/entity-index.js';
|
|
14
|
+
import { getEmbeddingIndex } from '../../entities/embedding-index.js';
|
|
15
|
+
import { analyzeFeedback } from './feedback-analysis.js';
|
|
16
|
+
import { getCronConfigPath, getVaultConfigDir } from '../../paths.js';
|
|
17
|
+
const DEFAULT_CONFIG = {
|
|
18
|
+
jobs: {
|
|
19
|
+
'cal-sync': { enabled: false, intervalMinutes: 60 },
|
|
20
|
+
'inbox-import': { enabled: false, intervalMinutes: 30 },
|
|
21
|
+
'recurrence-generate': { enabled: false, intervalMinutes: 1440 },
|
|
22
|
+
'process-lifecycle': { enabled: false, intervalMinutes: 60 },
|
|
23
|
+
'pamp-check': { enabled: false, intervalMinutes: 15 },
|
|
24
|
+
'embedding-sync': { enabled: false, intervalMinutes: 1440 },
|
|
25
|
+
'feedback-analysis': { enabled: false, intervalMinutes: 1440 },
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
export async function loadCronConfig() {
|
|
29
|
+
try {
|
|
30
|
+
const configPath = await getCronConfigPath();
|
|
31
|
+
const raw = await fs.readFile(configPath, 'utf-8');
|
|
32
|
+
const parsed = JSON.parse(raw);
|
|
33
|
+
// Merge with defaults so new jobs are always present
|
|
34
|
+
return {
|
|
35
|
+
jobs: { ...DEFAULT_CONFIG.jobs, ...parsed.jobs },
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return structuredClone(DEFAULT_CONFIG);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export async function saveCronConfig(config) {
|
|
43
|
+
const dir = await getVaultConfigDir();
|
|
44
|
+
await fs.mkdir(dir, { recursive: true });
|
|
45
|
+
const configPath = await getCronConfigPath();
|
|
46
|
+
await fs.writeFile(configPath, JSON.stringify(config, null, 2));
|
|
47
|
+
}
|
|
48
|
+
const JOB_DEFS = [
|
|
49
|
+
{
|
|
50
|
+
name: 'cal-sync',
|
|
51
|
+
async run() {
|
|
52
|
+
const result = await syncCalendar();
|
|
53
|
+
return `${result.created} created, ${result.updated} updated, ${result.unchanged} unchanged`;
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'inbox-import',
|
|
58
|
+
async run() {
|
|
59
|
+
const result = await processInbox();
|
|
60
|
+
return `${result.processed} processed, ${result.skipped} skipped`;
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: 'recurrence-generate',
|
|
65
|
+
async run() {
|
|
66
|
+
const result = await generateRecurrences();
|
|
67
|
+
return `${result.created} created, ${result.skipped} skipped`;
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'process-lifecycle',
|
|
72
|
+
async run() {
|
|
73
|
+
return evaluateProcessLifecycle();
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: 'pamp-check',
|
|
78
|
+
async run() {
|
|
79
|
+
const result = await checkPampMail();
|
|
80
|
+
if (result.skipped)
|
|
81
|
+
return 'skipped (PAMP not configured)';
|
|
82
|
+
return `${result.fetched} fetched, ${result.errors} errors`;
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: 'embedding-sync',
|
|
87
|
+
async run() {
|
|
88
|
+
const embeddingIndex = getEmbeddingIndex();
|
|
89
|
+
if (!embeddingIndex.isLoaded)
|
|
90
|
+
return 'skipped (not loaded)';
|
|
91
|
+
const entityIndex = getEntityIndex();
|
|
92
|
+
if (!entityIndex.isBuilt)
|
|
93
|
+
return 'skipped (entity index not built)';
|
|
94
|
+
const result = await embeddingIndex.sync(entityIndex);
|
|
95
|
+
return `${result.added} added, ${result.updated} updated, ${result.removed} removed`;
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: 'feedback-analysis',
|
|
100
|
+
async run() {
|
|
101
|
+
return analyzeFeedback();
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
];
|
|
105
|
+
export class CronScheduler {
|
|
106
|
+
jobs = new Map();
|
|
107
|
+
config = null;
|
|
108
|
+
async start() {
|
|
109
|
+
this.config = await loadCronConfig();
|
|
110
|
+
for (const def of JOB_DEFS) {
|
|
111
|
+
const jobConfig = this.config.jobs[def.name];
|
|
112
|
+
if (!jobConfig?.enabled)
|
|
113
|
+
continue;
|
|
114
|
+
this.startJob(def, jobConfig);
|
|
115
|
+
}
|
|
116
|
+
const enabled = JOB_DEFS.filter(d => this.config.jobs[d.name]?.enabled).length;
|
|
117
|
+
if (enabled > 0) {
|
|
118
|
+
console.log(`Cron scheduler: ${enabled} job(s) active`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
stop() {
|
|
122
|
+
for (const [, job] of this.jobs) {
|
|
123
|
+
clearInterval(job.timer);
|
|
124
|
+
}
|
|
125
|
+
this.jobs.clear();
|
|
126
|
+
}
|
|
127
|
+
getStatus() {
|
|
128
|
+
const config = this.config;
|
|
129
|
+
if (!config) {
|
|
130
|
+
return { jobs: [] };
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
jobs: JOB_DEFS.map(def => {
|
|
134
|
+
const jobConfig = config.jobs[def.name];
|
|
135
|
+
const running = this.jobs.get(def.name);
|
|
136
|
+
return {
|
|
137
|
+
name: def.name,
|
|
138
|
+
enabled: jobConfig?.enabled ?? false,
|
|
139
|
+
intervalMinutes: jobConfig?.intervalMinutes ?? 0,
|
|
140
|
+
running: running?.running ?? false,
|
|
141
|
+
lastRunAt: running?.lastRunAt?.toISOString() ?? null,
|
|
142
|
+
lastResult: running?.lastResult ?? null,
|
|
143
|
+
lastError: running?.lastError ?? null,
|
|
144
|
+
nextRunAt: running?.nextRunAt?.toISOString() ?? null,
|
|
145
|
+
};
|
|
146
|
+
}),
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
async runJob(name) {
|
|
150
|
+
const def = JOB_DEFS.find(d => d.name === name);
|
|
151
|
+
if (!def) {
|
|
152
|
+
throw new Error(`Unknown cron job: ${name}`);
|
|
153
|
+
}
|
|
154
|
+
const state = this.jobs.get(name);
|
|
155
|
+
if (state?.running) {
|
|
156
|
+
throw new Error(`Job "${name}" is already running`);
|
|
157
|
+
}
|
|
158
|
+
return this.executeJob(def);
|
|
159
|
+
}
|
|
160
|
+
async reload() {
|
|
161
|
+
this.stop();
|
|
162
|
+
await this.start();
|
|
163
|
+
}
|
|
164
|
+
startJob(def, jobConfig) {
|
|
165
|
+
const intervalMs = jobConfig.intervalMinutes * 60 * 1000;
|
|
166
|
+
const now = new Date();
|
|
167
|
+
const state = {
|
|
168
|
+
timer: setInterval(() => this.tick(def), intervalMs),
|
|
169
|
+
running: false,
|
|
170
|
+
lastRunAt: null,
|
|
171
|
+
lastResult: null,
|
|
172
|
+
lastError: null,
|
|
173
|
+
nextRunAt: new Date(now.getTime() + intervalMs),
|
|
174
|
+
};
|
|
175
|
+
this.jobs.set(def.name, state);
|
|
176
|
+
}
|
|
177
|
+
async tick(def) {
|
|
178
|
+
const state = this.jobs.get(def.name);
|
|
179
|
+
if (!state || state.running)
|
|
180
|
+
return; // skip if still running
|
|
181
|
+
await this.executeJob(def);
|
|
182
|
+
}
|
|
183
|
+
async executeJob(def) {
|
|
184
|
+
let state = this.jobs.get(def.name);
|
|
185
|
+
if (!state) {
|
|
186
|
+
// Job triggered via `runJob` but not scheduled — create temp state
|
|
187
|
+
state = {
|
|
188
|
+
timer: null,
|
|
189
|
+
running: false,
|
|
190
|
+
lastRunAt: null,
|
|
191
|
+
lastResult: null,
|
|
192
|
+
lastError: null,
|
|
193
|
+
nextRunAt: null,
|
|
194
|
+
};
|
|
195
|
+
this.jobs.set(def.name, state);
|
|
196
|
+
}
|
|
197
|
+
state.running = true;
|
|
198
|
+
const startTime = new Date();
|
|
199
|
+
try {
|
|
200
|
+
const result = await def.run();
|
|
201
|
+
state.lastRunAt = startTime;
|
|
202
|
+
state.lastResult = result;
|
|
203
|
+
state.lastError = null;
|
|
204
|
+
console.log(`[cron] ${def.name}: ${result}`);
|
|
205
|
+
return result;
|
|
206
|
+
}
|
|
207
|
+
catch (err) {
|
|
208
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
209
|
+
state.lastRunAt = startTime;
|
|
210
|
+
state.lastError = msg;
|
|
211
|
+
console.error(`[cron] ${def.name} error: ${msg}`);
|
|
212
|
+
throw err;
|
|
213
|
+
}
|
|
214
|
+
finally {
|
|
215
|
+
state.running = false;
|
|
216
|
+
// Update nextRunAt
|
|
217
|
+
const jobConfig = this.config?.jobs[def.name];
|
|
218
|
+
if (jobConfig?.enabled) {
|
|
219
|
+
state.nextRunAt = new Date(Date.now() + jobConfig.intervalMinutes * 60 * 1000);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
// Singleton
|
|
225
|
+
let scheduler = null;
|
|
226
|
+
export function getCronScheduler() {
|
|
227
|
+
if (!scheduler) {
|
|
228
|
+
scheduler = new CronScheduler();
|
|
229
|
+
}
|
|
230
|
+
return scheduler;
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../../src/service/cron/scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { PID_FILE, SOCKET_PATH } from '../paths.js';
|
|
2
|
+
export interface DaemonStatus {
|
|
3
|
+
running: boolean;
|
|
4
|
+
pid: number | null;
|
|
5
|
+
socketPath: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Read the PID from the pid file.
|
|
9
|
+
*/
|
|
10
|
+
export declare function readPid(): Promise<number | null>;
|
|
11
|
+
/**
|
|
12
|
+
* Get the current daemon status.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getDaemonStatus(): Promise<DaemonStatus>;
|
|
15
|
+
/**
|
|
16
|
+
* Start the daemon process.
|
|
17
|
+
*/
|
|
18
|
+
export declare function startDaemon(): Promise<DaemonStatus>;
|
|
19
|
+
/**
|
|
20
|
+
* Stop the daemon process.
|
|
21
|
+
*/
|
|
22
|
+
export declare function stopDaemon(): Promise<DaemonStatus>;
|
|
23
|
+
export { SOCKET_PATH, PID_FILE };
|
|
24
|
+
//# sourceMappingURL=daemon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/service/daemon.ts"],"names":[],"mappings":"AAMA,OAAO,EAAc,QAAQ,EAAE,WAAW,EAAuC,MAAM,aAAa,CAAC;AAErG,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACtB;AAWD;;GAEG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAStD;AAmCD;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAc7D;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC,CAuEzD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC,CAuCxD;AAED,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC"}
|