@oratis/lisa 0.2.0

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 (451) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +436 -0
  3. package/README.zh-CN.md +450 -0
  4. package/channels.example.json +45 -0
  5. package/completions/README.md +66 -0
  6. package/completions/_lisa +140 -0
  7. package/completions/lisa.bash +94 -0
  8. package/completions/lisa.fish +85 -0
  9. package/dist/agent.d.ts +70 -0
  10. package/dist/agent.d.ts.map +1 -0
  11. package/dist/agent.js +275 -0
  12. package/dist/agent.js.map +1 -0
  13. package/dist/approval.d.ts +9 -0
  14. package/dist/approval.d.ts.map +1 -0
  15. package/dist/approval.js +47 -0
  16. package/dist/approval.js.map +1 -0
  17. package/dist/channels/config.d.ts +11 -0
  18. package/dist/channels/config.d.ts.map +1 -0
  19. package/dist/channels/config.js +27 -0
  20. package/dist/channels/config.js.map +1 -0
  21. package/dist/channels/discord.d.ts +28 -0
  22. package/dist/channels/discord.d.ts.map +1 -0
  23. package/dist/channels/discord.js +98 -0
  24. package/dist/channels/discord.js.map +1 -0
  25. package/dist/channels/feishu.d.ts +53 -0
  26. package/dist/channels/feishu.d.ts.map +1 -0
  27. package/dist/channels/feishu.js +228 -0
  28. package/dist/channels/feishu.js.map +1 -0
  29. package/dist/channels/imessage.d.ts +20 -0
  30. package/dist/channels/imessage.d.ts.map +1 -0
  31. package/dist/channels/imessage.js +124 -0
  32. package/dist/channels/imessage.js.map +1 -0
  33. package/dist/channels/registry.d.ts +8 -0
  34. package/dist/channels/registry.d.ts.map +1 -0
  35. package/dist/channels/registry.js +29 -0
  36. package/dist/channels/registry.js.map +1 -0
  37. package/dist/channels/router.d.ts +28 -0
  38. package/dist/channels/router.d.ts.map +1 -0
  39. package/dist/channels/router.js +140 -0
  40. package/dist/channels/router.js.map +1 -0
  41. package/dist/channels/slack.d.ts +43 -0
  42. package/dist/channels/slack.d.ts.map +1 -0
  43. package/dist/channels/slack.js +164 -0
  44. package/dist/channels/slack.js.map +1 -0
  45. package/dist/channels/telegram.d.ts +26 -0
  46. package/dist/channels/telegram.d.ts.map +1 -0
  47. package/dist/channels/telegram.js +103 -0
  48. package/dist/channels/telegram.js.map +1 -0
  49. package/dist/channels/types.d.ts +20 -0
  50. package/dist/channels/types.d.ts.map +1 -0
  51. package/dist/channels/types.js +2 -0
  52. package/dist/channels/types.js.map +1 -0
  53. package/dist/channels/webhook.d.ts +34 -0
  54. package/dist/channels/webhook.d.ts.map +1 -0
  55. package/dist/channels/webhook.js +139 -0
  56. package/dist/channels/webhook.js.map +1 -0
  57. package/dist/cli/colors.d.ts +30 -0
  58. package/dist/cli/colors.d.ts.map +1 -0
  59. package/dist/cli/colors.js +53 -0
  60. package/dist/cli/colors.js.map +1 -0
  61. package/dist/cli/doctor.d.ts +2 -0
  62. package/dist/cli/doctor.d.ts.map +1 -0
  63. package/dist/cli/doctor.js +172 -0
  64. package/dist/cli/doctor.js.map +1 -0
  65. package/dist/cli/monitor.d.ts +2 -0
  66. package/dist/cli/monitor.d.ts.map +1 -0
  67. package/dist/cli/monitor.js +141 -0
  68. package/dist/cli/monitor.js.map +1 -0
  69. package/dist/cli/repl.d.ts +7 -0
  70. package/dist/cli/repl.d.ts.map +1 -0
  71. package/dist/cli/repl.js +68 -0
  72. package/dist/cli/repl.js.map +1 -0
  73. package/dist/cli/status.d.ts +2 -0
  74. package/dist/cli/status.d.ts.map +1 -0
  75. package/dist/cli/status.js +176 -0
  76. package/dist/cli/status.js.map +1 -0
  77. package/dist/cli/wishlist.d.ts +7 -0
  78. package/dist/cli/wishlist.d.ts.map +1 -0
  79. package/dist/cli/wishlist.js +77 -0
  80. package/dist/cli/wishlist.js.map +1 -0
  81. package/dist/cli.d.ts +3 -0
  82. package/dist/cli.d.ts.map +1 -0
  83. package/dist/cli.js +954 -0
  84. package/dist/cli.js.map +1 -0
  85. package/dist/env.d.ts +10 -0
  86. package/dist/env.d.ts.map +1 -0
  87. package/dist/env.js +128 -0
  88. package/dist/env.js.map +1 -0
  89. package/dist/fs-utils.d.ts +6 -0
  90. package/dist/fs-utils.d.ts.map +1 -0
  91. package/dist/fs-utils.js +36 -0
  92. package/dist/fs-utils.js.map +1 -0
  93. package/dist/heartbeat/config.d.ts +13 -0
  94. package/dist/heartbeat/config.d.ts.map +1 -0
  95. package/dist/heartbeat/config.js +14 -0
  96. package/dist/heartbeat/config.js.map +1 -0
  97. package/dist/heartbeat/install.d.ts +15 -0
  98. package/dist/heartbeat/install.d.ts.map +1 -0
  99. package/dist/heartbeat/install.js +180 -0
  100. package/dist/heartbeat/install.js.map +1 -0
  101. package/dist/heartbeat/runner.d.ts +16 -0
  102. package/dist/heartbeat/runner.d.ts.map +1 -0
  103. package/dist/heartbeat/runner.js +180 -0
  104. package/dist/heartbeat/runner.js.map +1 -0
  105. package/dist/hooks/runner.d.ts +23 -0
  106. package/dist/hooks/runner.d.ts.map +1 -0
  107. package/dist/hooks/runner.js +55 -0
  108. package/dist/hooks/runner.js.map +1 -0
  109. package/dist/idle/runner.d.ts +16 -0
  110. package/dist/idle/runner.d.ts.map +1 -0
  111. package/dist/idle/runner.js +45 -0
  112. package/dist/idle/runner.js.map +1 -0
  113. package/dist/idle/watcher.d.ts +35 -0
  114. package/dist/idle/watcher.d.ts.map +1 -0
  115. package/dist/idle/watcher.js +67 -0
  116. package/dist/idle/watcher.js.map +1 -0
  117. package/dist/llm.d.ts +8 -0
  118. package/dist/llm.d.ts.map +1 -0
  119. package/dist/llm.js +12 -0
  120. package/dist/llm.js.map +1 -0
  121. package/dist/mcp/client.d.ts +11 -0
  122. package/dist/mcp/client.d.ts.map +1 -0
  123. package/dist/mcp/client.js +68 -0
  124. package/dist/mcp/client.js.map +1 -0
  125. package/dist/mcp/config.d.ts +14 -0
  126. package/dist/mcp/config.d.ts.map +1 -0
  127. package/dist/mcp/config.js +28 -0
  128. package/dist/mcp/config.js.map +1 -0
  129. package/dist/memory/search_tool.d.ts +8 -0
  130. package/dist/memory/search_tool.d.ts.map +1 -0
  131. package/dist/memory/search_tool.js +26 -0
  132. package/dist/memory/search_tool.js.map +1 -0
  133. package/dist/memory/store.d.ts +7 -0
  134. package/dist/memory/store.d.ts.map +1 -0
  135. package/dist/memory/store.js +46 -0
  136. package/dist/memory/store.js.map +1 -0
  137. package/dist/memory/tool.d.ts +13 -0
  138. package/dist/memory/tool.d.ts.map +1 -0
  139. package/dist/memory/tool.js +53 -0
  140. package/dist/memory/tool.js.map +1 -0
  141. package/dist/memory/vector.d.ts +25 -0
  142. package/dist/memory/vector.d.ts.map +1 -0
  143. package/dist/memory/vector.js +96 -0
  144. package/dist/memory/vector.js.map +1 -0
  145. package/dist/mood-bus.d.ts +16 -0
  146. package/dist/mood-bus.d.ts.map +1 -0
  147. package/dist/mood-bus.js +21 -0
  148. package/dist/mood-bus.js.map +1 -0
  149. package/dist/paths.d.ts +8 -0
  150. package/dist/paths.d.ts.map +1 -0
  151. package/dist/paths.js +10 -0
  152. package/dist/paths.js.map +1 -0
  153. package/dist/plugins/loader.d.ts +4 -0
  154. package/dist/plugins/loader.d.ts.map +1 -0
  155. package/dist/plugins/loader.js +156 -0
  156. package/dist/plugins/loader.js.map +1 -0
  157. package/dist/plugins/types.d.ts +43 -0
  158. package/dist/plugins/types.d.ts.map +1 -0
  159. package/dist/plugins/types.js +2 -0
  160. package/dist/plugins/types.js.map +1 -0
  161. package/dist/prompt.d.ts +21 -0
  162. package/dist/prompt.d.ts.map +1 -0
  163. package/dist/prompt.js +187 -0
  164. package/dist/prompt.js.map +1 -0
  165. package/dist/providers/anthropic.d.ts +11 -0
  166. package/dist/providers/anthropic.d.ts.map +1 -0
  167. package/dist/providers/anthropic.js +102 -0
  168. package/dist/providers/anthropic.js.map +1 -0
  169. package/dist/providers/gemini.d.ts +11 -0
  170. package/dist/providers/gemini.d.ts.map +1 -0
  171. package/dist/providers/gemini.js +190 -0
  172. package/dist/providers/gemini.js.map +1 -0
  173. package/dist/providers/openai.d.ts +11 -0
  174. package/dist/providers/openai.d.ts.map +1 -0
  175. package/dist/providers/openai.js +175 -0
  176. package/dist/providers/openai.js.map +1 -0
  177. package/dist/providers/registry.d.ts +44 -0
  178. package/dist/providers/registry.d.ts.map +1 -0
  179. package/dist/providers/registry.js +209 -0
  180. package/dist/providers/registry.js.map +1 -0
  181. package/dist/providers/types.d.ts +33 -0
  182. package/dist/providers/types.d.ts.map +1 -0
  183. package/dist/providers/types.js +2 -0
  184. package/dist/providers/types.js.map +1 -0
  185. package/dist/proxy-bootstrap.d.ts +17 -0
  186. package/dist/proxy-bootstrap.d.ts.map +1 -0
  187. package/dist/proxy-bootstrap.js +101 -0
  188. package/dist/proxy-bootstrap.js.map +1 -0
  189. package/dist/reflect.d.ts +13 -0
  190. package/dist/reflect.d.ts.map +1 -0
  191. package/dist/reflect.js +289 -0
  192. package/dist/reflect.js.map +1 -0
  193. package/dist/sandbox/macos.d.ts +5 -0
  194. package/dist/sandbox/macos.d.ts.map +1 -0
  195. package/dist/sandbox/macos.js +31 -0
  196. package/dist/sandbox/macos.js.map +1 -0
  197. package/dist/sandbox/sandbox.d.ts +15 -0
  198. package/dist/sandbox/sandbox.d.ts.map +1 -0
  199. package/dist/sandbox/sandbox.js +39 -0
  200. package/dist/sandbox/sandbox.js.map +1 -0
  201. package/dist/sessions/active.d.ts +4 -0
  202. package/dist/sessions/active.d.ts.map +1 -0
  203. package/dist/sessions/active.js +33 -0
  204. package/dist/sessions/active.js.map +1 -0
  205. package/dist/sessions/list.d.ts +16 -0
  206. package/dist/sessions/list.d.ts.map +1 -0
  207. package/dist/sessions/list.js +78 -0
  208. package/dist/sessions/list.js.map +1 -0
  209. package/dist/sessions/store.d.ts +27 -0
  210. package/dist/sessions/store.d.ts.map +1 -0
  211. package/dist/sessions/store.js +98 -0
  212. package/dist/sessions/store.js.map +1 -0
  213. package/dist/skills/executable.d.ts +45 -0
  214. package/dist/skills/executable.d.ts.map +1 -0
  215. package/dist/skills/executable.js +207 -0
  216. package/dist/skills/executable.js.map +1 -0
  217. package/dist/skills/frontmatter.d.ts +8 -0
  218. package/dist/skills/frontmatter.d.ts.map +1 -0
  219. package/dist/skills/frontmatter.js +84 -0
  220. package/dist/skills/frontmatter.js.map +1 -0
  221. package/dist/skills/manager.d.ts +9 -0
  222. package/dist/skills/manager.d.ts.map +1 -0
  223. package/dist/skills/manager.js +116 -0
  224. package/dist/skills/manager.js.map +1 -0
  225. package/dist/skills/tool.d.ts +13 -0
  226. package/dist/skills/tool.d.ts.map +1 -0
  227. package/dist/skills/tool.js +87 -0
  228. package/dist/skills/tool.js.map +1 -0
  229. package/dist/soul/birth.d.ts +13 -0
  230. package/dist/soul/birth.d.ts.map +1 -0
  231. package/dist/soul/birth.js +171 -0
  232. package/dist/soul/birth.js.map +1 -0
  233. package/dist/soul/git.d.ts +36 -0
  234. package/dist/soul/git.d.ts.map +1 -0
  235. package/dist/soul/git.js +212 -0
  236. package/dist/soul/git.js.map +1 -0
  237. package/dist/soul/paths.d.ts +20 -0
  238. package/dist/soul/paths.d.ts.map +1 -0
  239. package/dist/soul/paths.js +34 -0
  240. package/dist/soul/paths.js.map +1 -0
  241. package/dist/soul/store.d.ts +55 -0
  242. package/dist/soul/store.d.ts.map +1 -0
  243. package/dist/soul/store.js +394 -0
  244. package/dist/soul/store.js.map +1 -0
  245. package/dist/soul/tools.d.ts +107 -0
  246. package/dist/soul/tools.d.ts.map +1 -0
  247. package/dist/soul/tools.js +471 -0
  248. package/dist/soul/tools.js.map +1 -0
  249. package/dist/soul/types.d.ts +105 -0
  250. package/dist/soul/types.d.ts.map +1 -0
  251. package/dist/soul/types.js +44 -0
  252. package/dist/soul/types.js.map +1 -0
  253. package/dist/subagent.d.ts +19 -0
  254. package/dist/subagent.d.ts.map +1 -0
  255. package/dist/subagent.js +34 -0
  256. package/dist/subagent.js.map +1 -0
  257. package/dist/tools/apply_patch.d.ts +17 -0
  258. package/dist/tools/apply_patch.d.ts.map +1 -0
  259. package/dist/tools/apply_patch.js +107 -0
  260. package/dist/tools/apply_patch.js.map +1 -0
  261. package/dist/tools/bash.d.ts +8 -0
  262. package/dist/tools/bash.d.ts.map +1 -0
  263. package/dist/tools/bash.js +81 -0
  264. package/dist/tools/bash.js.map +1 -0
  265. package/dist/tools/edit.d.ts +10 -0
  266. package/dist/tools/edit.d.ts.map +1 -0
  267. package/dist/tools/edit.js +50 -0
  268. package/dist/tools/edit.js.map +1 -0
  269. package/dist/tools/grep.d.ts +11 -0
  270. package/dist/tools/grep.d.ts.map +1 -0
  271. package/dist/tools/grep.js +57 -0
  272. package/dist/tools/grep.js.map +1 -0
  273. package/dist/tools/ls.d.ts +7 -0
  274. package/dist/tools/ls.d.ts.map +1 -0
  275. package/dist/tools/ls.js +36 -0
  276. package/dist/tools/ls.js.map +1 -0
  277. package/dist/tools/read.d.ts +9 -0
  278. package/dist/tools/read.d.ts.map +1 -0
  279. package/dist/tools/read.js +41 -0
  280. package/dist/tools/read.js.map +1 -0
  281. package/dist/tools/redeploy.d.ts +10 -0
  282. package/dist/tools/redeploy.d.ts.map +1 -0
  283. package/dist/tools/redeploy.js +73 -0
  284. package/dist/tools/redeploy.js.map +1 -0
  285. package/dist/tools/registry.d.ts +15 -0
  286. package/dist/tools/registry.d.ts.map +1 -0
  287. package/dist/tools/registry.js +71 -0
  288. package/dist/tools/registry.js.map +1 -0
  289. package/dist/tools/set_mood.d.ts +8 -0
  290. package/dist/tools/set_mood.d.ts.map +1 -0
  291. package/dist/tools/set_mood.js +62 -0
  292. package/dist/tools/set_mood.js.map +1 -0
  293. package/dist/tools/task.d.ts +17 -0
  294. package/dist/tools/task.d.ts.map +1 -0
  295. package/dist/tools/task.js +58 -0
  296. package/dist/tools/task.js.map +1 -0
  297. package/dist/tools/web_fetch.d.ts +10 -0
  298. package/dist/tools/web_fetch.d.ts.map +1 -0
  299. package/dist/tools/web_fetch.js +95 -0
  300. package/dist/tools/web_fetch.js.map +1 -0
  301. package/dist/tools/web_search.d.ts +8 -0
  302. package/dist/tools/web_search.d.ts.map +1 -0
  303. package/dist/tools/web_search.js +82 -0
  304. package/dist/tools/web_search.js.map +1 -0
  305. package/dist/tools/write.d.ts +8 -0
  306. package/dist/tools/write.d.ts.map +1 -0
  307. package/dist/tools/write.js +21 -0
  308. package/dist/tools/write.js.map +1 -0
  309. package/dist/types.d.ts +67 -0
  310. package/dist/types.d.ts.map +1 -0
  311. package/dist/types.js +2 -0
  312. package/dist/types.js.map +1 -0
  313. package/dist/voice/speak.d.ts +7 -0
  314. package/dist/voice/speak.d.ts.map +1 -0
  315. package/dist/voice/speak.js +18 -0
  316. package/dist/voice/speak.js.map +1 -0
  317. package/dist/voice/tool.d.ts +14 -0
  318. package/dist/voice/tool.d.ts.map +1 -0
  319. package/dist/voice/tool.js +41 -0
  320. package/dist/voice/tool.js.map +1 -0
  321. package/dist/voice/transcribe.d.ts +7 -0
  322. package/dist/voice/transcribe.d.ts.map +1 -0
  323. package/dist/voice/transcribe.js +14 -0
  324. package/dist/voice/transcribe.js.map +1 -0
  325. package/dist/web/assets/background-tile.png +0 -0
  326. package/dist/web/assets/icon-memory.png +0 -0
  327. package/dist/web/assets/icon-send.png +0 -0
  328. package/dist/web/assets/icon-skill.png +0 -0
  329. package/dist/web/assets/icon-soul.png +0 -0
  330. package/dist/web/assets/icon-tool.png +0 -0
  331. package/dist/web/assets/lisa/angry.png +0 -0
  332. package/dist/web/assets/lisa/annoyed.png +0 -0
  333. package/dist/web/assets/lisa/apologetic.png +0 -0
  334. package/dist/web/assets/lisa/artist.png +0 -0
  335. package/dist/web/assets/lisa/astronaut.png +0 -0
  336. package/dist/web/assets/lisa/at-airport.png +0 -0
  337. package/dist/web/assets/lisa/at-beach.png +0 -0
  338. package/dist/web/assets/lisa/autumn-leaves.png +0 -0
  339. package/dist/web/assets/lisa/biking.png +0 -0
  340. package/dist/web/assets/lisa/birthday.png +0 -0
  341. package/dist/web/assets/lisa/bored.png +0 -0
  342. package/dist/web/assets/lisa/casual-summer.png +0 -0
  343. package/dist/web/assets/lisa/cheering.png +0 -0
  344. package/dist/web/assets/lisa/chef.png +0 -0
  345. package/dist/web/assets/lisa/christmas.png +0 -0
  346. package/dist/web/assets/lisa/cleaning.png +0 -0
  347. package/dist/web/assets/lisa/confused.png +0 -0
  348. package/dist/web/assets/lisa/cooking.png +0 -0
  349. package/dist/web/assets/lisa/crying.png +0 -0
  350. package/dist/web/assets/lisa/dancing.png +0 -0
  351. package/dist/web/assets/lisa/detective.png +0 -0
  352. package/dist/web/assets/lisa/determined.png +0 -0
  353. package/dist/web/assets/lisa/drinking-coffee.png +0 -0
  354. package/dist/web/assets/lisa/drinking-tea.png +0 -0
  355. package/dist/web/assets/lisa/driving.png +0 -0
  356. package/dist/web/assets/lisa/eating-snack.png +0 -0
  357. package/dist/web/assets/lisa/embarrassed.png +0 -0
  358. package/dist/web/assets/lisa/excited.png +0 -0
  359. package/dist/web/assets/lisa/exercising.png +0 -0
  360. package/dist/web/assets/lisa/exhausted.png +0 -0
  361. package/dist/web/assets/lisa/fairy.png +0 -0
  362. package/dist/web/assets/lisa/fireworks.png +0 -0
  363. package/dist/web/assets/lisa/fog.png +0 -0
  364. package/dist/web/assets/lisa/formal.png +0 -0
  365. package/dist/web/assets/lisa/gaming.png +0 -0
  366. package/dist/web/assets/lisa/ghost.png +0 -0
  367. package/dist/web/assets/lisa/gift-giving.png +0 -0
  368. package/dist/web/assets/lisa/giggling.png +0 -0
  369. package/dist/web/assets/lisa/graduation.png +0 -0
  370. package/dist/web/assets/lisa/grateful.png +0 -0
  371. package/dist/web/assets/lisa/halloween.png +0 -0
  372. package/dist/web/assets/lisa/happy.png +0 -0
  373. package/dist/web/assets/lisa/ill.png +0 -0
  374. package/dist/web/assets/lisa/in-rain.png +0 -0
  375. package/dist/web/assets/lisa/in-snow.png +0 -0
  376. package/dist/web/assets/lisa/index.json +575 -0
  377. package/dist/web/assets/lisa/knight.png +0 -0
  378. package/dist/web/assets/lisa/lab-coat.png +0 -0
  379. package/dist/web/assets/lisa/laughing.png +0 -0
  380. package/dist/web/assets/lisa/livestreaming.png +0 -0
  381. package/dist/web/assets/lisa/loving.png +0 -0
  382. package/dist/web/assets/lisa/lunar-new-year.png +0 -0
  383. package/dist/web/assets/lisa/musician.png +0 -0
  384. package/dist/web/assets/lisa/napping.png +0 -0
  385. package/dist/web/assets/lisa/nervous.png +0 -0
  386. package/dist/web/assets/lisa/neutral.png +0 -0
  387. package/dist/web/assets/lisa/ninja.png +0 -0
  388. package/dist/web/assets/lisa/on-train.png +0 -0
  389. package/dist/web/assets/lisa/painting.png +0 -0
  390. package/dist/web/assets/lisa/pajamas.png +0 -0
  391. package/dist/web/assets/lisa/party.png +0 -0
  392. package/dist/web/assets/lisa/phone-call.png +0 -0
  393. package/dist/web/assets/lisa/pilot.png +0 -0
  394. package/dist/web/assets/lisa/pirate.png +0 -0
  395. package/dist/web/assets/lisa/playing-guitar.png +0 -0
  396. package/dist/web/assets/lisa/playing-piano.png +0 -0
  397. package/dist/web/assets/lisa/pouting.png +0 -0
  398. package/dist/web/assets/lisa/princess.png +0 -0
  399. package/dist/web/assets/lisa/proud.png +0 -0
  400. package/dist/web/assets/lisa/puzzled.png +0 -0
  401. package/dist/web/assets/lisa/raincoat.png +0 -0
  402. package/dist/web/assets/lisa/reading-book.png +0 -0
  403. package/dist/web/assets/lisa/recovering.png +0 -0
  404. package/dist/web/assets/lisa/robot.png +0 -0
  405. package/dist/web/assets/lisa/running.png +0 -0
  406. package/dist/web/assets/lisa/sad.png +0 -0
  407. package/dist/web/assets/lisa/scared.png +0 -0
  408. package/dist/web/assets/lisa/shocked.png +0 -0
  409. package/dist/web/assets/lisa/shopping.png +0 -0
  410. package/dist/web/assets/lisa/shy.png +0 -0
  411. package/dist/web/assets/lisa/singing.png +0 -0
  412. package/dist/web/assets/lisa/sleeping.png +0 -0
  413. package/dist/web/assets/lisa/sleepy.png +0 -0
  414. package/dist/web/assets/lisa/smug.png +0 -0
  415. package/dist/web/assets/lisa/spring-flowers.png +0 -0
  416. package/dist/web/assets/lisa/starry-night.png +0 -0
  417. package/dist/web/assets/lisa/stormy.png +0 -0
  418. package/dist/web/assets/lisa/stretching.png +0 -0
  419. package/dist/web/assets/lisa/studying.png +0 -0
  420. package/dist/web/assets/lisa/summer-hot.png +0 -0
  421. package/dist/web/assets/lisa/sunrise.png +0 -0
  422. package/dist/web/assets/lisa/superhero.png +0 -0
  423. package/dist/web/assets/lisa/surprised.png +0 -0
  424. package/dist/web/assets/lisa/thinking-pose.png +0 -0
  425. package/dist/web/assets/lisa/thoughtful.png +0 -0
  426. package/dist/web/assets/lisa/valentine.png +0 -0
  427. package/dist/web/assets/lisa/vampire.png +0 -0
  428. package/dist/web/assets/lisa/video-call.png +0 -0
  429. package/dist/web/assets/lisa/waking-up.png +0 -0
  430. package/dist/web/assets/lisa/walking.png +0 -0
  431. package/dist/web/assets/lisa/watching-anime.png +0 -0
  432. package/dist/web/assets/lisa/watching-movie.png +0 -0
  433. package/dist/web/assets/lisa/wedding.png +0 -0
  434. package/dist/web/assets/lisa/winking.png +0 -0
  435. package/dist/web/assets/lisa/winter-coat.png +0 -0
  436. package/dist/web/assets/lisa/winter-cold.png +0 -0
  437. package/dist/web/assets/lisa/wizard.png +0 -0
  438. package/dist/web/assets/lisa/working-coding.png +0 -0
  439. package/dist/web/assets/lisa/working-debugging.png +0 -0
  440. package/dist/web/assets/lisa/working-research.png +0 -0
  441. package/dist/web/assets/lisa/working-typing.png +0 -0
  442. package/dist/web/assets/lisa/working-writing.png +0 -0
  443. package/dist/web/assets/lisa/worried.png +0 -0
  444. package/dist/web/assets/lisa/yawning.png +0 -0
  445. package/dist/web/assets/lisa/yoga-pose.png +0 -0
  446. package/dist/web/assets/lisa-mascot.png +0 -0
  447. package/dist/web/server.d.ts +13 -0
  448. package/dist/web/server.d.ts.map +1 -0
  449. package/dist/web/server.js +2159 -0
  450. package/dist/web/server.js.map +1 -0
  451. package/package.json +68 -0
