@namzu/cli 29.1.0 → 32.0.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 (311) hide show
  1. package/CHANGELOG.md +296 -1
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +5 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/acp.d.ts +20 -2
  6. package/dist/commands/acp.d.ts.map +1 -1
  7. package/dist/commands/acp.js +42 -5
  8. package/dist/commands/acp.js.map +1 -1
  9. package/dist/commands/drain.d.ts.map +1 -1
  10. package/dist/commands/drain.js +2 -1
  11. package/dist/commands/drain.js.map +1 -1
  12. package/dist/commands/exec-json.d.ts.map +1 -1
  13. package/dist/commands/exec-json.js +24 -1
  14. package/dist/commands/exec-json.js.map +1 -1
  15. package/dist/commands/exec.d.ts.map +1 -1
  16. package/dist/commands/exec.js +5 -1
  17. package/dist/commands/exec.js.map +1 -1
  18. package/dist/commands/prior-messages.d.ts.map +1 -1
  19. package/dist/commands/prior-messages.js +42 -2
  20. package/dist/commands/prior-messages.js.map +1 -1
  21. package/dist/commands/schedule.d.ts.map +1 -1
  22. package/dist/commands/schedule.js +7 -5
  23. package/dist/commands/schedule.js.map +1 -1
  24. package/dist/config/composer-triggers.d.ts +41 -0
  25. package/dist/config/composer-triggers.d.ts.map +1 -0
  26. package/dist/config/composer-triggers.js +80 -0
  27. package/dist/config/composer-triggers.js.map +1 -0
  28. package/dist/config/load.d.ts.map +1 -1
  29. package/dist/config/load.js +58 -0
  30. package/dist/config/load.js.map +1 -1
  31. package/dist/config/schema.d.ts +34 -0
  32. package/dist/config/schema.d.ts.map +1 -1
  33. package/dist/config/schema.js.map +1 -1
  34. package/dist/context/doctrine.d.ts +3 -3
  35. package/dist/context/doctrine.d.ts.map +1 -1
  36. package/dist/context/doctrine.js +3 -3
  37. package/dist/context/doctrine.js.map +1 -1
  38. package/dist/context/environment.d.ts +26 -3
  39. package/dist/context/environment.d.ts.map +1 -1
  40. package/dist/context/environment.js +68 -9
  41. package/dist/context/environment.js.map +1 -1
  42. package/dist/context/runtime-message.d.ts.map +1 -1
  43. package/dist/context/runtime-message.js +4 -0
  44. package/dist/context/runtime-message.js.map +1 -1
  45. package/dist/integrations/mcp/servers.d.ts +72 -5
  46. package/dist/integrations/mcp/servers.d.ts.map +1 -1
  47. package/dist/integrations/mcp/servers.js +144 -23
  48. package/dist/integrations/mcp/servers.js.map +1 -1
  49. package/dist/integrations/notifications/desktop.d.ts +2 -0
  50. package/dist/integrations/notifications/desktop.d.ts.map +1 -1
  51. package/dist/integrations/notifications/desktop.js +6 -5
  52. package/dist/integrations/notifications/desktop.js.map +1 -1
  53. package/dist/integrations/plugins/runtime.d.ts +10 -2
  54. package/dist/integrations/plugins/runtime.d.ts.map +1 -1
  55. package/dist/integrations/plugins/runtime.js +16 -29
  56. package/dist/integrations/plugins/runtime.js.map +1 -1
  57. package/dist/integrations/providers/harness-credentials.d.ts +9 -4
  58. package/dist/integrations/providers/harness-credentials.d.ts.map +1 -1
  59. package/dist/integrations/providers/harness-credentials.js +16 -8
  60. package/dist/integrations/providers/harness-credentials.js.map +1 -1
  61. package/dist/integrations/resident/session-step.d.ts.map +1 -1
  62. package/dist/integrations/resident/session-step.js +2 -1
  63. package/dist/integrations/resident/session-step.js.map +1 -1
  64. package/dist/integrations/sessions/store.d.ts.map +1 -1
  65. package/dist/integrations/sessions/store.js +20 -2
  66. package/dist/integrations/sessions/store.js.map +1 -1
  67. package/dist/integrations/subagents/NamzuCliAgent.d.ts +8 -0
  68. package/dist/integrations/subagents/NamzuCliAgent.d.ts.map +1 -0
  69. package/dist/integrations/subagents/NamzuCliAgent.js +9 -0
  70. package/dist/integrations/subagents/NamzuCliAgent.js.map +1 -0
  71. package/dist/integrations/subagents/runtime.d.ts +5 -4
  72. package/dist/integrations/subagents/runtime.d.ts.map +1 -1
  73. package/dist/integrations/subagents/runtime.js +46 -11
  74. package/dist/integrations/subagents/runtime.js.map +1 -1
  75. package/dist/integrations/web/open-url.d.ts +24 -0
  76. package/dist/integrations/web/open-url.d.ts.map +1 -0
  77. package/dist/integrations/web/open-url.js +73 -0
  78. package/dist/integrations/web/open-url.js.map +1 -0
  79. package/dist/integrations/web/search.d.ts.map +1 -1
  80. package/dist/integrations/web/search.js +8 -6
  81. package/dist/integrations/web/search.js.map +1 -1
  82. package/dist/permissions/rules.d.ts +5 -1
  83. package/dist/permissions/rules.d.ts.map +1 -1
  84. package/dist/permissions/rules.js +85 -3
  85. package/dist/permissions/rules.js.map +1 -1
  86. package/dist/schedule/build.d.ts +26 -2
  87. package/dist/schedule/build.d.ts.map +1 -1
  88. package/dist/schedule/build.js +139 -20
  89. package/dist/schedule/build.js.map +1 -1
  90. package/dist/schedule/changes.d.ts +6 -0
  91. package/dist/schedule/changes.d.ts.map +1 -1
  92. package/dist/schedule/changes.js +23 -0
  93. package/dist/schedule/changes.js.map +1 -1
  94. package/dist/schedule/commands/add.d.ts +1 -1
  95. package/dist/schedule/commands/add.d.ts.map +1 -1
  96. package/dist/schedule/commands/add.js +188 -54
  97. package/dist/schedule/commands/add.js.map +1 -1
  98. package/dist/schedule/commands/lifecycle.d.ts.map +1 -1
  99. package/dist/schedule/commands/lifecycle.js +2 -1
  100. package/dist/schedule/commands/lifecycle.js.map +1 -1
  101. package/dist/schedule/commands/list.d.ts +2 -0
  102. package/dist/schedule/commands/list.d.ts.map +1 -1
  103. package/dist/schedule/commands/list.js +69 -20
  104. package/dist/schedule/commands/list.js.map +1 -1
  105. package/dist/schedule/daemon/daemon.d.ts +1 -1
  106. package/dist/schedule/daemon/daemon.d.ts.map +1 -1
  107. package/dist/schedule/daemon/daemon.js +22 -5
  108. package/dist/schedule/daemon/daemon.js.map +1 -1
  109. package/dist/schedule/daemon/notify.d.ts +29 -2
  110. package/dist/schedule/daemon/notify.d.ts.map +1 -1
  111. package/dist/schedule/daemon/notify.js +71 -2
  112. package/dist/schedule/daemon/notify.js.map +1 -1
  113. package/dist/schedule/env.d.ts +8 -4
  114. package/dist/schedule/env.d.ts.map +1 -1
  115. package/dist/schedule/env.js +13 -6
  116. package/dist/schedule/env.js.map +1 -1
  117. package/dist/schedule/fire/calls.d.ts +49 -0
  118. package/dist/schedule/fire/calls.d.ts.map +1 -0
  119. package/dist/schedule/fire/calls.js +114 -0
  120. package/dist/schedule/fire/calls.js.map +1 -0
  121. package/dist/schedule/fire/fire.d.ts +1 -1
  122. package/dist/schedule/fire/fire.d.ts.map +1 -1
  123. package/dist/schedule/fire/fire.js +209 -15
  124. package/dist/schedule/fire/fire.js.map +1 -1
  125. package/dist/schedule/fire/result.d.ts +1 -1
  126. package/dist/schedule/fire/result.d.ts.map +1 -1
  127. package/dist/schedule/fire/result.js +2 -1
  128. package/dist/schedule/fire/result.js.map +1 -1
  129. package/dist/schedule/fire/run-script.d.ts +46 -0
  130. package/dist/schedule/fire/run-script.d.ts.map +1 -0
  131. package/dist/schedule/fire/run-script.js +81 -0
  132. package/dist/schedule/fire/run-script.js.map +1 -0
  133. package/dist/schedule/fire/unattended-note.d.ts +8 -0
  134. package/dist/schedule/fire/unattended-note.d.ts.map +1 -1
  135. package/dist/schedule/fire/unattended-note.js +5 -0
  136. package/dist/schedule/fire/unattended-note.js.map +1 -1
  137. package/dist/schedule/fire/wake-gate.d.ts +39 -0
  138. package/dist/schedule/fire/wake-gate.d.ts.map +1 -0
  139. package/dist/schedule/fire/wake-gate.js +90 -0
  140. package/dist/schedule/fire/wake-gate.js.map +1 -0
  141. package/dist/schedule/floor.d.ts +28 -8
  142. package/dist/schedule/floor.d.ts.map +1 -1
  143. package/dist/schedule/floor.js +624 -114
  144. package/dist/schedule/floor.js.map +1 -1
  145. package/dist/schedule/policy.d.ts +40 -0
  146. package/dist/schedule/policy.d.ts.map +1 -1
  147. package/dist/schedule/policy.js +36 -0
  148. package/dist/schedule/policy.js.map +1 -1
  149. package/dist/schedule/script-check.d.ts +53 -0
  150. package/dist/schedule/script-check.d.ts.map +1 -0
  151. package/dist/schedule/script-check.js +145 -0
  152. package/dist/schedule/script-check.js.map +1 -0
  153. package/dist/schedule/script-shell.d.ts +3 -0
  154. package/dist/schedule/script-shell.d.ts.map +1 -0
  155. package/dist/schedule/script-shell.js +5 -0
  156. package/dist/schedule/script-shell.js.map +1 -0
  157. package/dist/schedule/service/index.d.ts +1 -1
  158. package/dist/schedule/service/index.d.ts.map +1 -1
  159. package/dist/schedule/service/index.js +20 -11
  160. package/dist/schedule/service/index.js.map +1 -1
  161. package/dist/schedule/service/manifest.js +1 -1
  162. package/dist/schedule/service/manifest.js.map +1 -1
  163. package/dist/schedule/service/windows-task.d.ts +7 -0
  164. package/dist/schedule/service/windows-task.d.ts.map +1 -1
  165. package/dist/schedule/service/windows-task.js +65 -0
  166. package/dist/schedule/service/windows-task.js.map +1 -1
  167. package/dist/schedule/service/wsl.d.ts +13 -1
  168. package/dist/schedule/service/wsl.d.ts.map +1 -1
  169. package/dist/schedule/service/wsl.js +16 -6
  170. package/dist/schedule/service/wsl.js.map +1 -1
  171. package/dist/schedule/store/atomic.d.ts +5 -2
  172. package/dist/schedule/store/atomic.d.ts.map +1 -1
  173. package/dist/schedule/store/atomic.js +7 -4
  174. package/dist/schedule/store/atomic.js.map +1 -1
  175. package/dist/schedule/store/claims.js +1 -1
  176. package/dist/schedule/store/claims.js.map +1 -1
  177. package/dist/schedule/store/history.d.ts +1 -1
  178. package/dist/schedule/store/history.d.ts.map +1 -1
  179. package/dist/schedule/store/history.js +4 -1
  180. package/dist/schedule/store/history.js.map +1 -1
  181. package/dist/schedule/store/jobs.d.ts +19 -3
  182. package/dist/schedule/store/jobs.d.ts.map +1 -1
  183. package/dist/schedule/store/jobs.js +83 -16
  184. package/dist/schedule/store/jobs.js.map +1 -1
  185. package/dist/schedule/store/state.js +1 -1
  186. package/dist/schedule/store/state.js.map +1 -1
  187. package/dist/schedule/types.d.ts +98 -6
  188. package/dist/schedule/types.d.ts.map +1 -1
  189. package/dist/schedule/types.js +25 -1
  190. package/dist/schedule/types.js.map +1 -1
  191. package/dist/schedule/visible-source.d.ts +18 -0
  192. package/dist/schedule/visible-source.d.ts.map +1 -0
  193. package/dist/schedule/visible-source.js +59 -0
  194. package/dist/schedule/visible-source.js.map +1 -0
  195. package/dist/skills/directory.d.ts +38 -0
  196. package/dist/skills/directory.d.ts.map +1 -0
  197. package/dist/skills/directory.js +51 -0
  198. package/dist/skills/directory.js.map +1 -0
  199. package/dist/test-support/toolset.d.ts +23 -0
  200. package/dist/test-support/toolset.d.ts.map +1 -0
  201. package/dist/test-support/toolset.js +27 -0
  202. package/dist/test-support/toolset.js.map +1 -0
  203. package/dist/tui/App.d.ts.map +1 -1
  204. package/dist/tui/App.js +343 -64
  205. package/dist/tui/App.js.map +1 -1
  206. package/dist/tui/ChoicePicker.d.ts +2 -0
  207. package/dist/tui/ChoicePicker.d.ts.map +1 -1
  208. package/dist/tui/ChoicePicker.js +10 -2
  209. package/dist/tui/ChoicePicker.js.map +1 -1
  210. package/dist/tui/Composer.d.ts +62 -3
  211. package/dist/tui/Composer.d.ts.map +1 -1
  212. package/dist/tui/Composer.js +162 -25
  213. package/dist/tui/Composer.js.map +1 -1
  214. package/dist/tui/ComposerFrame.d.ts +1 -1
  215. package/dist/tui/ComposerFrame.js +3 -3
  216. package/dist/tui/ComposerFrame.js.map +1 -1
  217. package/dist/tui/EffortSlider.d.ts +8 -9
  218. package/dist/tui/EffortSlider.d.ts.map +1 -1
  219. package/dist/tui/EffortSlider.js +15 -12
  220. package/dist/tui/EffortSlider.js.map +1 -1
  221. package/dist/tui/PermissionOverlay.d.ts +13 -1
  222. package/dist/tui/PermissionOverlay.d.ts.map +1 -1
  223. package/dist/tui/PermissionOverlay.js +26 -4
  224. package/dist/tui/PermissionOverlay.js.map +1 -1
  225. package/dist/tui/StatusBar.d.ts +12 -12
  226. package/dist/tui/StatusBar.d.ts.map +1 -1
  227. package/dist/tui/StatusBar.js +15 -15
  228. package/dist/tui/StatusBar.js.map +1 -1
  229. package/dist/tui/agent.d.ts +73 -12
  230. package/dist/tui/agent.d.ts.map +1 -1
  231. package/dist/tui/agent.js +430 -180
  232. package/dist/tui/agent.js.map +1 -1
  233. package/dist/tui/hypermode.d.ts +37 -0
  234. package/dist/tui/hypermode.d.ts.map +1 -0
  235. package/dist/tui/hypermode.js +58 -0
  236. package/dist/tui/hypermode.js.map +1 -0
  237. package/dist/tui/open-browser.d.ts +29 -1
  238. package/dist/tui/open-browser.d.ts.map +1 -1
  239. package/dist/tui/open-browser.js +83 -11
  240. package/dist/tui/open-browser.js.map +1 -1
  241. package/dist/tui/permission-review.d.ts +11 -2
  242. package/dist/tui/permission-review.d.ts.map +1 -1
  243. package/dist/tui/permission-review.js +176 -19
  244. package/dist/tui/permission-review.js.map +1 -1
  245. package/dist/tui/schedule/host-commands.d.ts.map +1 -1
  246. package/dist/tui/schedule/host-commands.js +95 -33
  247. package/dist/tui/schedule/host-commands.js.map +1 -1
  248. package/dist/tui/schedule/integration.d.ts +6 -2
  249. package/dist/tui/schedule/integration.d.ts.map +1 -1
  250. package/dist/tui/schedule/integration.js +3 -1
  251. package/dist/tui/schedule/integration.js.map +1 -1
  252. package/dist/tui/schedule/resume.d.ts.map +1 -1
  253. package/dist/tui/schedule/resume.js +10 -1
  254. package/dist/tui/schedule/resume.js.map +1 -1
  255. package/dist/tui/schedule/tool-host.d.ts +18 -1
  256. package/dist/tui/schedule/tool-host.d.ts.map +1 -1
  257. package/dist/tui/schedule/tool-host.js +384 -84
  258. package/dist/tui/schedule/tool-host.js.map +1 -1
  259. package/dist/tui/slashCommands.d.ts +23 -5
  260. package/dist/tui/slashCommands.d.ts.map +1 -1
  261. package/dist/tui/slashCommands.js +80 -31
  262. package/dist/tui/slashCommands.js.map +1 -1
  263. package/dist/tui/theme.d.ts +10 -4
  264. package/dist/tui/theme.d.ts.map +1 -1
  265. package/dist/tui/theme.js +4 -3
  266. package/dist/tui/theme.js.map +1 -1
  267. package/dist/tui/triggers/analyze.d.ts +57 -0
  268. package/dist/tui/triggers/analyze.d.ts.map +1 -0
  269. package/dist/tui/triggers/analyze.js +221 -0
  270. package/dist/tui/triggers/analyze.js.map +1 -0
  271. package/dist/tui/triggers/context-text.d.ts +21 -0
  272. package/dist/tui/triggers/context-text.d.ts.map +1 -0
  273. package/dist/tui/triggers/context-text.js +44 -0
  274. package/dist/tui/triggers/context-text.js.map +1 -0
  275. package/dist/tui/triggers/copy.d.ts +38 -0
  276. package/dist/tui/triggers/copy.d.ts.map +1 -0
  277. package/dist/tui/triggers/copy.js +163 -0
  278. package/dist/tui/triggers/copy.js.map +1 -0
  279. package/dist/tui/triggers/detect.d.ts +83 -0
  280. package/dist/tui/triggers/detect.d.ts.map +1 -0
  281. package/dist/tui/triggers/detect.js +295 -0
  282. package/dist/tui/triggers/detect.js.map +1 -0
  283. package/dist/tui/triggers/fold.d.ts +34 -0
  284. package/dist/tui/triggers/fold.d.ts.map +1 -0
  285. package/dist/tui/triggers/fold.js +44 -0
  286. package/dist/tui/triggers/fold.js.map +1 -0
  287. package/dist/tui/triggers/pattern.d.ts +66 -0
  288. package/dist/tui/triggers/pattern.d.ts.map +1 -0
  289. package/dist/tui/triggers/pattern.js +243 -0
  290. package/dist/tui/triggers/pattern.js.map +1 -0
  291. package/dist/tui/triggers/provenance.d.ts +58 -0
  292. package/dist/tui/triggers/provenance.d.ts.map +1 -0
  293. package/dist/tui/triggers/provenance.js +98 -0
  294. package/dist/tui/triggers/provenance.js.map +1 -0
  295. package/dist/tui/triggers/registry.d.ts +113 -0
  296. package/dist/tui/triggers/registry.d.ts.map +1 -0
  297. package/dist/tui/triggers/registry.js +164 -0
  298. package/dist/tui/triggers/registry.js.map +1 -0
  299. package/dist/tui/triggers/setting.d.ts +18 -0
  300. package/dist/tui/triggers/setting.d.ts.map +1 -0
  301. package/dist/tui/triggers/setting.js +61 -0
  302. package/dist/tui/triggers/setting.js.map +1 -0
  303. package/dist/tui/triggers/verbs.d.ts +29 -0
  304. package/dist/tui/triggers/verbs.d.ts.map +1 -0
  305. package/dist/tui/triggers/verbs.js +140 -0
  306. package/dist/tui/triggers/verbs.js.map +1 -0
  307. package/dist/tui/types.d.ts +3 -1
  308. package/dist/tui/types.d.ts.map +1 -1
  309. package/package.json +12 -12
  310. package/skills/README.md +5 -0
  311. package/skills/schedule-task/SKILL.md +123 -5
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Composer triggers: words typed into the TUI composer that name one namzu
3
+ * action for the message being written, shown before Enter and dropped with
4
+ * Alt+W. See docs/cli/composer-triggers.md.
5
+ *
6
+ * A trigger is a shorthand for something namzu already does. It grants
7
+ * nothing, skips no confirmation and lasts one turn: `TriggerEffect` has no
8
+ * kind for a permission mode, a directory, a credential, the sandbox, a tool
9
+ * list or a limit, and a test pins that. The operator's words reach the model
10
+ * and the log unchanged; namzu's own words for a trigger travel beside them as
11
+ * request-only context (`context-text.ts`).
12
+ *
13
+ * This module is the TUI's alone: `exec`, `drain`, ACP, the scheduler and
14
+ * sub-agents never import it (a test says so).
15
+ */
16
+ import { COMPOSER_TRIGGER_DEFAULTS, COMPOSER_TRIGGER_IDS } from '../../config/composer-triggers.js';
17
+ import { fold } from './fold.js';
18
+ import { compilePattern } from './pattern.js';
19
+ import { verbForms } from './verbs.js';
20
+ export const TRIGGER_IDS = COMPOSER_TRIGGER_IDS;
21
+ const both = (pattern) => ({ pattern, edges: 'both' });
22
+ const right = (pattern) => ({ pattern, edges: 'right' });
23
+ /** The built-in triggers, in the order their tags are shown. */
24
+ export const BUILTIN_TRIGGERS = [
25
+ {
26
+ id: 'hypermode',
27
+ label: 'hypermode',
28
+ keywords: ['hypermode'],
29
+ phrases: {
30
+ en: [
31
+ both('[please] delegate (this|it|that) to (agents|subagents|sub agents|parallel agents) [please]'),
32
+ both('[please] use (subagents|sub agents|parallel agents) for (this|it|that) [please]'),
33
+ ],
34
+ tr: [
35
+ right("[lütfen] (bunu|bunları|onu) (ajanlara|alt ajanlara|agent+'|subagent+') {dağıt} [lütfen]"),
36
+ right('(bunu|bunları|onu) (alt ajanlarla|ajanlarla|agentlarla|subagentlarla) {yap} [lütfen]'),
37
+ ],
38
+ },
39
+ loose: {
40
+ en: [[['delegate'], ['agents', 'subagents']]],
41
+ tr: [
42
+ [
43
+ ['ajanlara', 'agent*', 'subagent*', 'ajanlarla'],
44
+ ['{dağıt}', '{yap}'],
45
+ ],
46
+ ],
47
+ },
48
+ effect: { kind: 'turn-context', text: 'hypermode', effort: 'hypermode' },
49
+ scope: 'turn',
50
+ arming: COMPOSER_TRIGGER_DEFAULTS.hypermode,
51
+ },
52
+ {
53
+ id: 'save-skill',
54
+ label: 'save as skill',
55
+ keywords: [],
56
+ phrases: {
57
+ en: [
58
+ both('[please|now|can you|could you|would you|will you] (save|turn) (this|it|that) (as|into) [a|an] [new|reusable] skill [please]'),
59
+ both('[please|now|can you|could you|would you|will you] make (this|it|that) [into] (a|an) [new|reusable] skill [please]'),
60
+ ],
61
+ tr: [
62
+ right('[lütfen] [bunu|bunları|onu] [da|de] [yeni] [bir] (skill|beceri|yetenek) olarak {kaydet} [lütfen]'),
63
+ right("[lütfen] (bunu|bunları|onu) [da|de] (skill+'|beceri+'|yetenek+') {çevir|dönüştür} [lütfen]"),
64
+ right('bundan [bir] [yeni] (skill|beceri|yetenek) {yap|oluştur} [lütfen]'),
65
+ ],
66
+ },
67
+ loose: {
68
+ en: [[['save', 'turn', 'make'], ['this', 'it', 'that'], ['skill']]],
69
+ tr: [
70
+ [
71
+ ['skill*', 'beceri*', 'yetenek*'],
72
+ ['{kaydet}', '{çevir}', '{dönüştür}', '{yap}', '{oluştur}'],
73
+ ],
74
+ ],
75
+ },
76
+ effect: { kind: 'after-turn', command: '/skills save', text: 'save-skill' },
77
+ scope: 'after-turn',
78
+ standalone: '/skills save',
79
+ arming: COMPOSER_TRIGGER_DEFAULTS['save-skill'],
80
+ },
81
+ {
82
+ id: 'schedule',
83
+ label: 'schedule',
84
+ keywords: [],
85
+ phrases: {
86
+ en: [
87
+ both('schedule (this|it) [with namzu]'),
88
+ both('run (this|it) every (day|morning|evening|night|hour|week|<n> (minutes|hours|days))'),
89
+ ],
90
+ tr: [
91
+ right('(bunu|onu) her (gün|sabah|akşam|saat|hafta) {çalıştır}'),
92
+ right('(bunu|onu) zamanlanmış görev olarak {kaydet|ekle}'),
93
+ ],
94
+ },
95
+ loose: {},
96
+ effect: { kind: 'turn-context', text: 'schedule' },
97
+ scope: 'turn',
98
+ // Phrases about a schedule usually describe the code being written
99
+ // ("write a backup script and schedule it"): offered, never armed.
100
+ arming: COMPOSER_TRIGGER_DEFAULTS.schedule,
101
+ },
102
+ {
103
+ id: 'max-effort',
104
+ label: 'max effort',
105
+ keywords: [],
106
+ phrases: {
107
+ en: [both('think (as hard as you can|at max effort|at maximum effort)')],
108
+ tr: [right('en yüksek (eforla|çabayla) {düşün}')],
109
+ },
110
+ loose: {},
111
+ effect: { kind: 'turn-effort', effort: 'highest' },
112
+ scope: 'turn',
113
+ arming: COMPOSER_TRIGGER_DEFAULTS['max-effort'],
114
+ },
115
+ ];
116
+ export function compileRegistry(definitions = BUILTIN_TRIGGERS, options = {}) {
117
+ const locales = new Set(options.locales ?? ['en', 'tr']);
118
+ const triggers = [];
119
+ for (const definition of definitions) {
120
+ const arming = options.arming?.[definition.id] ?? definition.arming;
121
+ if (arming === 'off')
122
+ continue;
123
+ triggers.push({
124
+ definition,
125
+ arming,
126
+ keywords: new Set(definition.keywords.map(fold)),
127
+ phrases: Object.entries(definition.phrases)
128
+ .filter(([locale]) => locales.has(locale))
129
+ .flatMap(([locale, specs]) => specs.map((spec) => ({
130
+ pattern: compilePattern(spec.pattern),
131
+ edges: spec.edges,
132
+ locale,
133
+ }))),
134
+ loose: Object.entries(definition.loose)
135
+ .filter(([locale]) => locales.has(locale))
136
+ .flatMap(([locale, specs]) => specs.map((slots) => ({ slots: slots.map(slotMatcher), locale }))),
137
+ });
138
+ }
139
+ const armings = triggers.map((trigger) => `${trigger.definition.id}:${trigger.arming}`);
140
+ const version = `${armings.join(',')}|${[...locales].join(',')}`;
141
+ return { triggers, version };
142
+ }
143
+ function slotMatcher(entries) {
144
+ const exact = new Set();
145
+ const prefixes = [];
146
+ for (const entry of entries) {
147
+ if (entry.startsWith('{') && entry.endsWith('}')) {
148
+ for (const form of verbForms(entry.slice(1, -1)))
149
+ exact.add(form.tokens[0]);
150
+ }
151
+ else if (entry.endsWith('*'))
152
+ prefixes.push(fold(entry.slice(0, -1)));
153
+ else
154
+ exact.add(fold(entry));
155
+ }
156
+ return (token) => exact.has(token) || prefixes.some((prefix) => token.startsWith(prefix));
157
+ }
158
+ export function triggerDefinition(id) {
159
+ const found = BUILTIN_TRIGGERS.find((trigger) => trigger.id === id);
160
+ if (!found)
161
+ throw new Error(`Unknown trigger ${id}`);
162
+ return found;
163
+ }
164
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/tui/triggers/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AAEnG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAwB,cAAc,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAItC,MAAM,CAAC,MAAM,WAAW,GAAyB,oBAAoB,CAAA;AAmErE,MAAM,IAAI,GAAG,CAAC,OAAe,EAAc,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;AAC1E,MAAM,KAAK,GAAG,CAAC,OAAe,EAAc,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;AAE5E,gEAAgE;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAiC;IAC7D;QACC,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,CAAC,WAAW,CAAC;QACvB,OAAO,EAAE;YACR,EAAE,EAAE;gBACH,IAAI,CACH,4FAA4F,CAC5F;gBACD,IAAI,CAAC,iFAAiF,CAAC;aACvF;YACD,EAAE,EAAE;gBACH,KAAK,CACJ,yFAAyF,CACzF;gBACD,KAAK,CACJ,sFAAsF,CACtF;aACD;SACD;QACD,KAAK,EAAE;YACN,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;YAC7C,EAAE,EAAE;gBACH;oBACC,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC;oBAChD,CAAC,SAAS,EAAE,OAAO,CAAC;iBACpB;aACD;SACD;QACD,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE;QACxE,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,yBAAyB,CAAC,SAAS;KAC3C;IACD;QACC,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE;YACR,EAAE,EAAE;gBACH,IAAI,CACH,6HAA6H,CAC7H;gBACD,IAAI,CACH,mHAAmH,CACnH;aACD;YACD,EAAE,EAAE;gBACH,KAAK,CACJ,kGAAkG,CAClG;gBACD,KAAK,CACJ,4FAA4F,CAC5F;gBACD,KAAK,CAAC,mEAAmE,CAAC;aAC1E;SACD;QACD,KAAK,EAAE;YACN,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YACnE,EAAE,EAAE;gBACH;oBACC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC;oBACjC,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC;iBAC3D;aACD;SACD;QACD,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;QAC3E,KAAK,EAAE,YAAY;QACnB,UAAU,EAAE,cAAc;QAC1B,MAAM,EAAE,yBAAyB,CAAC,YAAY,CAAC;KAC/C;IACD;QACC,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE;YACR,EAAE,EAAE;gBACH,IAAI,CAAC,iCAAiC,CAAC;gBACvC,IAAI,CAAC,oFAAoF,CAAC;aAC1F;YACD,EAAE,EAAE;gBACH,KAAK,CAAC,wDAAwD,CAAC;gBAC/D,KAAK,CAAC,mDAAmD,CAAC;aAC1D;SACD;QACD,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE;QAClD,KAAK,EAAE,MAAM;QACb,mEAAmE;QACnE,mEAAmE;QACnE,MAAM,EAAE,yBAAyB,CAAC,QAAQ;KAC1C;IACD;QACC,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE;YACR,EAAE,EAAE,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;YACxE,EAAE,EAAE,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACjD;QACD,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE;QAClD,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,yBAAyB,CAAC,YAAY,CAAC;KAC/C;CACD,CAAA;AA8BD,MAAM,UAAU,eAAe,CAC9B,cAA4C,gBAAgB,EAC5D,UAA2B,EAAE;IAE7B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAgB,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IACvE,MAAM,QAAQ,GAAsB,EAAE,CAAA;IACtC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,MAAM,CAAA;QACnE,IAAI,MAAM,KAAK,KAAK;YAAE,SAAQ;QAC9B,QAAQ,CAAC,IAAI,CAAC;YACb,UAAU;YACV,MAAM;YACN,QAAQ,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChD,OAAO,EAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAA8C;iBACvF,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACzC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACpB,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;gBACrC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM;aACN,CAAC,CAAC,CACH;YACF,KAAK,EAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAA6C;iBAClF,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACzC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CACjE;SACF,CAAC,CAAA;IACH,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACvF,MAAM,OAAO,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;IAChE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;AAC7B,CAAC;AAED,SAAS,WAAW,CAAC,OAA0B;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAW,CAAC,CAAA;QACtF,CAAC;aAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;;YAClE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5B,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;AAC1F,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAa;IAC9C,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IACnE,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAA;IACpD,OAAO,KAAK,CAAA;AACb,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * `/config triggers on|off|list`: write `composerTriggers.enabled` to the user
3
+ * config, then read the whole cascade back and say whether the value holds.
4
+ *
5
+ * A project file cannot switch the feature on over the user file (it can
6
+ * only turn things down), but the managed file can force it either way, and
7
+ * a project file may have turned it off. Writing the user file and saying
8
+ * "done" would then be false the next time namzu starts, so the message
9
+ * names the file that wins. The running session follows the operator's
10
+ * choice either way.
11
+ */
12
+ import { type LoadConfigOptions } from '../../config/load.js';
13
+ type CascadeOptions = Pick<LoadConfigOptions, 'cwd' | 'env' | 'home' | 'profile' | 'managedPath'>;
14
+ export declare function setComposerTriggers(on: boolean, opts?: CascadeOptions): string;
15
+ /** `/config triggers list`: what is in force, one line per setting. */
16
+ export declare function describeComposerTriggers(enabledNow: boolean, opts?: CascadeOptions): string;
17
+ export {};
18
+ //# sourceMappingURL=setting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setting.d.ts","sourceRoot":"","sources":["../../../src/tui/triggers/setting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,KAAK,iBAAiB,EAA4B,MAAM,sBAAsB,CAAA;AAGvF,KAAK,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC,CAAA;AAEjG,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,GAAE,cAAmB,GAAG,MAAM,CAwBlF;AAED,uEAAuE;AACvE,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,GAAE,cAAmB,GAAG,MAAM,CAc/F"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * `/config triggers on|off|list`: write `composerTriggers.enabled` to the user
3
+ * config, then read the whole cascade back and say whether the value holds.
4
+ *
5
+ * A project file cannot switch the feature on over the user file (it can
6
+ * only turn things down), but the managed file can force it either way, and
7
+ * a project file may have turned it off. Writing the user file and saying
8
+ * "done" would then be false the next time namzu starts, so the message
9
+ * names the file that wins. The running session follows the operator's
10
+ * choice either way.
11
+ */
12
+ import { COMPOSER_TRIGGER_IDS, resolveComposerTriggers } from '../../config/composer-triggers.js';
13
+ import { formatConfigSource } from '../../config/debug.js';
14
+ import { loadConfigWithProvenance } from '../../config/load.js';
15
+ import { setUserConfigValue } from '../../config/user-config.js';
16
+ export function setComposerTriggers(on, opts = {}) {
17
+ let file;
18
+ try {
19
+ file = setUserConfigValue(['composerTriggers', 'enabled'], on, {
20
+ ...(opts.home ? { home: opts.home } : {}),
21
+ ...(opts.env ? { env: opts.env } : {}),
22
+ });
23
+ }
24
+ catch (error) {
25
+ return `Could not save composerTriggers.enabled: ${error instanceof Error ? error.message : String(error)} This session ${on ? 'reads' : 'ignores'} composer triggers until it ends.`;
26
+ }
27
+ const saved = on
28
+ ? `Composer triggers are on: hypermode and save-as-skill words in a message act for that message, shown before you send it (alt+w drops one). Saved composerTriggers.enabled: true to ${file}.`
29
+ : `Composer triggers are off: words in a message are only words. Saved composerTriggers.enabled: false to ${file}; /config triggers on turns them back on. /hypermode and /skills save still work.`;
30
+ let resolved;
31
+ try {
32
+ resolved = loadConfigWithProvenance(opts);
33
+ }
34
+ catch (error) {
35
+ return `${saved} Could not check the other config files (${error instanceof Error ? error.message : String(error)}); this session follows your choice.`;
36
+ }
37
+ const effective = resolveComposerTriggers(resolved.config.composerTriggers).enabled;
38
+ if (effective === on)
39
+ return saved;
40
+ const source = resolved.provenance.composerTriggers;
41
+ const winner = source ? formatConfigSource(source) : 'another config layer';
42
+ return `${saved} But ${winner} turns them ${effective ? 'on' : 'off'}, so from the next start they will be ${effective ? 'on' : 'off'}; this session follows your choice.`;
43
+ }
44
+ /** `/config triggers list`: what is in force, one line per setting. */
45
+ export function describeComposerTriggers(enabledNow, opts = {}) {
46
+ let config;
47
+ try {
48
+ config = loadConfigWithProvenance(opts).config.composerTriggers;
49
+ }
50
+ catch (error) {
51
+ return `Could not read the config files: ${error instanceof Error ? error.message : String(error)}`;
52
+ }
53
+ const settings = resolveComposerTriggers(config);
54
+ return [
55
+ `Composer triggers: ${enabledNow ? 'on' : 'off'} in this session${enabledNow === settings.enabled ? '' : ` (the config files say ${settings.enabled ? 'on' : 'off'})`}.`,
56
+ `Suggestions: ${settings.suggest ? 'on' : 'off'} · languages: ${settings.languages.join(', ')}`,
57
+ ...COMPOSER_TRIGGER_IDS.map((id) => ` ${id}: ${settings.arming[id]}`),
58
+ 'Change them under composerTriggers in ~/.namzu/config.yaml; /config triggers on|off switches all of them.',
59
+ ].join('\n');
60
+ }
61
+ //# sourceMappingURL=setting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setting.js","sourceRoot":"","sources":["../../../src/tui/triggers/setting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * The Turkish verb forms a composer-trigger phrase accepts, as data.
3
+ *
4
+ * Not a morphological analyser: for each verb the table lists the spellings
5
+ * that are positive requests — the imperative, its plural and formal forms,
6
+ * the "let's" form, "would you" (`kaydeder misin`, also written joined:
7
+ * `kaydedermisin`), "could you" (`kaydedebilir misin`), and the familiar
8
+ * `kaydetsene`. Negative forms (`kaydetme`, `kaydetmeyin`, `kaydetmeden`,
9
+ * `kaydetmesin`) are never generated, so a phrase cannot match one: negation
10
+ * is rejected by construction. Everything is stored folded (`fold.ts`), so
11
+ * `mısın` is `misin` and `dönüştür` is `donustur`.
12
+ *
13
+ * A form is a sequence of tokens: `kaydeder misin` is two.
14
+ */
15
+ export interface VerbForm {
16
+ /** Folded tokens, e.g. `['kaydeder', 'misin']`. */
17
+ readonly tokens: readonly string[];
18
+ /** A polite question (`… misin?`): a request even in a clause ending with `?`. */
19
+ readonly polite: boolean;
20
+ /** The "let's" form, a request when followed by the question particle `mi`. */
21
+ readonly optative: boolean;
22
+ }
23
+ /** The verbs a phrase may name as `{verb}`, by their folded imperative. */
24
+ export declare const VERB_NAMES: readonly string[];
25
+ /** Every accepted form of `verb` (folded imperative), or throws for a verb the table does not have. */
26
+ export declare function verbForms(verb: string): readonly VerbForm[];
27
+ /** The question particles that may follow a form directly (`kaydedelim mi`). */
28
+ export declare const QUESTION_PARTICLES: ReadonlySet<string>;
29
+ //# sourceMappingURL=verbs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verbs.d.ts","sourceRoot":"","sources":["../../../src/tui/triggers/verbs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,MAAM,WAAW,QAAQ;IACxB,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAC1B;AAuGD,2EAA2E;AAC3E,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EAAiC,CAAA;AAoCzE,uGAAuG;AACvG,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,QAAQ,EAAE,CAI3D;AAED,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAyB,CAAA"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * The Turkish verb forms a composer-trigger phrase accepts, as data.
3
+ *
4
+ * Not a morphological analyser: for each verb the table lists the spellings
5
+ * that are positive requests — the imperative, its plural and formal forms,
6
+ * the "let's" form, "would you" (`kaydeder misin`, also written joined:
7
+ * `kaydedermisin`), "could you" (`kaydedebilir misin`), and the familiar
8
+ * `kaydetsene`. Negative forms (`kaydetme`, `kaydetmeyin`, `kaydetmeden`,
9
+ * `kaydetmesin`) are never generated, so a phrase cannot match one: negation
10
+ * is rejected by construction. Everything is stored folded (`fold.ts`), so
11
+ * `mısın` is `misin` and `dönüştür` is `donustur`.
12
+ *
13
+ * A form is a sequence of tokens: `kaydeder misin` is two.
14
+ */
15
+ import { fold } from './fold.js';
16
+ const SPECS = {
17
+ kaydet: {
18
+ imperative: 'kaydet',
19
+ plural: ['kaydedin', 'kaydediniz'],
20
+ optative: 'kaydedelim',
21
+ aorist: 'kaydeder',
22
+ particle: 'misin',
23
+ abilitative: 'kaydedebilir',
24
+ familiar: 'kaydetsene',
25
+ },
26
+ çevir: {
27
+ imperative: 'çevir',
28
+ plural: ['çevirin', 'çeviriniz'],
29
+ optative: 'çevirelim',
30
+ aorist: 'çevirir',
31
+ particle: 'misin',
32
+ abilitative: 'çevirebilir',
33
+ familiar: 'çevirsene',
34
+ },
35
+ dönüştür: {
36
+ imperative: 'dönüştür',
37
+ plural: ['dönüştürün', 'dönüştürünüz'],
38
+ optative: 'dönüştürelim',
39
+ aorist: 'dönüştürür',
40
+ particle: 'müsün',
41
+ abilitative: 'dönüştürebilir',
42
+ familiar: 'dönüştürsene',
43
+ },
44
+ yap: {
45
+ imperative: 'yap',
46
+ plural: ['yapın', 'yapınız'],
47
+ optative: 'yapalım',
48
+ aorist: 'yapar',
49
+ particle: 'mısın',
50
+ abilitative: 'yapabilir',
51
+ familiar: 'yapsana',
52
+ },
53
+ oluştur: {
54
+ imperative: 'oluştur',
55
+ plural: ['oluşturun', 'oluşturunuz'],
56
+ optative: 'oluşturalım',
57
+ aorist: 'oluşturur',
58
+ particle: 'musun',
59
+ abilitative: 'oluşturabilir',
60
+ familiar: 'oluştursana',
61
+ },
62
+ çalıştır: {
63
+ imperative: 'çalıştır',
64
+ plural: ['çalıştırın', 'çalıştırınız'],
65
+ optative: 'çalıştıralım',
66
+ aorist: 'çalıştırır',
67
+ particle: 'mısın',
68
+ abilitative: 'çalıştırabilir',
69
+ familiar: 'çalıştırsana',
70
+ },
71
+ dağıt: {
72
+ imperative: 'dağıt',
73
+ plural: ['dağıtın', 'dağıtınız'],
74
+ optative: 'dağıtalım',
75
+ aorist: 'dağıtır',
76
+ particle: 'mısın',
77
+ abilitative: 'dağıtabilir',
78
+ familiar: 'dağıtsana',
79
+ },
80
+ düşün: {
81
+ imperative: 'düşün',
82
+ plural: ['düşünün', 'düşününüz'],
83
+ optative: 'düşünelim',
84
+ aorist: 'düşünür',
85
+ particle: 'müsün',
86
+ abilitative: 'düşünebilir',
87
+ familiar: 'düşünsene',
88
+ },
89
+ ekle: {
90
+ imperative: 'ekle',
91
+ plural: ['ekleyin', 'ekleyiniz'],
92
+ optative: 'ekleyelim',
93
+ aorist: 'ekler',
94
+ particle: 'misin',
95
+ abilitative: 'ekleyebilir',
96
+ familiar: 'eklesene',
97
+ },
98
+ };
99
+ /** The verbs a phrase may name as `{verb}`, by their folded imperative. */
100
+ export const VERB_NAMES = Object.keys(SPECS).map(fold);
101
+ const FORMS = new Map();
102
+ for (const spec of Object.values(SPECS))
103
+ FORMS.set(fold(spec.imperative), formsOf(spec));
104
+ function formsOf(spec) {
105
+ const plain = (text, flags = {}) => ({
106
+ tokens: fold(text).split(' '),
107
+ polite: flags.polite ?? false,
108
+ optative: flags.optative ?? false,
109
+ });
110
+ const plural = fold(spec.particle) === 'musun' ? 'musunuz' : 'misiniz';
111
+ // `-sene`/`-sana` and their plural `-senize`/`-sanıza`; `-sen` is the
112
+ // softer "would you".
113
+ const familiarPlural = spec.familiar.endsWith('a')
114
+ ? `${spec.familiar.slice(0, -1)}ıza`
115
+ : `${spec.familiar.slice(0, -1)}ize`;
116
+ return [
117
+ plain(spec.imperative),
118
+ ...spec.plural.map((form) => plain(form)),
119
+ plain(spec.optative, { optative: true }),
120
+ plain(`${spec.aorist} ${spec.particle}`, { polite: true }),
121
+ plain(`${spec.aorist} ${plural}`, { polite: true }),
122
+ plain(`${spec.aorist}${spec.particle}`, { polite: true }),
123
+ plain(`${spec.abilitative} misin`, { polite: true }),
124
+ plain(`${spec.abilitative} misiniz`, { polite: true }),
125
+ plain(`${spec.abilitative}misin`, { polite: true }),
126
+ plain(spec.familiar),
127
+ plain(familiarPlural),
128
+ plain(spec.familiar.slice(0, -1)),
129
+ ];
130
+ }
131
+ /** Every accepted form of `verb` (folded imperative), or throws for a verb the table does not have. */
132
+ export function verbForms(verb) {
133
+ const forms = FORMS.get(fold(verb));
134
+ if (!forms)
135
+ throw new Error(`No verb table entry for "${verb}".`);
136
+ return forms;
137
+ }
138
+ /** The question particles that may follow a form directly (`kaydedelim mi`). */
139
+ export const QUESTION_PARTICLES = new Set(['mi', 'mu']);
140
+ //# sourceMappingURL=verbs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verbs.js","sourceRoot":"","sources":["../../../src/tui/triggers/verbs.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import type { AuthorizationRule } from '@namzu/sdk';
7
7
  import type { ConfigDebugSnapshot } from '../config/debug.js';
