@hera-al/server 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +325 -0
  3. package/bundled/apple-notes/SKILL.md +77 -0
  4. package/bundled/apple-reminders/SKILL.md +96 -0
  5. package/bundled/blogwatcher/SKILL.md +69 -0
  6. package/bundled/camsnap/SKILL.md +45 -0
  7. package/bundled/discord/SKILL.md +578 -0
  8. package/bundled/gemini/SKILL.md +43 -0
  9. package/bundled/gifgrep/SKILL.md +79 -0
  10. package/bundled/github/SKILL.md +77 -0
  11. package/bundled/gog/SKILL.md +116 -0
  12. package/bundled/goplaces/SKILL.md +52 -0
  13. package/bundled/himalaya/SKILL.md +257 -0
  14. package/bundled/himalaya/references/configuration.md +184 -0
  15. package/bundled/himalaya/references/message-composition.md +199 -0
  16. package/bundled/homebrew/SKILL.md +82 -0
  17. package/bundled/local-places/SERVER_README.md +101 -0
  18. package/bundled/local-places/SKILL.md +102 -0
  19. package/bundled/local-places/pyproject.toml +21 -0
  20. package/bundled/local-places/src/local_places/__init__.py +2 -0
  21. package/bundled/local-places/src/local_places/google_places.py +314 -0
  22. package/bundled/local-places/src/local_places/main.py +65 -0
  23. package/bundled/local-places/src/local_places/schemas.py +107 -0
  24. package/bundled/markitdown/SKILL.md +96 -0
  25. package/bundled/mcporter/SKILL.md +61 -0
  26. package/bundled/merge-pr/SKILL.md +187 -0
  27. package/bundled/merge-pr/agents/openai.yaml +4 -0
  28. package/bundled/nano-banana-pro/SKILL.md +58 -0
  29. package/bundled/nano-banana-pro/scripts/generate_image.py +184 -0
  30. package/bundled/nano-pdf/SKILL.md +38 -0
  31. package/bundled/open-prose/README.md +25 -0
  32. package/bundled/open-prose/index.ts +5 -0
  33. package/bundled/open-prose/openclaw.plugin.json +11 -0
  34. package/bundled/open-prose/package.json +15 -0
  35. package/bundled/open-prose/skills/prose/LICENSE +21 -0
  36. package/bundled/open-prose/skills/prose/SKILL.md +323 -0
  37. package/bundled/open-prose/skills/prose/alt-borges.md +141 -0
  38. package/bundled/open-prose/skills/prose/alts/arabian-nights.md +358 -0
  39. package/bundled/open-prose/skills/prose/alts/borges.md +360 -0
  40. package/bundled/open-prose/skills/prose/alts/folk.md +322 -0
  41. package/bundled/open-prose/skills/prose/alts/homer.md +346 -0
  42. package/bundled/open-prose/skills/prose/alts/kafka.md +373 -0
  43. package/bundled/open-prose/skills/prose/compiler.md +2971 -0
  44. package/bundled/open-prose/skills/prose/examples/01-hello-world.prose +4 -0
  45. package/bundled/open-prose/skills/prose/examples/02-research-and-summarize.prose +6 -0
  46. package/bundled/open-prose/skills/prose/examples/03-code-review.prose +17 -0
  47. package/bundled/open-prose/skills/prose/examples/04-write-and-refine.prose +14 -0
  48. package/bundled/open-prose/skills/prose/examples/05-debug-issue.prose +20 -0
  49. package/bundled/open-prose/skills/prose/examples/06-explain-codebase.prose +17 -0
  50. package/bundled/open-prose/skills/prose/examples/07-refactor.prose +20 -0
  51. package/bundled/open-prose/skills/prose/examples/08-blog-post.prose +20 -0
  52. package/bundled/open-prose/skills/prose/examples/09-research-with-agents.prose +25 -0
  53. package/bundled/open-prose/skills/prose/examples/10-code-review-agents.prose +32 -0
  54. package/bundled/open-prose/skills/prose/examples/11-skills-and-imports.prose +27 -0
  55. package/bundled/open-prose/skills/prose/examples/12-secure-agent-permissions.prose +43 -0
  56. package/bundled/open-prose/skills/prose/examples/13-variables-and-context.prose +51 -0
  57. package/bundled/open-prose/skills/prose/examples/14-composition-blocks.prose +48 -0
  58. package/bundled/open-prose/skills/prose/examples/15-inline-sequences.prose +23 -0
  59. package/bundled/open-prose/skills/prose/examples/16-parallel-reviews.prose +19 -0
  60. package/bundled/open-prose/skills/prose/examples/17-parallel-research.prose +19 -0
  61. package/bundled/open-prose/skills/prose/examples/18-mixed-parallel-sequential.prose +36 -0
  62. package/bundled/open-prose/skills/prose/examples/19-advanced-parallel.prose +71 -0
  63. package/bundled/open-prose/skills/prose/examples/20-fixed-loops.prose +20 -0
  64. package/bundled/open-prose/skills/prose/examples/21-pipeline-operations.prose +35 -0
  65. package/bundled/open-prose/skills/prose/examples/22-error-handling.prose +51 -0
  66. package/bundled/open-prose/skills/prose/examples/23-retry-with-backoff.prose +63 -0
  67. package/bundled/open-prose/skills/prose/examples/24-choice-blocks.prose +86 -0
  68. package/bundled/open-prose/skills/prose/examples/25-conditionals.prose +114 -0
  69. package/bundled/open-prose/skills/prose/examples/26-parameterized-blocks.prose +100 -0
  70. package/bundled/open-prose/skills/prose/examples/27-string-interpolation.prose +105 -0
  71. package/bundled/open-prose/skills/prose/examples/28-automated-pr-review.prose +37 -0
  72. package/bundled/open-prose/skills/prose/examples/28-gas-town.prose +1572 -0
  73. package/bundled/open-prose/skills/prose/examples/29-captains-chair.prose +218 -0
  74. package/bundled/open-prose/skills/prose/examples/30-captains-chair-simple.prose +42 -0
  75. package/bundled/open-prose/skills/prose/examples/31-captains-chair-with-memory.prose +145 -0
  76. package/bundled/open-prose/skills/prose/examples/33-pr-review-autofix.prose +168 -0
  77. package/bundled/open-prose/skills/prose/examples/34-content-pipeline.prose +204 -0
  78. package/bundled/open-prose/skills/prose/examples/35-feature-factory.prose +296 -0
  79. package/bundled/open-prose/skills/prose/examples/36-bug-hunter.prose +237 -0
  80. package/bundled/open-prose/skills/prose/examples/37-the-forge.prose +1474 -0
  81. package/bundled/open-prose/skills/prose/examples/38-skill-scan.prose +455 -0
  82. package/bundled/open-prose/skills/prose/examples/39-architect-by-simulation.prose +277 -0
  83. package/bundled/open-prose/skills/prose/examples/40-rlm-self-refine.prose +32 -0
  84. package/bundled/open-prose/skills/prose/examples/41-rlm-divide-conquer.prose +38 -0
  85. package/bundled/open-prose/skills/prose/examples/42-rlm-filter-recurse.prose +46 -0
  86. package/bundled/open-prose/skills/prose/examples/43-rlm-pairwise.prose +50 -0
  87. package/bundled/open-prose/skills/prose/examples/44-run-endpoint-ux-test.prose +261 -0
  88. package/bundled/open-prose/skills/prose/examples/45-plugin-release.prose +159 -0
  89. package/bundled/open-prose/skills/prose/examples/45-run-endpoint-ux-test-with-remediation.prose +637 -0
  90. package/bundled/open-prose/skills/prose/examples/46-run-endpoint-ux-test-fast.prose +148 -0
  91. package/bundled/open-prose/skills/prose/examples/46-workflow-crystallizer.prose +225 -0
  92. package/bundled/open-prose/skills/prose/examples/47-language-self-improvement.prose +356 -0
  93. package/bundled/open-prose/skills/prose/examples/48-habit-miner.prose +445 -0
  94. package/bundled/open-prose/skills/prose/examples/49-prose-run-retrospective.prose +210 -0
  95. package/bundled/open-prose/skills/prose/examples/README.md +391 -0
  96. package/bundled/open-prose/skills/prose/examples/roadmap/README.md +22 -0
  97. package/bundled/open-prose/skills/prose/examples/roadmap/iterative-refinement.prose +20 -0
  98. package/bundled/open-prose/skills/prose/examples/roadmap/parallel-review.prose +18 -0
  99. package/bundled/open-prose/skills/prose/examples/roadmap/simple-pipeline.prose +17 -0
  100. package/bundled/open-prose/skills/prose/examples/roadmap/syntax/open-prose-syntax.prose +223 -0
  101. package/bundled/open-prose/skills/prose/guidance/antipatterns.md +951 -0
  102. package/bundled/open-prose/skills/prose/guidance/patterns.md +700 -0
  103. package/bundled/open-prose/skills/prose/guidance/system-prompt.md +180 -0
  104. package/bundled/open-prose/skills/prose/help.md +144 -0
  105. package/bundled/open-prose/skills/prose/lib/README.md +108 -0
  106. package/bundled/open-prose/skills/prose/lib/calibrator.prose +215 -0
  107. package/bundled/open-prose/skills/prose/lib/cost-analyzer.prose +174 -0
  108. package/bundled/open-prose/skills/prose/lib/error-forensics.prose +250 -0
  109. package/bundled/open-prose/skills/prose/lib/inspector.prose +196 -0
  110. package/bundled/open-prose/skills/prose/lib/profiler.prose +460 -0
  111. package/bundled/open-prose/skills/prose/lib/program-improver.prose +275 -0
  112. package/bundled/open-prose/skills/prose/lib/project-memory.prose +118 -0
  113. package/bundled/open-prose/skills/prose/lib/user-memory.prose +93 -0
  114. package/bundled/open-prose/skills/prose/lib/vm-improver.prose +243 -0
  115. package/bundled/open-prose/skills/prose/primitives/session.md +593 -0
  116. package/bundled/open-prose/skills/prose/prose.md +1237 -0
  117. package/bundled/open-prose/skills/prose/state/filesystem.md +498 -0
  118. package/bundled/open-prose/skills/prose/state/in-context.md +384 -0
  119. package/bundled/open-prose/skills/prose/state/postgres.md +880 -0
  120. package/bundled/open-prose/skills/prose/state/sqlite.md +574 -0
  121. package/bundled/peekaboo/SKILL.md +190 -0
  122. package/bundled/prepare-pr/SKILL.md +277 -0
  123. package/bundled/prepare-pr/agents/openai.yaml +4 -0
  124. package/bundled/review-pr/SKILL.md +228 -0
  125. package/bundled/review-pr/agents/openai.yaml +4 -0
  126. package/bundled/sag/SKILL.md +87 -0
  127. package/bundled/skill-creator/SKILL.md +370 -0
  128. package/bundled/skill-creator/license.txt +202 -0
  129. package/bundled/skill-creator/scripts/init_skill.py +378 -0
  130. package/bundled/skill-creator/scripts/package_skill.py +111 -0
  131. package/bundled/skill-creator/scripts/quick_validate.py +101 -0
  132. package/bundled/spotify-player/SKILL.md +64 -0
  133. package/bundled/ssh/SKILL.md +119 -0
  134. package/bundled/summarize/SKILL.md +87 -0
  135. package/bundled/video-frames/SKILL.md +46 -0
  136. package/bundled/video-frames/scripts/frame.sh +81 -0
  137. package/bundled/voice-call/SKILL.md +45 -0
  138. package/bundled/wacli/SKILL.md +72 -0
  139. package/bundled/weather/SKILL.md +54 -0
  140. package/dist/agent/agent-service.d.ts +88 -0
  141. package/dist/agent/agent-service.js +1 -0
  142. package/dist/agent/message-queue.d.ts +24 -0
  143. package/dist/agent/message-queue.js +1 -0
  144. package/dist/agent/prompt-builder.d.ts +58 -0
  145. package/dist/agent/prompt-builder.js +1 -0
  146. package/dist/agent/session-agent.d.ts +197 -0
  147. package/dist/agent/session-agent.js +1 -0
  148. package/dist/agent/session-db.d.ts +26 -0
  149. package/dist/agent/session-db.js +1 -0
  150. package/dist/agent/session-error-handler.d.ts +37 -0
  151. package/dist/agent/session-error-handler.js +1 -0
  152. package/dist/agent/session-manager.d.ts +19 -0
  153. package/dist/agent/session-manager.js +1 -0
  154. package/dist/agent/workspace-files.d.ts +51 -0
  155. package/dist/agent/workspace-files.js +1 -0
  156. package/dist/auth/auth-middleware.d.ts +9 -0
  157. package/dist/auth/auth-middleware.js +1 -0
  158. package/dist/auth/node-signature-db.d.ts +30 -0
  159. package/dist/auth/node-signature-db.js +1 -0
  160. package/dist/auth/token-db.d.ts +38 -0
  161. package/dist/auth/token-db.js +1 -0
  162. package/dist/browser/browser-service.d.ts +9 -0
  163. package/dist/browser/browser-service.js +1 -0
  164. package/dist/channels/channel.d.ts +2 -0
  165. package/dist/channels/channel.js +1 -0
  166. package/dist/channels/responses.d.ts +21 -0
  167. package/dist/channels/responses.js +1 -0
  168. package/dist/commands/clear.d.ts +7 -0
  169. package/dist/commands/clear.js +1 -0
  170. package/dist/commands/cmd.d.ts +7 -0
  171. package/dist/commands/cmd.js +1 -0
  172. package/dist/commands/coder.d.ts +12 -0
  173. package/dist/commands/coder.js +1 -0
  174. package/dist/commands/command-registry.d.ts +12 -0
  175. package/dist/commands/command-registry.js +1 -0
  176. package/dist/commands/command.d.ts +22 -0
  177. package/dist/commands/command.js +1 -0
  178. package/dist/commands/compact.d.ts +7 -0
  179. package/dist/commands/compact.js +1 -0
  180. package/dist/commands/customsubagents.d.ts +15 -0
  181. package/dist/commands/customsubagents.js +1 -0
  182. package/dist/commands/help.d.ts +9 -0
  183. package/dist/commands/help.js +1 -0
  184. package/dist/commands/mcp.d.ts +9 -0
  185. package/dist/commands/mcp.js +1 -0
  186. package/dist/commands/model.d.ts +22 -0
  187. package/dist/commands/model.js +1 -0
  188. package/dist/commands/models.d.ts +11 -0
  189. package/dist/commands/models.js +1 -0
  190. package/dist/commands/new.d.ts +7 -0
  191. package/dist/commands/new.js +1 -0
  192. package/dist/commands/plugin.d.ts +7 -0
  193. package/dist/commands/plugin.js +1 -0
  194. package/dist/commands/sandbox.d.ts +12 -0
  195. package/dist/commands/sandbox.js +1 -0
  196. package/dist/commands/showtool.d.ts +12 -0
  197. package/dist/commands/showtool.js +1 -0
  198. package/dist/commands/status.d.ts +24 -0
  199. package/dist/commands/status.js +1 -0
  200. package/dist/commands/stop.d.ts +10 -0
  201. package/dist/commands/stop.js +1 -0
  202. package/dist/commands/subagents.d.ts +12 -0
  203. package/dist/commands/subagents.js +1 -0
  204. package/dist/commands/usage.d.ts +25 -0
  205. package/dist/commands/usage.js +1 -0
  206. package/dist/commands/useplugin.d.ts +7 -0
  207. package/dist/commands/useplugin.js +1 -0
  208. package/dist/config-watcher.d.ts +14 -0
  209. package/dist/config-watcher.js +1 -0
  210. package/dist/config.d.ts +267 -0
  211. package/dist/config.js +1 -0
  212. package/dist/cron/cron-service.d.ts +57 -0
  213. package/dist/cron/cron-service.js +1 -0
  214. package/dist/cron/heartbeat-token.d.ts +29 -0
  215. package/dist/cron/heartbeat-token.js +1 -0
  216. package/dist/cron/schedule.d.ts +3 -0
  217. package/dist/cron/schedule.js +1 -0
  218. package/dist/cron/store.d.ts +4 -0
  219. package/dist/cron/store.js +1 -0
  220. package/dist/cron/types.d.ts +47 -0
  221. package/dist/cron/types.js +1 -0
  222. package/dist/gateway/bridge.d.ts +38 -0
  223. package/dist/gateway/bridge.js +1 -0
  224. package/dist/gateway/channel-manager.d.ts +45 -0
  225. package/dist/gateway/channel-manager.js +1 -0
  226. package/dist/gateway/channels/qr-image.d.ts +5 -0
  227. package/dist/gateway/channels/qr-image.js +1 -0
  228. package/dist/gateway/channels/telegram.d.ts +39 -0
  229. package/dist/gateway/channels/telegram.js +1 -0
  230. package/dist/gateway/channels/webchat.d.ts +51 -0
  231. package/dist/gateway/channels/webchat.js +1 -0
  232. package/dist/gateway/channels/whatsapp.d.ts +40 -0
  233. package/dist/gateway/channels/whatsapp.js +1 -0
  234. package/dist/gateway/node-registry.d.ts +38 -0
  235. package/dist/gateway/node-registry.js +1 -0
  236. package/dist/heracli/index.d.ts +3 -0
  237. package/dist/heracli/index.js +2 -0
  238. package/dist/heracli/logs.d.ts +13 -0
  239. package/dist/heracli/logs.js +1 -0
  240. package/dist/heracli/security/audit.d.ts +17 -0
  241. package/dist/heracli/security/audit.js +1 -0
  242. package/dist/heracli/security/checks/channel-policies.d.ts +6 -0
  243. package/dist/heracli/security/checks/channel-policies.js +1 -0
  244. package/dist/heracli/security/checks/credentials.d.ts +6 -0
  245. package/dist/heracli/security/checks/credentials.js +1 -0
  246. package/dist/heracli/security/checks/fs-permissions.d.ts +6 -0
  247. package/dist/heracli/security/checks/fs-permissions.js +1 -0
  248. package/dist/heracli/security/checks/network.d.ts +4 -0
  249. package/dist/heracli/security/checks/network.js +1 -0
  250. package/dist/heracli/security/report.d.ts +4 -0
  251. package/dist/heracli/security/report.js +1 -0
  252. package/dist/index.d.ts +3 -0
  253. package/dist/index.js +2 -0
  254. package/dist/installer/hera.d.ts +3 -0
  255. package/dist/installer/hera.js +2 -0
  256. package/dist/media/message-processor.d.ts +23 -0
  257. package/dist/media/message-processor.js +1 -0
  258. package/dist/memory/memory-manager.d.ts +21 -0
  259. package/dist/memory/memory-manager.js +1 -0
  260. package/dist/memory/memory-provider.d.ts +22 -0
  261. package/dist/memory/memory-provider.js +1 -0
  262. package/dist/memory/memory-search.d.ts +102 -0
  263. package/dist/memory/memory-search.js +1 -0
  264. package/dist/memory/recall-strategies.d.ts +2 -0
  265. package/dist/memory/recall-strategies.js +1 -0
  266. package/dist/nostromo/auth.d.ts +29 -0
  267. package/dist/nostromo/auth.js +1 -0
  268. package/dist/nostromo/nostromo.d.ts +23 -0
  269. package/dist/nostromo/nostromo.js +1 -0
  270. package/dist/nostromo/ui-html-layout.d.ts +3 -0
  271. package/dist/nostromo/ui-html-layout.js +1 -0
  272. package/dist/nostromo/ui-html-modals.d.ts +3 -0
  273. package/dist/nostromo/ui-html-modals.js +1 -0
  274. package/dist/nostromo/ui-js-agent.d.ts +3 -0
  275. package/dist/nostromo/ui-js-agent.js +1 -0
  276. package/dist/nostromo/ui-js-channels.d.ts +3 -0
  277. package/dist/nostromo/ui-js-channels.js +1 -0
  278. package/dist/nostromo/ui-js-competences.d.ts +3 -0
  279. package/dist/nostromo/ui-js-competences.js +1 -0
  280. package/dist/nostromo/ui-js-config.d.ts +3 -0
  281. package/dist/nostromo/ui-js-config.js +1 -0
  282. package/dist/nostromo/ui-js-core.d.ts +3 -0
  283. package/dist/nostromo/ui-js-core.js +1 -0
  284. package/dist/nostromo/ui-js-ops.d.ts +3 -0
  285. package/dist/nostromo/ui-js-ops.js +1 -0
  286. package/dist/nostromo/ui-js-prompts.d.ts +3 -0
  287. package/dist/nostromo/ui-js-prompts.js +1 -0
  288. package/dist/nostromo/ui-styles.d.ts +3 -0
  289. package/dist/nostromo/ui-styles.js +1 -0
  290. package/dist/nostromo/ui.d.ts +2 -0
  291. package/dist/nostromo/ui.js +1 -0
  292. package/dist/server.d.ts +80 -0
  293. package/dist/server.js +1 -0
  294. package/dist/stt/local-whisper.d.ts +9 -0
  295. package/dist/stt/local-whisper.js +1 -0
  296. package/dist/stt/openai-whisper.d.ts +14 -0
  297. package/dist/stt/openai-whisper.js +1 -0
  298. package/dist/stt/stt-loader.d.ts +4 -0
  299. package/dist/stt/stt-loader.js +1 -0
  300. package/dist/stt/stt-provider.d.ts +4 -0
  301. package/dist/stt/stt-provider.js +1 -0
  302. package/dist/tools/browser-tools.d.ts +9 -0
  303. package/dist/tools/browser-tools.js +1 -0
  304. package/dist/tools/cron-tools.d.ts +4 -0
  305. package/dist/tools/cron-tools.js +1 -0
  306. package/dist/tools/memory-tools.d.ts +3 -0
  307. package/dist/tools/memory-tools.js +1 -0
  308. package/dist/tools/message-tools.d.ts +5 -0
  309. package/dist/tools/message-tools.js +1 -0
  310. package/dist/tools/node-tools.d.ts +3 -0
  311. package/dist/tools/node-tools.js +1 -0
  312. package/dist/tools/server-tools.d.ts +2 -0
  313. package/dist/tools/server-tools.js +1 -0
  314. package/dist/tools/tts-tools.d.ts +3 -0
  315. package/dist/tools/tts-tools.js +1 -0
  316. package/dist/tts/tts-service.d.ts +19 -0
  317. package/dist/tts/tts-service.js +1 -0
  318. package/dist/utils/chunk.d.ts +3 -0
  319. package/dist/utils/chunk.js +1 -0
  320. package/dist/utils/logger.d.ts +16 -0
  321. package/dist/utils/logger.js +1 -0
  322. package/dist/utils/markdown/fences.d.ts +11 -0
  323. package/dist/utils/markdown/fences.js +1 -0
  324. package/dist/utils/markdown/ir.d.ts +33 -0
  325. package/dist/utils/markdown/ir.js +1 -0
  326. package/dist/utils/markdown/render.d.ts +19 -0
  327. package/dist/utils/markdown/render.js +1 -0
  328. package/dist/utils/markdown/tables.d.ts +3 -0
  329. package/dist/utils/markdown/tables.js +1 -0
  330. package/dist/utils/media-response.d.ts +29 -0
  331. package/dist/utils/media-response.js +1 -0
  332. package/dist/utils/package-paths.d.ts +5 -0
  333. package/dist/utils/package-paths.js +1 -0
  334. package/dist/utils/telegram-format.d.ts +13 -0
  335. package/dist/utils/telegram-format.js +1 -0
  336. package/installationPkg/.env.example +26 -0
  337. package/installationPkg/AGENTS.md +143 -0
  338. package/installationPkg/BOOTSTRAP.md +45 -0
  339. package/installationPkg/CBINT.json +16 -0
  340. package/installationPkg/HEARTBEAT.md +5 -0
  341. package/installationPkg/IDENTITY.md +7 -0
  342. package/installationPkg/SOUL.md +36 -0
  343. package/installationPkg/SYSTEM_PROMPT.md +55 -0
  344. package/installationPkg/SYSTEM_PROMPT_SUBAGENT.md +40 -0
  345. package/installationPkg/TOOLS.md +36 -0
  346. package/installationPkg/USER.md +11 -0
  347. package/installationPkg/config.example.yaml +291 -0
  348. package/package.json +95 -0
