@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.
- package/.veil/agents/analyst/AGENT.md +21 -0
- package/.veil/agents/analyst/agent.json +23 -0
- package/.veil/agents/assistant/AGENT.md +15 -0
- package/.veil/agents/assistant/agent.json +19 -0
- package/.veil/agents/coder/AGENT.md +18 -0
- package/.veil/agents/coder/agent.json +19 -0
- package/.veil/agents/hello/AGENT.md +5 -0
- package/.veil/agents/hello/agent.json +13 -0
- package/.veil/agents/writer/AGENT.md +12 -0
- package/.veil/agents/writer/agent.json +17 -0
- package/.veil/memory/MEMORY.md +343 -0
- package/.veil/memory/agents/analyst/MEMORY.md +55 -0
- package/.veil/memory/agents/hello/MEMORY.md +12 -0
- package/.veil/runtime.pid +1 -0
- package/.veil/settings.json +10 -0
- package/.veil-studio/studio.db +0 -0
- package/.veil-studio/studio.db-shm +0 -0
- package/.veil-studio/studio.db-wal +0 -0
- package/PLAN/01-vision.md +26 -0
- package/PLAN/02-tech-stack.md +94 -0
- package/PLAN/03-agents.md +232 -0
- package/PLAN/04-runtime.md +171 -0
- package/PLAN/05-tools.md +211 -0
- package/PLAN/06-communication.md +243 -0
- package/PLAN/07-storage.md +218 -0
- package/PLAN/08-api-cli.md +153 -0
- package/PLAN/09-permissions.md +108 -0
- package/PLAN/10-ably.md +105 -0
- package/PLAN/11-file-formats.md +442 -0
- package/PLAN/12-folder-structure.md +205 -0
- package/PLAN/13-operations.md +212 -0
- package/PLAN/README.md +23 -0
- package/README.md +128 -0
- package/REPORT.md +174 -0
- package/TODO.md +45 -0
- package/ai-tests/FRONTEND_PROMPT.md +220 -0
- package/ai-tests/Research & Planning.md +814 -0
- package/ai-tests/prompt-001-basic-api.md +230 -0
- package/ai-tests/prompt-002-basic-flows.md +230 -0
- package/ai-tests/prompt-003-agent-behaviors.md +220 -0
- package/api/middleware.js +60 -0
- package/api/routes/agents.js +193 -0
- package/api/routes/chat.js +93 -0
- package/api/routes/completions.js +122 -0
- package/api/routes/daemons.js +80 -0
- package/api/routes/memory.js +169 -0
- package/api/routes/models.js +40 -0
- package/api/routes/remote-methods.js +74 -0
- package/api/routes/sessions.js +208 -0
- package/api/routes/settings.js +108 -0
- package/api/routes/system.js +50 -0
- package/api/routes/tasks.js +270 -0
- package/api/server.js +120 -0
- package/cli/formatter.js +70 -0
- package/cli/index.js +443 -0
- package/cli/parser.js +113 -0
- package/config/config.json +10 -0
- package/config/models.json +6826 -0
- package/core/agent.js +329 -0
- package/core/cancel.js +38 -0
- package/core/compaction.js +176 -0
- package/core/events.js +13 -0
- package/core/loop.js +564 -0
- package/core/memory.js +51 -0
- package/core/prompt.js +185 -0
- package/core/queue.js +96 -0
- package/core/registry.js +291 -0
- package/core/remote-methods.js +124 -0
- package/core/router.js +386 -0
- package/core/running-sessions.js +18 -0
- package/docs/api/01-system.md +84 -0
- package/docs/api/02-agents.md +374 -0
- package/docs/api/03-chat.md +269 -0
- package/docs/api/04-tasks.md +470 -0
- package/docs/api/05-sessions.md +444 -0
- package/docs/api/06-daemons.md +142 -0
- package/docs/api/07-memory.md +186 -0
- package/docs/api/08-settings.md +133 -0
- package/docs/api/09-models.md +119 -0
- package/docs/api/09-websocket.md +350 -0
- package/docs/api/10-completions.md +134 -0
- package/docs/api/README.md +116 -0
- package/docs/guide/01-quickstart.md +220 -0
- package/docs/guide/02-folder-structure.md +185 -0
- package/docs/guide/03-configuration.md +252 -0
- package/docs/guide/04-agents.md +267 -0
- package/docs/guide/05-cli.md +290 -0
- package/docs/guide/06-tools.md +643 -0
- package/docs/guide/07-permissions.md +236 -0
- package/docs/guide/08-memory.md +139 -0
- package/docs/guide/09-multi-agent.md +271 -0
- package/docs/guide/10-daemons.md +226 -0
- package/docs/guide/README.md +53 -0
- package/docs/index.html +623 -0
- package/examples/README.md +151 -0
- package/examples/agents/assistant/AGENT.md +31 -0
- package/examples/agents/assistant/SOUL.md +9 -0
- package/examples/agents/assistant/agent.json +74 -0
- package/examples/agents/hello/AGENT.md +15 -0
- package/examples/agents/hello/agent.json +14 -0
- package/examples/agents/monitor/AGENT.md +51 -0
- package/examples/agents/monitor/agent.json +33 -0
- package/examples/agents/monitor/heartbeats/monitor.md +24 -0
- package/examples/agents/orchestrator/AGENT.md +70 -0
- package/examples/agents/orchestrator/agent.json +30 -0
- package/examples/agents/researcher/AGENT.md +52 -0
- package/examples/agents/researcher/agent.json +49 -0
- package/examples/agents/researcher/skills/web-research.md +28 -0
- package/examples/skills/code-review.md +72 -0
- package/examples/skills/summarise.md +59 -0
- package/examples/skills/web-research.md +42 -0
- package/examples/tools/word-count/index.js +27 -0
- package/examples/tools/word-count/tool.json +18 -0
- package/infrastructure/database.js +563 -0
- package/infrastructure/scheduler.js +122 -0
- package/llm/client.js +206 -0
- package/migrations/001-initial.sql +121 -0
- package/migrations/002-debuggability.sql +13 -0
- package/migrations/003-drop-orphaned-columns.sql +72 -0
- package/migrations/004-session-message-token-fields.sql +78 -0
- package/migrations/005-session-thinking.sql +5 -0
- package/package.json +30 -0
- package/schemas/agent.json +143 -0
- package/schemas/settings.json +111 -0
- package/scripts/fetch-models.js +93 -0
- package/session-debug-scenario.md +248 -0
- package/settings/fields.js +52 -0
- package/system-prompts/base-core.md +7 -0
- package/system-prompts/environment.md +13 -0
- package/system-prompts/reminders/anti-drift.md +6 -0
- package/system-prompts/reminders/stall-recovery.md +10 -0
- package/system-prompts/safety-rules.md +25 -0
- package/system-prompts/task-heuristics.md +27 -0
- package/test/client.js +71 -0
- package/test/integration/01-health.test.js +25 -0
- package/test/integration/02-agents.test.js +80 -0
- package/test/integration/03-chat-hello.test.js +48 -0
- package/test/integration/04-chat-multiturn.test.js +61 -0
- package/test/integration/05-chat-writer.test.js +48 -0
- package/test/integration/06-task-basic.test.js +68 -0
- package/test/integration/07-task-tools.test.js +74 -0
- package/test/integration/08-task-code-analysis.test.js +69 -0
- package/test/integration/09-memory-analyst.test.js +63 -0
- package/test/integration/10-task-advanced.test.js +85 -0
- package/test/integration/11-sessions-advanced.test.js +84 -0
- package/test/integration/12-assistant-chat-tools.test.js +75 -0
- package/test/integration/13-edge-cases.test.js +99 -0
- package/test/integration/14-cancel.test.js +62 -0
- package/test/integration/15-debug.test.js +106 -0
- package/test/integration/16-memory-api.test.js +83 -0
- package/test/integration/17-settings-api.test.js +41 -0
- package/test/integration/18-tool-search-activation.test.js +119 -0
- package/test/results/.gitkeep +0 -0
- package/test/runner.js +206 -0
- package/test/smoke.js +216 -0
- package/tools/agent_message.js +85 -0
- package/tools/agent_send.js +80 -0
- package/tools/agent_spawn.js +44 -0
- package/tools/bash.js +49 -0
- package/tools/edit_file.js +41 -0
- package/tools/glob.js +64 -0
- package/tools/grep.js +82 -0
- package/tools/list_dir.js +63 -0
- package/tools/log_write.js +31 -0
- package/tools/memory_read.js +38 -0
- package/tools/memory_search.js +65 -0
- package/tools/memory_write.js +42 -0
- package/tools/read_file.js +48 -0
- package/tools/sleep.js +22 -0
- package/tools/task_create.js +41 -0
- package/tools/task_respond.js +37 -0
- package/tools/task_spawn.js +64 -0
- package/tools/task_status.js +39 -0
- package/tools/task_subscribe.js +37 -0
- package/tools/todo_read.js +26 -0
- package/tools/todo_write.js +38 -0
- package/tools/tool_activate.js +24 -0
- package/tools/tool_search.js +24 -0
- package/tools/web_fetch.js +50 -0
- package/tools/web_search.js +52 -0
- package/tools/write_file.js +28 -0
- package/ui/api.js +190 -0
- package/ui/app.js +281 -0
- package/ui/index.html +382 -0
- package/ui/views/agents.js +377 -0
- package/ui/views/chat.js +610 -0
- package/ui/views/connection.js +96 -0
- package/ui/views/daemons.js +129 -0
- package/ui/views/feed.js +194 -0
- package/ui/views/memory.js +263 -0
- package/ui/views/models.js +146 -0
- package/ui/views/sessions.js +314 -0
- package/ui/views/settings.js +142 -0
- package/ui/views/tasks.js +415 -0
- package/utils/context.js +49 -0
- package/utils/id.js +16 -0
- package/utils/models.js +88 -0
- package/utils/paths.js +213 -0
- 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
|
+
}
|