8
- import type { BrowserConfig, CompactionCliConfig, HooksConfig, MemoryCliConfig, PluginConfig, SandboxConfig, SkillsConfig, TuiConfig, TurnLimitsConfig, WebConfig } from '../config/schema.js';
8
+ import type { BrowserConfig, CompactionCliConfig, ComposerTriggersConfig, HooksConfig, MemoryCliConfig, PluginConfig, SandboxConfig, SkillsConfig, TuiConfig, TurnLimitsConfig, WebConfig } from '../config/schema.js';
9
9
  import type { ToolResultScreenConfig } from '../config/tool-result-screens.js';
10
10
  import type { McpServersConfig } from '../integrations/mcp/servers.js';
11
11
  import type { ResolvedLogging } from '../logging.js';
@@ -96,6 +96,8 @@ export interface TuiContext {
96
96
  readonly plugins?: PluginConfig;
97
97
  /** See `NamzuCliConfig.skills`. */
98
98
  readonly skills?: SkillsConfig;
99
+ /** See `NamzuCliConfig.composerTriggers`. Only the interactive terminal reads it. */
100
+ readonly composerTriggers?: ComposerTriggersConfig;
99
101
  /** See `NamzuCliConfig.web`. */
100
102
  readonly web?: WebConfig;
101
103
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tui/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tui/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,KAAK,EACX,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,WAAW,EACX,eAAe,EACf,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAA;AAElE,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,2FAA2F;IAC3F,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAA;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,KAAK,CAAA;IACrF,wEAAwE;IACxE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,8DAA8D;IAC9D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,iEAAiE;IACjE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,oFAAoF;IACpF,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE;QACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAA;KAC7C,CAAA;CACD;AAED,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,YAAY,EAAE,sBAAsB,CAAA;IACvE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,mEAAmE;IACnE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAA;IAC1C,sGAAsG;IACtG,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAA;IACtC,iEAAiE;IACjE,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;IAC/B,mCAAmC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAA;IAC9B,qFAAqF;IACrF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;IAClD,gCAAgC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAA;IACxB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAA;IAChC,kCAAkC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAA;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAA;IACjC,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;IAClC;;;;;;;;;OASG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAA;IAC9D,uFAAuF;IACvF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClD;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAA;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAA;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAA;CAClC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@namzu/cli",
3
- "version": "29.1.0",
3
+ "version": "32.0.0",
4
4
  "description": "Interactive and headless terminal agent for Namzu, with provider discovery, durable sessions, tools and diagnostics.",
5
5
  "keywords": [
6
6
  "namzu",
@@ -47,17 +47,17 @@
47
47
  "react": "19.2.6",
48
48
  "string-width": "8.2.1",
49
49
  "yaml": "^2.9.0",
50
- "@namzu/anthropic": "6.1.0",
51
- "@namzu/computer-use": "1.4.3",
52
- "@namzu/deepseek": "^2.0.0",
53
- "@namzu/files": "1.1.1",
54
- "@namzu/browser": "0.1.0",
55
- "@namzu/openai": "4.1.0",
56
- "@namzu/ollama": "2.2.4",
57
- "@namzu/openrouter": "3.0.1",
58
- "@namzu/sdk": "^45.1.0",
59
- "@namzu/google": "^1.1.0",
60
- "@namzu/zen": "^2.5.0"
50
+ "@namzu/anthropic": "6.2.2",
51
+ "@namzu/browser": "0.1.1",
52
+ "@namzu/computer-use": "2.0.2",
53
+ "@namzu/deepseek": "^2.0.2",
54
+ "@namzu/files": "1.1.2",
55
+ "@namzu/ollama": "2.2.5",
56
+ "@namzu/openai": "4.1.3",
57
+ "@namzu/openrouter": "3.0.3",
58
+ "@namzu/sdk": "^48.0.0",
59
+ "@namzu/google": "^1.1.1",
60
+ "@namzu/zen": "^2.5.2"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@biomejs/biome": "^1.9.4",
package/skills/README.md CHANGED
@@ -11,5 +11,10 @@ name in `~/.agents/skills`, `~/.namzu/skills` or the project shadows it.
11
11
  tools; offered only when they exist.
12
12
  - `schedule-task` — proposing a scheduled job with the `schedule` tool.
13
13
 
14
+ Each is a single `SKILL.md`. A built-in that bundles files (`scripts/`,
15
+ `references/`) must not depend on them under the sandbox: the installed
16
+ package is not mounted there, and the `skill` tool tells the model the
17
+ skill's directory is not reachable.
18
+
14
19
  `src/skills/builtin-skills.test.ts` loads each one and checks the commands it
15
20
  names. See `docs/cli/skills.md` in the repository.