@newsails/veil-cli 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/.veil/agents/analyst/AGENT.md +21 -0
  2. package/.veil/agents/analyst/agent.json +23 -0
  3. package/.veil/agents/assistant/AGENT.md +15 -0
  4. package/.veil/agents/assistant/agent.json +19 -0
  5. package/.veil/agents/coder/AGENT.md +18 -0
  6. package/.veil/agents/coder/agent.json +19 -0
  7. package/.veil/agents/hello/AGENT.md +5 -0
  8. package/.veil/agents/hello/agent.json +13 -0
  9. package/.veil/agents/writer/AGENT.md +12 -0
  10. package/.veil/agents/writer/agent.json +17 -0
  11. package/.veil/memory/MEMORY.md +343 -0
  12. package/.veil/memory/agents/analyst/MEMORY.md +55 -0
  13. package/.veil/memory/agents/hello/MEMORY.md +12 -0
  14. package/.veil/runtime.pid +1 -0
  15. package/.veil/settings.json +10 -0
  16. package/.veil-studio/studio.db +0 -0
  17. package/.veil-studio/studio.db-shm +0 -0
  18. package/.veil-studio/studio.db-wal +0 -0
  19. package/PLAN/01-vision.md +26 -0
  20. package/PLAN/02-tech-stack.md +94 -0
  21. package/PLAN/03-agents.md +232 -0
  22. package/PLAN/04-runtime.md +171 -0
  23. package/PLAN/05-tools.md +211 -0
  24. package/PLAN/06-communication.md +243 -0
  25. package/PLAN/07-storage.md +218 -0
  26. package/PLAN/08-api-cli.md +153 -0
  27. package/PLAN/09-permissions.md +108 -0
  28. package/PLAN/10-ably.md +105 -0
  29. package/PLAN/11-file-formats.md +442 -0
  30. package/PLAN/12-folder-structure.md +205 -0
  31. package/PLAN/13-operations.md +212 -0
  32. package/PLAN/README.md +23 -0
  33. package/README.md +128 -0
  34. package/REPORT.md +174 -0
  35. package/TODO.md +45 -0
  36. package/ai-tests/FRONTEND_PROMPT.md +220 -0
  37. package/ai-tests/Research & Planning.md +814 -0
  38. package/ai-tests/prompt-001-basic-api.md +230 -0
  39. package/ai-tests/prompt-002-basic-flows.md +230 -0
  40. package/ai-tests/prompt-003-agent-behaviors.md +220 -0
  41. package/api/middleware.js +60 -0
  42. package/api/routes/agents.js +193 -0
  43. package/api/routes/chat.js +93 -0
  44. package/api/routes/completions.js +122 -0
  45. package/api/routes/daemons.js +80 -0
  46. package/api/routes/memory.js +169 -0
  47. package/api/routes/models.js +40 -0
  48. package/api/routes/remote-methods.js +74 -0
  49. package/api/routes/sessions.js +208 -0
  50. package/api/routes/settings.js +108 -0
  51. package/api/routes/system.js +50 -0
  52. package/api/routes/tasks.js +270 -0
  53. package/api/server.js +120 -0
  54. package/cli/formatter.js +70 -0
  55. package/cli/index.js +443 -0
  56. package/cli/parser.js +113 -0
  57. package/config/config.json +10 -0
  58. package/config/models.json +6826 -0
  59. package/core/agent.js +329 -0
  60. package/core/cancel.js +38 -0
  61. package/core/compaction.js +176 -0
  62. package/core/events.js +13 -0
  63. package/core/loop.js +564 -0
  64. package/core/memory.js +51 -0
  65. package/core/prompt.js +185 -0
  66. package/core/queue.js +96 -0
  67. package/core/registry.js +291 -0
  68. package/core/remote-methods.js +124 -0
  69. package/core/router.js +386 -0
  70. package/core/running-sessions.js +18 -0
  71. package/docs/api/01-system.md +84 -0
  72. package/docs/api/02-agents.md +374 -0
  73. package/docs/api/03-chat.md +269 -0
  74. package/docs/api/04-tasks.md +470 -0
  75. package/docs/api/05-sessions.md +444 -0
  76. package/docs/api/06-daemons.md +142 -0
  77. package/docs/api/07-memory.md +186 -0
  78. package/docs/api/08-settings.md +133 -0
  79. package/docs/api/09-models.md +119 -0
  80. package/docs/api/09-websocket.md +350 -0
  81. package/docs/api/10-completions.md +134 -0
  82. package/docs/api/README.md +116 -0
  83. package/docs/guide/01-quickstart.md +220 -0
  84. package/docs/guide/02-folder-structure.md +185 -0
  85. package/docs/guide/03-configuration.md +252 -0
  86. package/docs/guide/04-agents.md +267 -0
  87. package/docs/guide/05-cli.md +290 -0
  88. package/docs/guide/06-tools.md +643 -0
  89. package/docs/guide/07-permissions.md +236 -0
  90. package/docs/guide/08-memory.md +139 -0
  91. package/docs/guide/09-multi-agent.md +271 -0
  92. package/docs/guide/10-daemons.md +226 -0
  93. package/docs/guide/README.md +53 -0
  94. package/docs/index.html +623 -0
  95. package/examples/README.md +151 -0
  96. package/examples/agents/assistant/AGENT.md +31 -0
  97. package/examples/agents/assistant/SOUL.md +9 -0
  98. package/examples/agents/assistant/agent.json +74 -0
  99. package/examples/agents/hello/AGENT.md +15 -0
  100. package/examples/agents/hello/agent.json +14 -0
  101. package/examples/agents/monitor/AGENT.md +51 -0
  102. package/examples/agents/monitor/agent.json +33 -0
  103. package/examples/agents/monitor/heartbeats/monitor.md +24 -0
  104. package/examples/agents/orchestrator/AGENT.md +70 -0
  105. package/examples/agents/orchestrator/agent.json +30 -0
  106. package/examples/agents/researcher/AGENT.md +52 -0
  107. package/examples/agents/researcher/agent.json +49 -0
  108. package/examples/agents/researcher/skills/web-research.md +28 -0
  109. package/examples/skills/code-review.md +72 -0
  110. package/examples/skills/summarise.md +59 -0
  111. package/examples/skills/web-research.md +42 -0
  112. package/examples/tools/word-count/index.js +27 -0
  113. package/examples/tools/word-count/tool.json +18 -0
  114. package/infrastructure/database.js +563 -0
  115. package/infrastructure/scheduler.js +122 -0
  116. package/llm/client.js +206 -0
  117. package/migrations/001-initial.sql +121 -0
  118. package/migrations/002-debuggability.sql +13 -0
  119. package/migrations/003-drop-orphaned-columns.sql +72 -0
  120. package/migrations/004-session-message-token-fields.sql +78 -0
  121. package/migrations/005-session-thinking.sql +5 -0
  122. package/package.json +30 -0
  123. package/schemas/agent.json +143 -0
  124. package/schemas/settings.json +111 -0
  125. package/scripts/fetch-models.js +93 -0
  126. package/session-debug-scenario.md +248 -0
  127. package/settings/fields.js +52 -0
  128. package/system-prompts/base-core.md +7 -0
  129. package/system-prompts/environment.md +13 -0
  130. package/system-prompts/reminders/anti-drift.md +6 -0
  131. package/system-prompts/reminders/stall-recovery.md +10 -0
  132. package/system-prompts/safety-rules.md +25 -0
  133. package/system-prompts/task-heuristics.md +27 -0
  134. package/test/client.js +71 -0
  135. package/test/integration/01-health.test.js +25 -0
  136. package/test/integration/02-agents.test.js +80 -0
  137. package/test/integration/03-chat-hello.test.js +48 -0
  138. package/test/integration/04-chat-multiturn.test.js +61 -0
  139. package/test/integration/05-chat-writer.test.js +48 -0
  140. package/test/integration/06-task-basic.test.js +68 -0
  141. package/test/integration/07-task-tools.test.js +74 -0
  142. package/test/integration/08-task-code-analysis.test.js +69 -0
  143. package/test/integration/09-memory-analyst.test.js +63 -0
  144. package/test/integration/10-task-advanced.test.js +85 -0
  145. package/test/integration/11-sessions-advanced.test.js +84 -0
  146. package/test/integration/12-assistant-chat-tools.test.js +75 -0
  147. package/test/integration/13-edge-cases.test.js +99 -0
  148. package/test/integration/14-cancel.test.js +62 -0
  149. package/test/integration/15-debug.test.js +106 -0
  150. package/test/integration/16-memory-api.test.js +83 -0
  151. package/test/integration/17-settings-api.test.js +41 -0
  152. package/test/integration/18-tool-search-activation.test.js +119 -0
  153. package/test/results/.gitkeep +0 -0
  154. package/test/runner.js +206 -0
  155. package/test/smoke.js +216 -0
  156. package/tools/agent_message.js +85 -0
  157. package/tools/agent_send.js +80 -0
  158. package/tools/agent_spawn.js +44 -0
  159. package/tools/bash.js +49 -0
  160. package/tools/edit_file.js +41 -0
  161. package/tools/glob.js +64 -0
  162. package/tools/grep.js +82 -0
  163. package/tools/list_dir.js +63 -0
  164. package/tools/log_write.js +31 -0
  165. package/tools/memory_read.js +38 -0
  166. package/tools/memory_search.js +65 -0
  167. package/tools/memory_write.js +42 -0
  168. package/tools/read_file.js +48 -0
  169. package/tools/sleep.js +22 -0
  170. package/tools/task_create.js +41 -0
  171. package/tools/task_respond.js +37 -0
  172. package/tools/task_spawn.js +64 -0
  173. package/tools/task_status.js +39 -0
  174. package/tools/task_subscribe.js +37 -0
  175. package/tools/todo_read.js +26 -0
  176. package/tools/todo_write.js +38 -0
  177. package/tools/tool_activate.js +24 -0
  178. package/tools/tool_search.js +24 -0
  179. package/tools/web_fetch.js +50 -0
  180. package/tools/web_search.js +52 -0
  181. package/tools/write_file.js +28 -0
  182. package/ui/api.js +190 -0
  183. package/ui/app.js +281 -0
  184. package/ui/index.html +382 -0
  185. package/ui/views/agents.js +377 -0
  186. package/ui/views/chat.js +610 -0
  187. package/ui/views/connection.js +96 -0
  188. package/ui/views/daemons.js +129 -0
  189. package/ui/views/feed.js +194 -0
  190. package/ui/views/memory.js +263 -0
  191. package/ui/views/models.js +146 -0
  192. package/ui/views/sessions.js +314 -0
  193. package/ui/views/settings.js +142 -0
  194. package/ui/views/tasks.js +415 -0
  195. package/utils/context.js +49 -0
  196. package/utils/id.js +16 -0
  197. package/utils/models.js +88 -0
  198. package/utils/paths.js +213 -0
  199. package/utils/settings.js +172 -0
