create-walle 0.9.20 → 0.9.22
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/README.md +5 -5
- package/package.json +2 -2
- package/template/claude-task-manager/api-prompts.js +13 -0
- package/template/claude-task-manager/api-reviews.js +5 -2
- package/template/claude-task-manager/db.js +479 -15
- package/template/claude-task-manager/docs/app-update-refresh-protocol.md +69 -0
- package/template/claude-task-manager/docs/image-paste-ux.md +3 -0
- package/template/claude-task-manager/docs/ipad-web-preview.md +88 -0
- package/template/claude-task-manager/docs/microsoft-dev-tunnel-phone-access-design.md +58 -50
- package/template/claude-task-manager/docs/phone-access-design.md +23 -7
- package/template/claude-task-manager/docs/walle-session-model-preferences.md +119 -0
- package/template/claude-task-manager/git-utils.js +146 -17
- package/template/claude-task-manager/lib/auth-rate-limit.js +23 -3
- package/template/claude-task-manager/lib/auth-rules.js +3 -0
- package/template/claude-task-manager/lib/document-review.js +33 -2
- package/template/claude-task-manager/lib/microsoft-dev-tunnel-setup.js +115 -48
- package/template/claude-task-manager/lib/mobile-auth-api.js +14 -0
- package/template/claude-task-manager/lib/remote-relay-protocol.js +5 -0
- package/template/claude-task-manager/lib/restart-guard.js +68 -0
- package/template/claude-task-manager/lib/session-standup.js +36 -13
- package/template/claude-task-manager/lib/session-stream.js +11 -4
- package/template/claude-task-manager/lib/transport-security.js +50 -0
- package/template/claude-task-manager/lib/walle-external-actions.js +20 -3
- package/template/claude-task-manager/lib/walle-transcript.js +16 -0
- package/template/claude-task-manager/lib/worktree-active-sync.js +6 -3
- package/template/claude-task-manager/public/css/reviews.css +10 -0
- package/template/claude-task-manager/public/css/setup.css +13 -0
- package/template/claude-task-manager/public/css/walle.css +145 -0
- package/template/claude-task-manager/public/index.html +564 -44
- package/template/claude-task-manager/public/ipad.html +363 -0
- package/template/claude-task-manager/public/js/document-review-links.js +196 -0
- package/template/claude-task-manager/public/js/message-renderer.js +14 -3
- package/template/claude-task-manager/public/js/reviews.js +30 -6
- package/template/claude-task-manager/public/js/setup.js +57 -13
- package/template/claude-task-manager/public/js/stream-view.js +20 -1
- package/template/claude-task-manager/public/js/walle-session.js +31 -3
- package/template/claude-task-manager/public/js/walle.js +405 -39
- package/template/claude-task-manager/public/m/app.css +1213 -39
- package/template/claude-task-manager/public/m/app.js +1887 -97
- package/template/claude-task-manager/public/m/claim.html +9 -2
- package/template/claude-task-manager/public/m/index.html +48 -7
- package/template/claude-task-manager/public/m/sw.js +1 -1
- package/template/claude-task-manager/server.js +695 -78
- package/template/claude-task-manager/session-integrity.js +4 -0
- package/template/claude-task-manager/workers/state-detectors/codex.js +18 -3
- package/template/docs/designs/2026-05-17-portkey-gateway-provider-ux.md +86 -35
- package/template/package.json +1 -1
- package/template/wall-e/api-walle.js +19 -1
- package/template/wall-e/brain.js +152 -6
- package/template/wall-e/chat.js +117 -2
- package/template/wall-e/coding/stream-processor.js +36 -0
- package/template/wall-e/coding-orchestrator.js +151 -12
- package/template/wall-e/docs/external-action-controller.md +60 -2
- package/template/wall-e/external-action-controller.js +23 -1
- package/template/wall-e/external-action-gateway.js +163 -0
- package/template/wall-e/fly.toml +1 -0
- package/template/wall-e/http/model-admin.js +131 -0
- package/template/wall-e/lib/service-health.js +194 -0
- package/template/wall-e/llm/anthropic.js +7 -0
- package/template/wall-e/llm/client.js +46 -12
- package/template/wall-e/llm/openai.js +17 -2
- package/template/wall-e/llm/portkey-sync.js +201 -0
- package/template/wall-e/server.js +13 -0
- package/template/wall-e/tools/local-tools.js +122 -4
- package/template/website/index.html +10 -10
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# create-walle
|
|
2
2
|
|
|
3
|
-
Set up **CTM + Wall-E** in one command — a browser-based command center for AI coding agents, remote phone access, review workflows, and a personal AI agent that builds a searchable second brain from your work life.
|
|
3
|
+
Set up **CTM + Wall-E** in one command — a browser-based command center for AI coding agents, remote phone and tablet access, review workflows, and a personal AI agent that builds a searchable second brain from your work life.
|
|
4
4
|
|
|
5
5
|
## What You Get
|
|
6
6
|
|
|
@@ -12,7 +12,7 @@ A web dashboard for running and managing AI coding sessions across multiple prov
|
|
|
12
12
|
- **Prompt Editor** — Save, version, and organize prompts with folders, tags, chains, templates, and AI search
|
|
13
13
|
- **Task Queue** — Queue prompts for sequential execution with auto-advance when the agent finishes, or step through manually
|
|
14
14
|
- **Approval Workflows** — Auto-approve tool-use requests based on learned rules; uncertain cases escalate to you
|
|
15
|
-
- **Remote Phone Access** — Pair your phone with a QR code and use a
|
|
15
|
+
- **Remote Phone & Tablet Access** — Pair your phone or tablet with a QR code and use a responsive CTM UI over Microsoft Dev Tunnels, Tailscale, Cloudflare Tunnel, or Walle Remote, with live prompts and model controls
|
|
16
16
|
- **Code & Doc Review** — Review git diffs and Markdown docs side by side, add anchored comments, and send feedback into an agent session or queue
|
|
17
17
|
- **Model Registry** — Manage providers (Anthropic, OpenAI, Google, DeepSeek, Ollama, LM Studio, MLX, and CLI subscription providers), compare pricing, switch models per session
|
|
18
18
|
- **Session Insights** — Analyze patterns across sessions to optimize prompts and workflows
|
|
@@ -35,7 +35,7 @@ An always-on AI agent that learns from your Slack, email, calendar, and coding s
|
|
|
35
35
|
npx create-walle install ./walle
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
This copies the project, installs dependencies, auto-detects your name and timezone, and starts the server. Open **http://localhost:3456** to finish setup in the browser, then pair your phone from Setup if you want remote access.
|
|
38
|
+
This copies the project, installs dependencies, auto-detects your name and timezone, and starts the server. Open **http://localhost:3456** to finish setup in the browser, then pair your phone or tablet from Setup if you want remote access.
|
|
39
39
|
|
|
40
40
|
## Commands
|
|
41
41
|
|
|
@@ -62,7 +62,7 @@ On first launch, the browser setup page guides you through:
|
|
|
62
62
|
1. **Owner name** — auto-detected from `git config`
|
|
63
63
|
2. **API key** — enter manually, or click "Auto-detect" to find it from your shell environment, Claude Code OAuth, or corporate devbox
|
|
64
64
|
3. **Integrations** — connect Slack (OAuth), email and calendar auto-detected on macOS
|
|
65
|
-
4. **Remote phone access** — optional QR pairing with Microsoft Dev Tunnels, Tailscale, Cloudflare Tunnel, or Walle Remote
|
|
65
|
+
4. **Remote phone and tablet access** — optional QR pairing with Microsoft Dev Tunnels, Tailscale, Cloudflare Tunnel, or Walle Remote, including touch-friendly prompts and model controls
|
|
66
66
|
|
|
67
67
|
## Custom Port
|
|
68
68
|
|
|
@@ -78,7 +78,7 @@ Everything runs locally. CTM serves the dashboard, Wall-E runs as a background a
|
|
|
78
78
|
|
|
79
79
|
| Component | Default Port | What it does |
|
|
80
80
|
|-----------|-------------|--------------|
|
|
81
|
-
| CTM | 3456 | Dashboard, multi-agent terminal, prompt editor, queue, model registry, code/doc review, remote phone UI |
|
|
81
|
+
| CTM | 3456 | Dashboard, multi-agent terminal, prompt editor, queue, model registry, code/doc review, remote phone/tablet UI |
|
|
82
82
|
| Wall-E | 3457 | AI agent, brain database, skills engine, multi-model chat API |
|
|
83
83
|
|
|
84
84
|
## Links
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-walle",
|
|
3
|
-
"version": "0.9.
|
|
4
|
-
"description": "CTM + Wall-E \u2014 AI coding dashboard and personal digital twin agent. Multi-agent terminal for Claude Code, Codex, Gemini, Aider, OpenCode, and more, plus prompt editor, task queue, remote phone access, code/doc review, and an agent that learns from Slack, email & calendar.",
|
|
3
|
+
"version": "0.9.22",
|
|
4
|
+
"description": "CTM + Wall-E \u2014 AI coding dashboard and personal digital twin agent. Multi-agent terminal for Claude Code, Codex, Gemini, Aider, OpenCode, and more, plus prompt editor, task queue, remote phone and tablet access, code/doc review, and an agent that learns from Slack, email & calendar.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"create-walle": "bin/create-walle.js"
|
|
7
7
|
},
|
|
@@ -143,6 +143,7 @@ function handlePromptApi(req, res, url) {
|
|
|
143
143
|
// --- Images ---
|
|
144
144
|
if (p === '/api/images/upload' && m === 'POST') return handleUploadImage(req, res, url);
|
|
145
145
|
if (p === '/api/mobile/attachments/upload' && m === 'POST') return handleUploadMobileAttachment(req, res, url);
|
|
146
|
+
if (p === '/api/session/image-refs' && m === 'POST') return handleSessionImageRefs(req, res);
|
|
146
147
|
if (p.match(/^\/api\/images\/\d+$/) && m === 'GET') return handleGetImage(req, res, url);
|
|
147
148
|
if (p.match(/^\/api\/images\/\d+\/annotations$/) && m === 'PUT') return handleUpdateAnnotations(req, res, url);
|
|
148
149
|
if (p.match(/^\/api\/images\/\d+$/) && m === 'DELETE') return handleDeleteImage(req, res, url);
|
|
@@ -677,6 +678,18 @@ async function handleUploadMobileAttachment(req, res, url) {
|
|
|
677
678
|
}
|
|
678
679
|
}
|
|
679
680
|
|
|
681
|
+
async function handleSessionImageRefs(req, res) {
|
|
682
|
+
try {
|
|
683
|
+
const body = await readBody(req, 256 * 1024);
|
|
684
|
+
const result = await db.recordSessionImageRefs(body || {});
|
|
685
|
+
const safeResult = { ...(result || {}) };
|
|
686
|
+
delete safeResult.refDir;
|
|
687
|
+
jsonResponse(res, 200, { ok: true, ...safeResult });
|
|
688
|
+
} catch (e) {
|
|
689
|
+
jsonResponse(res, 400, { ok: false, error: e.message });
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
|
|
680
693
|
function handleGetImage(req, res, url) {
|
|
681
694
|
const id = parseInt(url.pathname.split('/').pop());
|
|
682
695
|
const img = db.getImage(id);
|
|
@@ -140,7 +140,7 @@ function handleReviewApi(req, res, url) {
|
|
|
140
140
|
try {
|
|
141
141
|
const filePath = url.searchParams.get('path');
|
|
142
142
|
const line = url.searchParams.get('line') || 1;
|
|
143
|
-
const document = documentReview.readDocument(filePath, { line });
|
|
143
|
+
const document = documentReview.readDocument(filePath, { line, cwd: url.searchParams.get('cwd') || '' });
|
|
144
144
|
return jsonResponse(res, 200, { document });
|
|
145
145
|
} catch (e) {
|
|
146
146
|
return jsonResponse(res, e.statusCode || 500, { error: e.message });
|
|
@@ -150,7 +150,10 @@ function handleReviewApi(req, res, url) {
|
|
|
150
150
|
// POST /api/reviews/document-review - create/reuse a review record for one document
|
|
151
151
|
if (p === '/api/reviews/document-review' && m === 'POST') {
|
|
152
152
|
readBody(req).then(body => {
|
|
153
|
-
const document = documentReview.readDocument(body.path, {
|
|
153
|
+
const document = documentReview.readDocument(body.path, {
|
|
154
|
+
line: body.line || 1,
|
|
155
|
+
cwd: body.cwd || '',
|
|
156
|
+
});
|
|
154
157
|
const review = db.listReviews({
|
|
155
158
|
project_path: document.projectRoot,
|
|
156
159
|
review_type: 'doc',
|