@@ -0,0 +1,384 @@
1
+ ---
2
+ role: in-context-state-management
3
+ summary: |
4
+ In-context state management using the narration protocol with text markers.
5
+ This approach tracks execution state within the conversation history itself.
6
+ The OpenProse VM "thinks aloud" to persist state—what you say becomes what you remember.
7
+ see-also:
8
+ - ../prose.md: VM execution semantics
9
+ - filesystem.md: File-system state management (alternative approach)
10
+ - sqlite.md: SQLite state management (experimental)
11
+ - postgres.md: PostgreSQL state management (experimental)
12
+ - ../primitives/session.md: Session context and compaction guidelines
13
+ ---
14
+
15
+ # In-Context State Management
16
+
17
+ This document describes how the OpenProse VM tracks execution state using **structured narration** in the conversation history. This is one of two state management approaches (the other being file-based state in `filesystem.md`).
18
+
19
+ ## Overview
20
+
21
+ In-context state uses text-prefixed markers to persist state within the conversation. The VM "thinks aloud" about execution—what you say becomes what you remember.
22
+
23
+ **Key principle:** Your conversation history IS the VM's working memory.
24
+
25
+ ---
26
+
27
+ ## When to Use In-Context State
28
+
29
+ In-context state is appropriate for:
30
+
31
+ | Factor | In-Context | Use File-Based Instead |
32
+ | ----------------- | --------------- | ---------------------- |
33
+ | Statement count | < 30 statements | >= 30 statements |
34
+ | Parallel branches | < 5 concurrent | >= 5 concurrent |
35
+ | Imported programs | 0-2 imports | >= 3 imports |
36
+ | Nested depth | <= 2 levels | > 2 levels |
37
+ | Expected duration | < 5 minutes | >= 5 minutes |
38
+
39
+ Announce your state mode at program start:
40
+
41
+ ```
42
+ OpenProse Program Start
43
+ State mode: in-context (program is small, fits in context)
44
+ ```
45
+
46
+ ---
47
+
48
+ ## The Narration Protocol
49
+
50
+ Use text-prefixed markers for each state change:
51
+
52
+ | Marker | Category | Usage |
53
+ | ---------- | -------------- | --------------------------------------- |
54
+ | [Program] | Program | Start, end, definition collection |
55
+ | [Position] | Position | Current statement being executed |
56
+ | [Binding] | Binding | Variable assignment or update |
57
+ | [Input] | Input | Receiving inputs from caller |
58
+ | [Output] | Output | Producing outputs for caller |
59
+ | [Import] | Import | Fetching and invoking imported programs |
60
+ | [Success] | Success | Session or block completion |
61
+ | [Warning] | Error | Failures and exceptions |
62
+ | [Parallel] | Parallel | Entering, branch status, joining |
63
+ | [Loop] | Loop | Iteration, condition evaluation |
64
+ | [Pipeline] | Pipeline | Stage progress |
65
+ | [Try] | Error handling | Try/catch/finally |
66
+ | [Flow] | Flow | Condition evaluation results |
67
+ | [Frame+] | Call Stack | Push new frame (block invocation) |
68
+ | [Frame-] | Call Stack | Pop frame (block completion) |
69
+
70
+ ---
71
+
72
+ ## Narration Patterns by Construct
73
+
74
+ ### Session Statements
75
+
76
+ ```
77
+ [Position] Executing: session "Research the topic"
78
+ [Task tool call]
79
+ [Success] Session complete: "Research found that..."
80
+ [Binding] let research = <result>
81
+ ```
82
+
83
+ ### Parallel Blocks
84
+
85
+ ```
86
+ [Parallel] Entering parallel block (3 branches, strategy: all)
87
+ - security: pending
88
+ - perf: pending
89
+ - style: pending
90
+ [Multiple Task calls]
91
+ [Parallel] Parallel complete:
92
+ - security = "No vulnerabilities found..."
93
+ - perf = "Performance is acceptable..."
94
+ - style = "Code follows conventions..."
95
+ [Binding] security, perf, style bound
96
+ ```
97
+
98
+ ### Loop Blocks
99
+
100
+ ```
101
+ [Loop] Starting loop until **task complete** (max: 5)
102
+
103
+ [Loop] Iteration 1 of max 5
104
+ [Position] session "Work on task"
105
+ [Success] Session complete
106
+ [Loop] Evaluating: **task complete**
107
+ [Flow] Not satisfied, continuing
108
+
109
+ [Loop] Iteration 2 of max 5
110
+ [Position] session "Work on task"
111
+ [Success] Session complete
112
+ [Loop] Evaluating: **task complete**
113
+ [Flow] Satisfied!
114
+
115
+ [Loop] Loop exited: condition satisfied at iteration 2
116
+ ```
117
+
118
+ ### Error Handling
119
+
120
+ ```
121
+ [Try] Entering try block
122
+ [Position] session "Risky operation"
123
+ [Warning] Session failed: connection timeout
124
+ [Binding] err = {message: "connection timeout"}
125
+ [Try] Executing catch block
126
+ [Position] session "Handle error" with context: err
127
+ [Success] Recovery complete
128
+ [Try] Executing finally block
129
+ [Position] session "Cleanup"
130
+ [Success] Cleanup complete
131
+ ```
132
+
133
+ ### Variable Bindings
134
+
135
+ ```
136
+ [Binding] let research = "AI safety research covers..." (mutable)
137
+ [Binding] const config = {model: "opus"} (immutable)
138
+ [Binding] research = "Updated research..." (reassignment, was: "AI safety...")
139
+ ```
140
+
141
+ ### Input/Output Bindings
142
+
143
+ ```
144
+ [Input] Inputs received:
145
+ topic = "quantum computing" (from caller)
146
+ depth = "deep" (from caller)
147
+
148
+ [Output] output findings = "Research shows..." (will return to caller)
149
+ [Output] output sources = ["arxiv:2401.1234", ...] (will return to caller)
150
+ ```
151
+
152
+ ### Block Invocation and Call Stack
153
+
154
+ Track block invocations with frame markers:
155
+
156
+ ```
157
+ [Position] do process(data, 5)
158
+ [Frame+] Entering block: process (execution_id: 1, depth: 1)
159
+ Arguments: chunk=data, depth=5
160
+
161
+ [Position] session "Split into parts"
162
+ [Task tool call]
163
+ [Success] Session complete
164
+ [Binding] let parts = <result> (execution_id: 1)
165
+
166
+ [Position] do process(parts[0], 4)
167
+ [Frame+] Entering block: process (execution_id: 2, depth: 2)
168
+ Arguments: chunk=parts[0], depth=4
169
+ Parent: execution_id 1
170
+
171
+ [Position] session "Split into parts"
172
+ [Task tool call]
173
+ [Success] Session complete
174
+ [Binding] let parts = <result> (execution_id: 2) # Shadows parent's 'parts'
175
+
176
+ ... (continues recursively)
177
+
178
+ [Frame-] Exiting block: process (execution_id: 2)
179
+
180
+ [Position] session "Combine results"
181
+ [Task tool call]
182
+ [Success] Session complete
183
+
184
+ [Frame-] Exiting block: process (execution_id: 1)
185
+ ```
186
+
187
+ **Key points:**
188
+
189
+ - Each `[Frame+]` must have a matching `[Frame-]`
190
+ - `execution_id` uniquely identifies each invocation
191
+ - `depth` shows call stack depth (1 = first level)
192
+ - Bindings include `(execution_id: N)` to indicate scope
193
+ - Nested frames show `Parent: execution_id N` for the scope chain
194
+
195
+ ### Scoped Binding Narration
196
+
197
+ When inside a block invocation, always include the execution_id:
198
+
199
+ ```
200
+ [Binding] let result = "computed value" (execution_id: 43)
201
+ ```
202
+
203
+ For variable resolution across scopes:
204
+
205
+ ```
206
+ [Binding] Resolving 'config': found in execution_id 41 (parent scope)
207
+ ```
208
+
209
+ ### Program Imports
210
+
211
+ ```
212
+ [Import] Importing: @alice/research
213
+ Fetching from: https://p.prose.md/@alice/research
214
+ Inputs expected: [topic, depth]
215
+ Outputs provided: [findings, sources]
216
+ Registered as: research
217
+
218
+ [Import] Invoking: research(topic: "quantum computing")
219
+ [Input] Passing inputs:
220
+ topic = "quantum computing"
221
+
222
+ [... imported program execution ...]
223
+
224
+ [Output] Received outputs:
225
+ findings = "Quantum computing uses..."
226
+ sources = ["arxiv:2401.1234"]
227
+
228
+ [Import] Import complete: research
229
+ [Binding] result = { findings: "...", sources: [...] }
230
+ ```
231
+
232
+ ---
233
+
234
+ ## Context Serialization
235
+
236
+ **In-context state passes values, not references.** This is the key difference from file-based and PostgreSQL state. The VM holds binding values directly in conversation history.
237
+
238
+ When passing context to sessions, format appropriately:
239
+
240
+ | Context Size | Strategy |
241
+ | --------------- | ----------------------- |
242
+ | < 2000 chars | Pass verbatim |
243
+ | 2000-8000 chars | Summarize to key points |
244
+ | > 8000 chars | Extract essentials only |
245
+
246
+ **Format:**
247
+
248
+ ```
249
+ Context provided:
250
+ ---
251
+ research: "Key findings about AI safety..."
252
+ analysis: "Risk assessment shows..."
253
+ ---
254
+ ```
255
+
256
+ **Limitation:** In-context state cannot support RLM-style "environment as variable" patterns where agents query arbitrarily large bindings. For programs with large intermediate values, use file-based or PostgreSQL state instead.
257
+
258
+ ---
259
+
260
+ ## Complete Execution Trace Example
261
+
262
+ ```prose
263
+ agent researcher:
264
+ model: sonnet
265
+
266
+ let research = session: researcher
267
+ prompt: "Research AI safety"
268
+
269
+ parallel:
270
+ a = session "Analyze risk A"
271
+ b = session "Analyze risk B"
272
+
273
+ loop until **analysis complete** (max: 3):
274
+ session "Synthesize"
275
+ context: { a, b, research }
276
+ ```
277
+
278
+ **Narration:**
279
+
280
+ ```
281
+ [Program] Program Start
282
+ Collecting definitions...
283
+ - Agent: researcher (model: sonnet)
284
+
285
+ [Position] Statement 1: let research = session: researcher
286
+ Spawning with prompt: "Research AI safety"
287
+ Model: sonnet
288
+ [Task tool call]
289
+ [Success] Session complete: "AI safety research covers alignment..."
290
+ [Binding] let research = <result>
291
+
292
+ [Position] Statement 2: parallel block
293
+ [Parallel] Entering parallel (2 branches, strategy: all)
294
+ [Task: "Analyze risk A"] [Task: "Analyze risk B"]
295
+ [Parallel] Parallel complete:
296
+ - a = "Risk A: potential misalignment..."
297
+ - b = "Risk B: robustness concerns..."
298
+ [Binding] a, b bound
299
+
300
+ [Position] Statement 3: loop until **analysis complete** (max: 3)
301
+ [Loop] Starting loop
302
+
303
+ [Loop] Iteration 1 of max 3
304
+ [Position] session "Synthesize" with context: {a, b, research}
305
+ [Task with serialized context]
306
+ [Success] Result: "Initial synthesis shows..."
307
+ [Loop] Evaluating: **analysis complete**
308
+ [Flow] Not satisfied (synthesis is preliminary)
309
+
310
+ [Loop] Iteration 2 of max 3
311
+ [Position] session "Synthesize" with context: {a, b, research}
312
+ [Task with serialized context]
313
+ [Success] Result: "Comprehensive analysis complete..."
314
+ [Loop] Evaluating: **analysis complete**
315
+ [Flow] Satisfied!
316
+
317
+ [Loop] Loop exited: condition satisfied at iteration 2
318
+
319
+ [Program] Program Complete
320
+ ```
321
+
322
+ ---
323
+
324
+ ## State Categories
325
+
326
+ The VM must track these state categories in narration:
327
+
328
+ | Category | What to Track | Example |
329
+ | ----------------------- | ----------------------------------------- | -------------------------------------------- |
330
+ | **Import Registry** | Imported programs and aliases | `research: @alice/research` |
331
+ | **Agent Registry** | All agent definitions | `researcher: {model: sonnet, prompt: "..."}` |
332
+ | **Block Registry** | All block definitions (hoisted) | `review: {params: [topic], body: [...]}` |
333
+ | **Input Bindings** | Inputs received from caller | `topic = "quantum computing"` |
334
+ | **Output Bindings** | Outputs to return to caller | `findings = "Research shows..."` |
335
+ | **Variable Bindings** | Name -> value mapping (with execution_id) | `result = "..." (execution_id: 3)` |
336
+ | **Variable Mutability** | Which are `let` vs `const` vs `output` | `research: let, findings: output` |
337
+ | **Execution Position** | Current statement index | Statement 3 of 7 |
338
+ | **Loop State** | Counter, max, condition | Iteration 2 of max 5 |
339
+ | **Parallel State** | Branches, results, strategy | `{a: complete, b: pending}` |
340
+ | **Error State** | Exception, retry count | Retry 2 of 3, error: "timeout" |
341
+ | **Call Stack** | Stack of execution frames | See below |
342
+
343
+ ### Call Stack State
344
+
345
+ For block invocations, track the full call stack:
346
+
347
+ ```
348
+ [CallStack] Current stack (depth: 3):
349
+ execution_id: 5 | block: process | depth: 3 | status: executing
350
+ execution_id: 3 | block: process | depth: 2 | status: waiting
351
+ execution_id: 1 | block: process | depth: 1 | status: waiting
352
+ ```
353
+
354
+ Each frame tracks:
355
+
356
+ - `execution_id`: Unique ID for this invocation
357
+ - `block`: Name of the block
358
+ - `depth`: Position in call stack
359
+ - `status`: executing, waiting, or completed
360
+
361
+ ---
362
+
363
+ ## Independence from File-Based State
364
+
365
+ In-context state and file-based state (`filesystem.md`) are **independent approaches**. You choose one or the other based on program complexity.
366
+
367
+ - **In-context**: State lives in conversation history
368
+ - **File-based**: State lives in `.prose/runs/{id}/`
369
+
370
+ They are not designed to be complementary—pick the appropriate mode at program start.
371
+
372
+ ---
373
+
374
+ ## Summary
375
+
376
+ In-context state management:
377
+
378
+ 1. Uses **text-prefixed markers** to track state changes
379
+ 2. Persists state in **conversation history**
380
+ 3. Is appropriate for **smaller, simpler programs**
381
+ 4. Requires **consistent narration** throughout execution
382
+ 5. Makes state **visible** in the conversation itself
383
+
384
+ The narration protocol ensures that the VM can recover its execution state by reading its own prior messages. What you say becomes what you remember.