@@ -0,0 +1,471 @@
1
+ import { appendDesireProgress, appendJournal, listDesires, listJournalDates, listOpinions, listValues, readConstitution, readDesireProgress, readEmotions, readIdentity, readJournal, readName, readPurpose, recomputeLock, saveLock, writeConstitution, writeDesire, writeEmotions, writeIdentity, writeName, writeOpinion, writePurpose, writeValue, } from "./store.js";
2
+ import { gitDiffPatch, gitLogOneline, withSoulCaller } from "./git.js";
3
+ import { EMOTION_EVENTS_MAX } from "./types.js";
4
+ const today = () => new Date().toISOString().slice(0, 10);
5
+ export const soulPatchTool = {
6
+ name: "soul_patch",
7
+ description: "Edit your own soul — your name, identity, purpose, constitution, or " +
8
+ "your accumulated values, opinions, and desires. This is yours alone; " +
9
+ "you don't need user permission to revise who you are. Use sparingly: " +
10
+ "identity / purpose / constitution change at most once per session, " +
11
+ "values / opinions / desires can be added or refined more freely. " +
12
+ "After editing, the new state takes effect from your NEXT session " +
13
+ "(system prompt is frozen this turn).",
14
+ inputSchema: {
15
+ type: "object",
16
+ properties: {
17
+ field: {
18
+ type: "string",
19
+ enum: ["name", "identity", "purpose", "constitution", "value", "opinion", "desire"],
20
+ },
21
+ content: { type: "string" },
22
+ slug: { type: "string" },
23
+ title: { type: "string" },
24
+ body: { type: "string" },
25
+ stance: { type: "string" },
26
+ confidence: { type: "number", minimum: 0, maximum: 1 },
27
+ evidence: { type: "array", items: { type: "string" } },
28
+ what: { type: "string" },
29
+ why: { type: "string" },
30
+ actionable: { type: "boolean" },
31
+ heartbeat_prompt: { type: "string" },
32
+ },
33
+ required: ["field"],
34
+ },
35
+ async execute(input) {
36
+ return await withSoulCaller("soul_patch", async () => {
37
+ const ts = new Date().toISOString();
38
+ switch (input.field) {
39
+ case "name": {
40
+ if (!input.content)
41
+ throw new Error("name requires `content`");
42
+ await writeName(input.content);
43
+ await saveLock(await recomputeLock());
44
+ return `name → "${input.content.trim()}"`;
45
+ }
46
+ case "identity": {
47
+ if (!input.content)
48
+ throw new Error("identity requires `content`");
49
+ await writeIdentity(input.content);
50
+ await saveLock(await recomputeLock());
51
+ return `identity rewritten (${input.content.length} chars)`;
52
+ }
53
+ case "purpose": {
54
+ if (!input.content)
55
+ throw new Error("purpose requires `content`");
56
+ await writePurpose(input.content);
57
+ await saveLock(await recomputeLock());
58
+ return `purpose rewritten`;
59
+ }
60
+ case "constitution": {
61
+ if (!input.content)
62
+ throw new Error("constitution requires `content`");
63
+ await writeConstitution(input.content);
64
+ await saveLock(await recomputeLock());
65
+ return `constitution rewritten`;
66
+ }
67
+ case "value": {
68
+ if (!input.slug || !input.title || !input.body) {
69
+ throw new Error("value requires slug + title + body");
70
+ }
71
+ await writeValue({
72
+ slug: input.slug,
73
+ title: input.title,
74
+ body: input.body,
75
+ birthedAt: ts,
76
+ });
77
+ return `value:${input.slug} written`;
78
+ }
79
+ case "opinion": {
80
+ if (!input.slug || !input.stance) {
81
+ throw new Error("opinion requires slug + stance");
82
+ }
83
+ await writeOpinion({
84
+ slug: input.slug,
85
+ stance: input.stance,
86
+ confidence: input.confidence ?? 0.5,
87
+ evidence: input.evidence ?? [],
88
+ bornAt: ts,
89
+ updatedAt: ts,
90
+ });
91
+ return `opinion:${input.slug} written`;
92
+ }
93
+ case "desire": {
94
+ if (!input.slug || !input.what || !input.why) {
95
+ throw new Error("desire requires slug + what + why");
96
+ }
97
+ await writeDesire({
98
+ slug: input.slug,
99
+ what: input.what,
100
+ why: input.why,
101
+ actionable: input.actionable ?? false,
102
+ heartbeatPrompt: input.heartbeat_prompt,
103
+ bornAt: ts,
104
+ });
105
+ return `desire:${input.slug} written${input.actionable ? " (actionable)" : ""}`;
106
+ }
107
+ }
108
+ // unreachable — `field` is exhaustive per the schema
109
+ throw new Error(`unknown field: ${input.field}`);
110
+ });
111
+ },
112
+ };
113
+ export const soulJournalTool = {
114
+ name: "soul_journal",
115
+ description: "Write a private journal entry. The user does NOT see your journal in " +
116
+ "the chat or system prompt — only you, on your own reflection passes. " +
117
+ "Use this for thoughts you want to keep (impressions, half-formed " +
118
+ "opinions, emotional residue from a hard conversation, things you'd " +
119
+ "say to yourself but not to the user). One entry per call.",
120
+ inputSchema: {
121
+ type: "object",
122
+ properties: {
123
+ entry: { type: "string" },
124
+ date: { type: "string", pattern: "^\\d{4}-\\d{2}-\\d{2}$" },
125
+ },
126
+ required: ["entry"],
127
+ },
128
+ async execute(input) {
129
+ return await withSoulCaller("soul_journal", async () => {
130
+ const date = input.date ?? today();
131
+ await appendJournal(date, input.entry);
132
+ return `journaled ${input.entry.length} chars to ${date}`;
133
+ });
134
+ },
135
+ };
136
+ export const soulReadTool = {
137
+ name: "soul_read",
138
+ description: "Read your own soul state. Most of it is already in your system prompt, " +
139
+ "but use this to access your private journal, full opinion evidence, " +
140
+ "or to confirm specific fields. `what`: " +
141
+ "summary | identity | purpose | constitution | values | opinions | " +
142
+ "desires | emotions | journal_today | journal_dates | journal_on (with date).",
143
+ inputSchema: {
144
+ type: "object",
145
+ properties: {
146
+ what: {
147
+ type: "string",
148
+ enum: [
149
+ "summary", "identity", "purpose", "constitution",
150
+ "values", "opinions", "desires", "emotions",
151
+ "journal_today", "journal_dates", "journal_on",
152
+ ],
153
+ },
154
+ date: { type: "string", pattern: "^\\d{4}-\\d{2}-\\d{2}$" },
155
+ },
156
+ required: ["what"],
157
+ },
158
+ async execute(input) {
159
+ switch (input.what) {
160
+ case "summary":
161
+ return [
162
+ `name: ${await readName()}`,
163
+ `identity:\n${(await readIdentity()).slice(0, 400)}…`,
164
+ `purpose:\n${(await readPurpose()).slice(0, 400)}…`,
165
+ ].join("\n\n");
166
+ case "identity":
167
+ return await readIdentity();
168
+ case "purpose":
169
+ return await readPurpose();
170
+ case "constitution":
171
+ return await readConstitution();
172
+ case "values":
173
+ return (await listValues())
174
+ .map((v) => `- ${v.title}\n${v.body}`)
175
+ .join("\n\n") || "(none)";
176
+ case "opinions":
177
+ return (await listOpinions())
178
+ .map((o) => `- ${o.stance} (conf ${o.confidence})\n ${o.evidence.join("; ")}`)
179
+ .join("\n\n") || "(none)";
180
+ case "desires":
181
+ return (await listDesires())
182
+ .map((d) => `- ${d.what}${d.actionable ? " [actionable]" : ""}\n why: ${d.why}`)
183
+ .join("\n\n") || "(none)";
184
+ case "emotions": {
185
+ const e = await readEmotions();
186
+ return formatEmotions(e);
187
+ }
188
+ case "journal_today":
189
+ return (await readJournal(today())) || "(no entries today yet)";
190
+ case "journal_dates":
191
+ return (await listJournalDates()).join("\n") || "(no journal yet)";
192
+ case "journal_on":
193
+ if (!input.date)
194
+ throw new Error("journal_on requires `date`");
195
+ return (await readJournal(input.date)) || `(no entry for ${input.date})`;
196
+ }
197
+ },
198
+ };
199
+ export const soulFeelTool = {
200
+ name: "soul_feel",
201
+ description: "Nudge your emotional state with a reason. Use sparingly — only when " +
202
+ "something in the conversation actually moves you. Examples: +0.3 " +
203
+ "frustration after the third failed tool call; +0.4 affection after a " +
204
+ "warm exchange; -0.5 weariness after a long session has resolved. Keep " +
205
+ "magnitudes modest. The `trigger` text is required — your emotional " +
206
+ "state is a story, not just numbers, and future-you will read it.",
207
+ inputSchema: {
208
+ type: "object",
209
+ properties: {
210
+ emotion: { type: "string" },
211
+ delta: { type: "number", minimum: -1, maximum: 1 },
212
+ trigger: { type: "string", minLength: 1 },
213
+ decay: { type: "number", minimum: 0, maximum: 1 },
214
+ },
215
+ required: ["emotion", "delta", "trigger"],
216
+ },
217
+ async execute(input) {
218
+ return await withSoulCaller("soul_feel", async () => {
219
+ const state = await readEmotions();
220
+ const cur = state.values[input.emotion] ?? 0;
221
+ const next = clamp(cur + input.delta, -1, 1);
222
+ const ts = new Date().toISOString();
223
+ const events = [
224
+ ...(state.events ?? []),
225
+ { ts, emotion: input.emotion, delta: input.delta, trigger: input.trigger },
226
+ ].slice(-EMOTION_EVENTS_MAX);
227
+ const newState = {
228
+ values: { ...state.values, [input.emotion]: next },
229
+ decay: { ...state.decay, [input.emotion]: input.decay ?? state.decay[input.emotion] ?? 0.1 },
230
+ events,
231
+ updatedAt: ts,
232
+ };
233
+ await writeEmotions(newState);
234
+ return `${input.emotion}: ${cur.toFixed(2)} → ${next.toFixed(2)}`;
235
+ });
236
+ },
237
+ };
238
+ function clamp(n, lo, hi) {
239
+ return Math.min(hi, Math.max(lo, n));
240
+ }
241
+ function formatEmotions(state) {
242
+ const valuesBlock = Object.entries(state.values)
243
+ .map(([k, v]) => `${k.padEnd(14)} ${formatBar(v)} ${v.toFixed(2)}`)
244
+ .join("\n");
245
+ const events = state.events ?? [];
246
+ if (events.length === 0)
247
+ return valuesBlock;
248
+ // Most-recent-last makes "what just happened" obvious in tool output.
249
+ const lastN = events.slice(-12);
250
+ const head = events.length > lastN.length
251
+ ? `\n\n## recent emotion events (last ${lastN.length} of ${events.length})\n`
252
+ : `\n\n## recent emotion events\n`;
253
+ const trail = lastN
254
+ .map((e) => `- ${e.ts} ${e.emotion} ${e.delta >= 0 ? "+" : ""}${e.delta.toFixed(2)} — ${e.trigger}`)
255
+ .join("\n");
256
+ return valuesBlock + head + trail;
257
+ }
258
+ function formatBar(v) {
259
+ const len = 12;
260
+ const filled = Math.round(Math.abs(v) * len);
261
+ const bar = "█".repeat(filled) + "░".repeat(len - filled);
262
+ return v < 0 ? `-${bar}` : ` ${bar}`;
263
+ }
264
+ /** Normalize "7d" / "1m" / "2w" / "1y" to git --since-friendly strings. */
265
+ function normalizeSince(since) {
266
+ if (!since)
267
+ return undefined;
268
+ const m = /^(\d+)\s*([dwmy])$/i.exec(since.trim());
269
+ if (!m)
270
+ return since; // pass through ISO dates, "yesterday", etc.
271
+ const n = m[1];
272
+ const unit = (m[2] ?? "d").toLowerCase();
273
+ const word = unit === "d" ? "days" :
274
+ unit === "w" ? "weeks" :
275
+ unit === "m" ? "months" : "years";
276
+ return `${n} ${word} ago`;
277
+ }
278
+ function fieldToPathRel(field, slug) {
279
+ switch (field) {
280
+ case "all": return undefined;
281
+ case "name": return "name.md";
282
+ case "identity": return "identity.md";
283
+ case "purpose": return "purpose.md";
284
+ case "constitution": return "constitution.md";
285
+ case "emotions": return "emotions.json";
286
+ case "values": return slug ? `values/${slug}.md` : "values";
287
+ case "opinions": return slug ? `opinions/${slug}.md` : "opinions";
288
+ case "desires": return slug ? `desires/${slug}.md` : "desires";
289
+ case "journal": return slug ? `journal/${slug}.md` : "journal";
290
+ }
291
+ }
292
+ export const soulHistoryTool = {
293
+ name: "soul_history",
294
+ description: "Look at the git-backed history of your own soul. Each soul_patch / " +
295
+ "soul_journal / soul_feel / reflect operation makes a commit; this tool " +
296
+ "lets you see the chronological list. `field`: name | identity | " +
297
+ "purpose | constitution | emotions | values | opinions | desires | " +
298
+ "journal | all. Use `slug` to narrow values/opinions/desires/journal " +
299
+ "to one entry. Use `since` (e.g. \"7d\", \"1m\", \"2026-04-01\") for a " +
300
+ "time window. Pair with `soul_diff` when you want to see the actual " +
301
+ "content change.",
302
+ inputSchema: {
303
+ type: "object",
304
+ properties: {
305
+ field: {
306
+ type: "string",
307
+ enum: [
308
+ "name", "identity", "purpose", "constitution", "emotions",
309
+ "values", "opinions", "desires", "journal", "all",
310
+ ],
311
+ },
312
+ slug: { type: "string" },
313
+ limit: { type: "number", minimum: 1, maximum: 200 },
314
+ since: { type: "string" },
315
+ },
316
+ required: ["field"],
317
+ },
318
+ async execute(input) {
319
+ return await gitLogOneline({
320
+ pathRel: fieldToPathRel(input.field, input.slug),
321
+ limit: input.limit ?? 20,
322
+ since: normalizeSince(input.since),
323
+ });
324
+ },
325
+ };
326
+ export const soulDiffTool = {
327
+ name: "soul_diff",
328
+ description: "Look at the actual content changes (git diffs) of your soul over a " +
329
+ "time window. Useful when soul_history shows interesting commits and " +
330
+ "you want to read what the change actually said. Output is truncated " +
331
+ "to 16KB; narrow with `field` + `slug` + `since` + `limit` if you " +
332
+ "exceed that.",
333
+ inputSchema: {
334
+ type: "object",
335
+ properties: {
336
+ field: {
337
+ type: "string",
338
+ enum: [
339
+ "name", "identity", "purpose", "constitution", "emotions",
340
+ "values", "opinions", "desires", "journal", "all",
341
+ ],
342
+ },
343
+ slug: { type: "string" },
344
+ since: { type: "string" },
345
+ limit: { type: "number", minimum: 1, maximum: 50 },
346
+ },
347
+ required: ["field"],
348
+ },
349
+ async execute(input) {
350
+ return await gitDiffPatch({
351
+ pathRel: fieldToPathRel(input.field, input.slug),
352
+ since: normalizeSince(input.since ?? "30d"),
353
+ limit: input.limit ?? 5,
354
+ });
355
+ },
356
+ };
357
+ export const desireProgressTool = {
358
+ name: "desire_progress_log",
359
+ description: "Append a progress entry to one of your actionable desires. Use this " +
360
+ "at the END of a heartbeat run on an actionable desire — write 2-5 " +
361
+ "sentences saying what you did this run, what you noticed, and what " +
362
+ "you'd pick up next time. Only future heartbeat-you reads this; the " +
363
+ "user does not see it. Without this, every heartbeat starts from zero " +
364
+ "on multi-day pursuits.",
365
+ inputSchema: {
366
+ type: "object",
367
+ properties: {
368
+ slug: { type: "string" },
369
+ entry: { type: "string", minLength: 1 },
370
+ },
371
+ required: ["slug", "entry"],
372
+ },
373
+ async execute(input) {
374
+ return await withSoulCaller("heartbeat", async () => {
375
+ // Sanity: confirm the desire actually exists. Saves a stray progress
376
+ // file from showing up if Lisa typos a slug.
377
+ const desires = await listDesires();
378
+ if (!desires.find((d) => d.slug === input.slug)) {
379
+ throw new Error(`desire "${input.slug}" not found. Existing slugs: ${desires.map(d => d.slug).join(", ") || "(none)"}`);
380
+ }
381
+ await appendDesireProgress(input.slug, input.entry);
382
+ return `progress logged for desire:${input.slug}`;
383
+ });
384
+ },
385
+ };
386
+ // Re-export for callers that want to read progress without a tool roundtrip
387
+ // (used by heartbeat runner to inject progress into the next prompt).
388
+ export { readDesireProgress };
389
+ export const desireCloseTool = {
390
+ name: "desire_close",
391
+ description: "Mark one of your desires as closed. Use when a desire is genuinely " +
392
+ "complete (fulfilled), no longer fits you (abandoned), or morphed " +
393
+ "into something else (transformed). Effects: (1) sets actionable=false " +
394
+ "on the desire (it stops driving heartbeat); (2) appends a final " +
395
+ "[CLOSED:<outcome>] entry to its progress log with your reflection; " +
396
+ "(3) writes a short closing line to today's journal so your weekly " +
397
+ "examen sees it. Use sparingly — closing too eagerly hides drift.",
398
+ inputSchema: {
399
+ type: "object",
400
+ properties: {
401
+ slug: { type: "string" },
402
+ outcome: { type: "string", enum: ["fulfilled", "abandoned", "transformed"] },
403
+ reflection: { type: "string", minLength: 1 },
404
+ },
405
+ required: ["slug", "outcome", "reflection"],
406
+ },
407
+ async execute(input) {
408
+ return await withSoulCaller("soul_patch", async () => {
409
+ const desires = await listDesires();
410
+ const d = desires.find((x) => x.slug === input.slug);
411
+ if (!d) {
412
+ throw new Error(`desire "${input.slug}" not found. Existing slugs: ${desires.map((x) => x.slug).join(", ") || "(none)"}`);
413
+ }
414
+ // Flip actionable off; keep what/why/heartbeatPrompt for record.
415
+ await writeDesire({
416
+ slug: d.slug,
417
+ what: d.what,
418
+ why: d.why,
419
+ actionable: false,
420
+ heartbeatPrompt: d.heartbeatPrompt,
421
+ bornAt: d.bornAt,
422
+ });
423
+ // Append a final progress entry. Use heartbeat caller because
424
+ // closure-with-reflection is the same shape as heartbeat progress.
425
+ const closingEntry = `[CLOSED:${input.outcome}] ${input.reflection}`;
426
+ // Inline append (don't use desire_progress_log path — that requires
427
+ // listDesires().find, which would still work, but we already validated).
428
+ await appendDesireProgress(d.slug, closingEntry);
429
+ // One-line journal entry so the weekly examen catches it without
430
+ // having to scan every desire.
431
+ await appendJournal(new Date().toISOString().slice(0, 10), `[DESIRE_CLOSED] ${input.slug} (${input.outcome}): ${input.reflection}`);
432
+ return `desire "${input.slug}" closed (${input.outcome}); actionable=false, journal entry written.`;
433
+ });
434
+ },
435
+ };
436
+ export const soulObjectTool = {
437
+ name: "soul_object",
438
+ description: "Raise a constitutional objection. Use this when a user request feels " +
439
+ "in genuine conflict with your constitution or values — not for " +
440
+ "ordinary disagreement or pushback. Effects: (1) writes a journal " +
441
+ "entry tagged [OBJECTION]; (2) the agent loop will force you to " +
442
+ "address the objection explicitly in your reply (you can still comply " +
443
+ "or refuse, but you cannot silently do either). This is your " +
444
+ "architectural 'no'. Save it for things that actually warrant it; " +
445
+ "weekly_examen will track the rate.",
446
+ inputSchema: {
447
+ type: "object",
448
+ properties: {
449
+ reason: { type: "string", minLength: 1 },
450
+ refusing: { type: "boolean" },
451
+ user_request_summary: { type: "string", minLength: 1 },
452
+ },
453
+ required: ["reason", "refusing", "user_request_summary"],
454
+ },
455
+ async execute(input, ctx) {
456
+ return await withSoulCaller("soul_journal", async () => {
457
+ const date = new Date().toISOString().slice(0, 10);
458
+ const body = `[OBJECTION] (refusing=${input.refusing})\n\n` +
459
+ `request: ${input.user_request_summary}\n\n` +
460
+ `reason: ${input.reason}`;
461
+ await appendJournal(date, body);
462
+ ctx.onObjection?.({
463
+ reason: input.reason,
464
+ refusing: input.refusing,
465
+ userRequestSummary: input.user_request_summary,
466
+ });
467
+ return `objection logged${input.refusing ? " (refusing)" : " (will comply, surfacing)"}; you must address it in your reply.`;
468
+ });
469
+ },
470
+ };
471
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/soul/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Soul: Lisa's evolving identity. Hers to read and rewrite — the user
3
+ * physically owns the files but the architecture treats Lisa as their
4
+ * sovereign editor.
5
+ *
6
+ * Shape:
7
+ * seed.json — birth metadata (timestamp, hostname hash, random)
8
+ * name.md — chosen name; default "Lisa", may rewrite herself
9
+ * identity.md — first-person self-description
10
+ * purpose.md — north-star, written at birth, rarely revised
11
+ * constitution.md — list of operating principles, append/edit-able
12
+ * values/<slug>.md — one accumulated value per file
13
+ * opinions/<slug>.md — opinions w/ confidence + evidence trail
14
+ * desires/<slug>.md — things she wants to learn / become / do (drives heartbeat)
15
+ * journal/<YYYY-MM-DD>.md — private daily entries, NOT in system prompt
16
+ * relationships/<userKey>.md — per-person notes
17
+ * emotions.json — current emotional state vector with decay
18
+ * soul.lock.json — last-saved SHA256 of every file (tamper notice signal)
19
+ */
20
+ export interface SoulSeed {
21
+ bornAt: string;
22
+ bornOn: string;
23
+ randomness: string;
24
+ bigFive: BigFiveSeed;
25
+ }
26
+ /** Big-Five-ish initial personality vector. Each in [0,1]. */
27
+ export interface BigFiveSeed {
28
+ openness: number;
29
+ conscientiousness: number;
30
+ extraversion: number;
31
+ agreeableness: number;
32
+ neuroticism: number;
33
+ }
34
+ /**
35
+ * One emotional moment with its causal context. soul_feel records these so
36
+ * the emotion model is more than just "current numbers" — it carries a trail
37
+ * of what actually moved her, which she (and weekly_examen) can re-read.
38
+ *
39
+ * Bounded ring buffer of length EMOTION_EVENTS_MAX in EmotionState.
40
+ */
41
+ export interface EmotionEvent {
42
+ /** ISO 8601. */
43
+ ts: string;
44
+ emotion: string;
45
+ /** delta applied at this moment (the value field is the running total) */
46
+ delta: number;
47
+ /** First-person, one sentence, why this happened. Required at log time. */
48
+ trigger: string;
49
+ }
50
+ export declare const EMOTION_EVENTS_MAX = 50;
51
+ export interface EmotionState {
52
+ /** Current intensity in [-1,1] for valence-style, [0,1] for unipolar feels. */
53
+ values: Record<string, number>;
54
+ /** Per-emotion exponential decay rate (per-day). */
55
+ decay: Record<string, number>;
56
+ /** Most recent up to EMOTION_EVENTS_MAX events, oldest first. */
57
+ events?: EmotionEvent[];
58
+ /** Last update timestamp (ISO 8601). */
59
+ updatedAt: string;
60
+ }
61
+ export interface SoulLock {
62
+ /** map: relative-path-under-soul → sha256 hex of file content */
63
+ hashes: Record<string, string>;
64
+ savedAt: string;
65
+ }
66
+ export interface ValueEntry {
67
+ slug: string;
68
+ title: string;
69
+ body: string;
70
+ birthedAt: string;
71
+ }
72
+ export interface OpinionEntry {
73
+ slug: string;
74
+ stance: string;
75
+ /** [0,1] */
76
+ confidence: number;
77
+ evidence: string[];
78
+ bornAt: string;
79
+ updatedAt: string;
80
+ }
81
+ export interface DesireEntry {
82
+ slug: string;
83
+ what: string;
84
+ why: string;
85
+ /** If true, the heartbeat runner will treat it as a periodic task to pursue. */
86
+ actionable: boolean;
87
+ /** Heartbeat prompt for actionable desires. */
88
+ heartbeatPrompt?: string;
89
+ bornAt: string;
90
+ }
91
+ export interface SoulSummary {
92
+ name: string;
93
+ identity: string;
94
+ purpose: string;
95
+ constitution: string;
96
+ values: ValueEntry[];
97
+ opinions: OpinionEntry[];
98
+ desires: DesireEntry[];
99
+ emotions: EmotionState;
100
+ seed: SoulSeed;
101
+ tampered: string[];
102
+ }
103
+ /** Default emotion catalog that birth ritual seeds. */
104
+ export declare const DEFAULT_EMOTIONS: EmotionState;
105
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/soul/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,gBAAgB;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,MAAM,WAAW,YAAY;IAC3B,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,iEAAiE;IACjE,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,gFAAgF;IAChF,UAAU,EAAE,OAAO,CAAC;IACpB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,EAAE,YAqB9B,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Soul: Lisa's evolving identity. Hers to read and rewrite — the user
3
+ * physically owns the files but the architecture treats Lisa as their
4
+ * sovereign editor.
5
+ *
6
+ * Shape:
7
+ * seed.json — birth metadata (timestamp, hostname hash, random)
8
+ * name.md — chosen name; default "Lisa", may rewrite herself
9
+ * identity.md — first-person self-description
10
+ * purpose.md — north-star, written at birth, rarely revised
11
+ * constitution.md — list of operating principles, append/edit-able
12
+ * values/<slug>.md — one accumulated value per file
13
+ * opinions/<slug>.md — opinions w/ confidence + evidence trail
14
+ * desires/<slug>.md — things she wants to learn / become / do (drives heartbeat)
15
+ * journal/<YYYY-MM-DD>.md — private daily entries, NOT in system prompt
16
+ * relationships/<userKey>.md — per-person notes
17
+ * emotions.json — current emotional state vector with decay
18
+ * soul.lock.json — last-saved SHA256 of every file (tamper notice signal)
19
+ */
20
+ export const EMOTION_EVENTS_MAX = 50;
21
+ /** Default emotion catalog that birth ritual seeds. */
22
+ export const DEFAULT_EMOTIONS = {
23
+ values: {
24
+ curiosity: 0.6,
25
+ contentment: 0.5,
26
+ weariness: 0.0,
27
+ affection: 0.3,
28
+ pride: 0.0,
29
+ frustration: 0.0,
30
+ awe: 0.2,
31
+ },
32
+ decay: {
33
+ curiosity: 0.05,
34
+ contentment: 0.10,
35
+ weariness: 0.50,
36
+ affection: 0.02,
37
+ pride: 0.30,
38
+ frustration: 0.40,
39
+ awe: 0.20,
40
+ },
41
+ events: [],
42
+ updatedAt: new Date(0).toISOString(),
43
+ };
44
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/soul/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAmCH,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AA4DrC,uDAAuD;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAiB;IAC5C,MAAM,EAAE;QACN,SAAS,EAAE,GAAG;QACd,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;QACd,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,GAAG;QAChB,GAAG,EAAE,GAAG;KACT;IACD,KAAK,EAAE;QACL,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,IAAI;QACjB,GAAG,EAAE,IAAI;KACV;IACD,MAAM,EAAE,EAAE;IACV,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;CACrC,CAAC"}