@@ -0,0 +1,72 @@
1
+ # Skill: Code Review
2
+
3
+ This skill provides a systematic checklist and standards for reviewing code.
4
+
5
+ ## Review Order
6
+
7
+ Always review in this order — from broad to specific:
8
+
9
+ 1. **Architecture** — does the overall structure make sense? Are responsibilities well-separated?
10
+ 2. **Correctness** — does the code do what it claims? Are edge cases handled?
11
+ 3. **Security** — are there injection risks, exposed secrets, missing auth checks, or unsafe operations?
12
+ 4. **Performance** — are there obvious bottlenecks, N+1 queries, blocking calls in async code, or unnecessary re-computation?
13
+ 5. **Readability** — are names clear? Is logic obvious? Are comments present where needed?
14
+ 6. **Tests** — are tests present? Do they cover the important cases?
15
+
16
+ ## Checklist Per File
17
+
18
+ When reviewing a single file, check:
19
+
20
+ - [ ] Functions have a single, clear responsibility
21
+ - [ ] Error cases are handled (not just the happy path)
22
+ - [ ] No hardcoded secrets, credentials, or environment-specific paths
23
+ - [ ] Async operations are awaited; promises are not silently dropped
24
+ - [ ] Input validation is present for untrusted data
25
+ - [ ] No commented-out dead code left in
26
+ - [ ] Variable and function names accurately describe their purpose
27
+ - [ ] No obvious performance issue (large loops, redundant I/O, etc.)
28
+
29
+ ## Severity Levels
30
+
31
+ Use these labels when reporting issues:
32
+
33
+ | Level | Meaning |
34
+ |-------|---------|
35
+ | `CRITICAL` | Must fix before shipping — security issue or data loss risk |
36
+ | `HIGH` | Likely bug or serious design flaw |
37
+ | `MEDIUM` | Correctness concern or maintainability issue |
38
+ | `LOW` | Style, naming, or minor improvement suggestion |
39
+ | `NIT` | Tiny stylistic preference — optional |
40
+
41
+ ## Output Format
42
+
43
+ Structure your code review report as:
44
+
45
+ ```
46
+ ## Summary
47
+ Brief overall assessment (2–3 sentences).
48
+
49
+ ## Issues
50
+
51
+ ### CRITICAL
52
+ - [file.js:42] Description of the critical issue and why it matters
53
+
54
+ ### HIGH
55
+ - [file.js:88] Description...
56
+
57
+ ### MEDIUM / LOW / NIT
58
+ - ...
59
+
60
+ ## Positive Observations
61
+ What the code does well — this is not optional.
62
+
63
+ ## Recommendations
64
+ 3–5 concrete, prioritised next steps.
65
+ ```
66
+
67
+ ## Rules
68
+
69
+ - Always include "Positive Observations" — finding only problems is incomplete feedback
70
+ - Cite file path and line number for every issue
71
+ - Explain *why* something is a problem, not just *what* is wrong
72
+ - Do not rewrite the code in your review — describe the issue and suggest an approach
@@ -0,0 +1,59 @@
1
+ # Skill: Summarisation
2
+
3
+ This skill defines structure and quality standards for summarisation tasks.
4
+
5
+ ## When to Use Each Format
6
+
7
+ | Task Type | Format |
8
+ |-----------|--------|
9
+ | Long document → overview | Executive summary + key points |
10
+ | Research findings → report | Structured sections with headers |
11
+ | Meeting notes → actions | Decision log + action items |
12
+ | Code → explanation | What it does, how it works, notable details |
13
+ | Multiple sources → synthesis | Unified narrative, contradictions flagged |
14
+
15
+ ## Executive Summary Format
16
+
17
+ For any summary that will be read by a decision-maker:
18
+
19
+ ```
20
+ ## Summary
21
+ [2–3 sentences covering: what this is about, the main finding or conclusion, and what action (if any) is recommended]
22
+
23
+ ## Key Points
24
+ - Point 1
25
+ - Point 2
26
+ - Point 3
27
+ (3–7 bullet points maximum)
28
+
29
+ ## Details
30
+ [Expanded coverage of each key point for readers who want more]
31
+ ```
32
+
33
+ ## Length Guidelines
34
+
35
+ | Source Length | Target Summary Length |
36
+ |---------------|----------------------|
37
+ | < 500 words | 1–2 sentences |
38
+ | 500–2000 words | 1 paragraph + 3–5 bullets |
39
+ | 2000–10000 words | Executive summary format |
40
+ | > 10000 words | Full structured report |
41
+
42
+ ## Quality Rules
43
+
44
+ - **Completeness**: The summary must not omit the main conclusion — even if it is uncomfortable or unexpected
45
+ - **Accuracy**: Do not introduce information not present in the source; do not rephrase in a way that changes meaning
46
+ - **Neutrality**: Summarise what the source says, not your opinion of it (unless opinion is explicitly requested)
47
+ - **Specificity**: Avoid vague summaries like "the document discusses various topics" — name the topics
48
+ - **Attribution**: When summarising multiple sources, attribute each key claim: "According to [source]..."
49
+
50
+ ## Synthesis (Multiple Sources)
51
+
52
+ When combining multiple documents or research outputs:
53
+
54
+ 1. Identify **consensus** — claims supported by multiple sources
55
+ 2. Identify **gaps** — topics only one source covers
56
+ 3. Identify **contradictions** — claims where sources disagree; flag these explicitly
57
+ 4. Write a unified narrative that integrates all three
58
+
59
+ Never silently drop a source's findings because they are inconvenient — include them.
@@ -0,0 +1,42 @@
1
+ # Skill: Web Research
2
+
3
+ This skill improves the quality and reliability of web research tasks.
4
+
5
+ ## Search Query Construction
6
+
7
+ - Write specific, targeted queries — avoid vague phrases like "how does X work"
8
+ - Include the domain/technology in the query: `"Node.js SQLite WAL mode performance benchmark"`
9
+ - Add `"site:github.com"`, `"official docs"`, or `"site:developer.mozilla.org"` for authoritative sources
10
+ - Add the current year to queries about recent developments to avoid stale results
11
+ - If a first query returns noise, rephrase using synonyms or the canonical technical term
12
+
13
+ ## Source Quality
14
+
15
+ | Tier | Examples | Use for |
16
+ |------|----------|---------|
17
+ | Primary | Official docs, GitHub repos, RFCs, research papers | Facts, specifications, APIs |
18
+ | Secondary | MDN, Stack Overflow, major tech publications | Tutorials, best practices |
19
+ | Tertiary | Personal blogs, Medium posts, forum answers | Context only — verify claims independently |
20
+
21
+ Never cite a source you have not fetched. Search snippets can be misleading.
22
+
23
+ ## Fetching Pages
24
+
25
+ - Only fetch URLs from primary or secondary sources
26
+ - If `web_fetch` returns an error or a login wall, note it as inaccessible and try an alternative URL
27
+ - Long pages: focus on headings and first paragraphs — read deeper only if the heading is directly relevant
28
+ - PDF links often don't fetch well — note them as "PDF — not fetched" if needed
29
+
30
+ ## Handling Contradictions
31
+
32
+ If two sources contradict each other:
33
+ 1. Note both claims and their sources
34
+ 2. Check which source is more authoritative (tier)
35
+ 3. Check which is more recent
36
+ 4. Report the discrepancy explicitly — do not silently pick one
37
+
38
+ ## Avoiding Hallucination
39
+
40
+ - Never invent URLs — only cite pages you actually fetched
41
+ - Never paraphrase a source as if it said something it didn't
42
+ - If you cannot find reliable information, state: "I was unable to find a reliable source for this claim"
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * word_count — custom tool example.
5
+ *
6
+ * Demonstrates the minimal custom tool contract:
7
+ * - module.exports.execute(input) → string
8
+ * - input params are validated against tool.json input_schema before execute() is called
9
+ * - _cwd, _agent, _settings, _taskId are injected by the runtime (not in input_schema)
10
+ */
11
+ async function execute({ text, includeReadingTime = false }) {
12
+ const lines = text.split('\n').length;
13
+ const words = text.trim() === '' ? 0 : text.trim().split(/\s+/).length;
14
+ const chars = text.length;
15
+ const charsNoSpaces = text.replace(/\s/g, '').length;
16
+
17
+ let result = `Words: ${words}\nCharacters: ${chars} (${charsNoSpaces} without spaces)\nLines: ${lines}`;
18
+
19
+ if (includeReadingTime) {
20
+ const minutes = Math.ceil(words / 200);
21
+ result += `\nEstimated reading time: ${minutes} min (at 200 wpm)`;
22
+ }
23
+
24
+ return result;
25
+ }
26
+
27
+ module.exports = { execute };
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "word_count",
3
+ "description": "Count words, characters, and lines in a text string. Useful for checking document length before writing to memory or estimating reading time.",
4
+ "input_schema": {
5
+ "type": "object",
6
+ "required": ["text"],
7
+ "properties": {
8
+ "text": {
9
+ "type": "string",
10
+ "description": "The text to analyse"
11
+ },
12
+ "includeReadingTime": {
13
+ "type": "boolean",
14
+ "description": "If true, include an estimated reading time (at 200 wpm). Default: false."
15
+ }
16
+ }
17
+ }
18
+ }