create-theokit 1.23.8 → 1.23.10
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/dist/cli.js +47 -40
- package/dist/cli.js.map +1 -1
- package/package.json +2 -1
- package/templates/default/.env.example +1 -1
- package/templates/default/CLAUDE.md +1 -0
- package/templates/default/_gitignore +5 -2
- package/templates/default/agents/chat.ts +29 -1
- package/templates/default/app/components/ChatPanel.tsx +3 -2
- package/templates/default/app/hooks/use-transcript.ts +9 -3
- package/templates/default/app/layout.tsx +8 -1
- package/templates/default/app/lib/constants.ts +2 -1
- package/templates/default/app/lib/renderable.ts +78 -0
- package/templates/default/app/page.test.tsx +9 -3
- package/templates/default/dot-claude/rules/theokit-conventions.md +2 -0
- package/templates/default/dot-claude/skills/theokit-gateways/SKILL.md +71 -0
- package/templates/default/dot-claude/skills/theokit-routes/SKILL.md +21 -2
- package/templates/default/package.json.tmpl +2 -8
- package/templates/default/pnpm-workspace.yaml +21 -0
- package/templates/default/server/routes/health.ts +3 -0
- package/templates/surfaces/desktop/sidecar/sidecar.ts +6 -2
package/dist/cli.js
CHANGED
|
@@ -2,15 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
// src/cli.ts
|
|
4
4
|
import { execSync } from "child_process";
|
|
5
|
-
import {
|
|
6
|
-
readFileSync as readFileSync5,
|
|
7
|
-
writeFileSync as writeFileSync5,
|
|
8
|
-
unlinkSync as unlinkSync5,
|
|
9
|
-
mkdirSync,
|
|
10
|
-
renameSync as renameSync2,
|
|
11
|
-
existsSync as existsSync5,
|
|
12
|
-
rmSync as rmSync5
|
|
13
|
-
} from "fs";
|
|
5
|
+
import { readFileSync as readFileSync5, unlinkSync as unlinkSync5, mkdirSync, renameSync as renameSync2, existsSync as existsSync5, rmSync as rmSync5 } from "fs";
|
|
14
6
|
import { resolve as resolve4 } from "path";
|
|
15
7
|
|
|
16
8
|
// src/clone-example.ts
|
|
@@ -144,17 +136,23 @@ function getDefaults(projectName) {
|
|
|
144
136
|
}
|
|
145
137
|
|
|
146
138
|
// src/scaffold-services.ts
|
|
147
|
-
import {
|
|
148
|
-
cpSync,
|
|
149
|
-
existsSync,
|
|
150
|
-
readFileSync,
|
|
151
|
-
readdirSync,
|
|
152
|
-
statSync,
|
|
153
|
-
writeFileSync,
|
|
154
|
-
unlinkSync
|
|
155
|
-
} from "fs";
|
|
139
|
+
import { cpSync, existsSync, readFileSync, readdirSync, statSync, unlinkSync } from "fs";
|
|
156
140
|
import { dirname, join as join2, resolve } from "path";
|
|
157
141
|
import { fileURLToPath } from "url";
|
|
142
|
+
|
|
143
|
+
// src/write-file.ts
|
|
144
|
+
import { closeSync, constants, openSync, writeSync } from "fs";
|
|
145
|
+
var NO_FOLLOW = constants.O_WRONLY | constants.O_CREAT | constants.O_TRUNC | constants.O_NOFOLLOW;
|
|
146
|
+
function writeScaffoldFile(path, data) {
|
|
147
|
+
const fd = openSync(path, NO_FOLLOW);
|
|
148
|
+
try {
|
|
149
|
+
writeSync(fd, data);
|
|
150
|
+
} finally {
|
|
151
|
+
closeSync(fd);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// src/scaffold-services.ts
|
|
158
156
|
var __dirname = dirname(fileURLToPath(import.meta.url));
|
|
159
157
|
var VALID_BACKENDS = ["node"];
|
|
160
158
|
function parseBackendFlags(args) {
|
|
@@ -202,7 +200,7 @@ function substituteTmpls(dir, projectName) {
|
|
|
202
200
|
if (entry.endsWith(".tmpl")) {
|
|
203
201
|
const content = readFileSync(full, "utf-8").replace(/\{\{name\}\}/g, projectName);
|
|
204
202
|
const dest = full.replace(/\.tmpl$/, "");
|
|
205
|
-
|
|
203
|
+
writeScaffoldFile(dest, content);
|
|
206
204
|
unlinkSync(full);
|
|
207
205
|
}
|
|
208
206
|
}
|
|
@@ -276,14 +274,14 @@ function scaffoldServices(options) {
|
|
|
276
274
|
const snippet = buildServicesSnippet(selections);
|
|
277
275
|
const updated = injectServicesIntoConfig(cfgSrc, snippet);
|
|
278
276
|
if (updated !== cfgSrc) {
|
|
279
|
-
|
|
277
|
+
writeScaffoldFile(configPath, updated);
|
|
280
278
|
}
|
|
281
279
|
}
|
|
282
280
|
const pkgPath = join2(options.targetDir, "package.json");
|
|
283
281
|
if (existsSync(pkgPath)) {
|
|
284
282
|
const pkgSrc = readFileSync(pkgPath, "utf-8");
|
|
285
283
|
const updated = injectHeyApiDep(pkgSrc);
|
|
286
|
-
|
|
284
|
+
writeScaffoldFile(pkgPath, updated);
|
|
287
285
|
}
|
|
288
286
|
}
|
|
289
287
|
|
|
@@ -295,8 +293,7 @@ import {
|
|
|
295
293
|
readFileSync as readFileSync2,
|
|
296
294
|
rmSync as rmSync2,
|
|
297
295
|
statSync as statSync2,
|
|
298
|
-
unlinkSync as unlinkSync2
|
|
299
|
-
writeFileSync as writeFileSync2
|
|
296
|
+
unlinkSync as unlinkSync2
|
|
300
297
|
} from "fs";
|
|
301
298
|
import { dirname as dirname2, join as join3, resolve as resolve2 } from "path";
|
|
302
299
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
@@ -329,7 +326,13 @@ var SURFACE_CONFIG = {
|
|
|
329
326
|
dev: "tsx tui/main.tsx",
|
|
330
327
|
start: "tsx tui/main.tsx",
|
|
331
328
|
// A visual reference of every tool render state (pending/running/success/failed/…) — no agent needed.
|
|
332
|
-
"demo:tools": "tsx tui/tool-variations.tsx"
|
|
329
|
+
"demo:tools": "tsx tui/tool-variations.tsx",
|
|
330
|
+
// A terminal app runs from source through `tsx` and has no artifact to bundle, so `build`
|
|
331
|
+
// means "typecheck" here. It is SET rather than left alone because the default template's
|
|
332
|
+
// `theokit build` requires `app/`, which `WEB_ONLY_FILES` removes two steps later — leaving a
|
|
333
|
+
// script whose first act is to demand a directory this scaffold just deleted
|
|
334
|
+
// (usetheokit/theokit#374).
|
|
335
|
+
build: "tsc --noEmit"
|
|
333
336
|
},
|
|
334
337
|
tsconfigInclude: [
|
|
335
338
|
"tui/**/*.ts",
|
|
@@ -363,6 +366,11 @@ var SURFACE_CONFIG = {
|
|
|
363
366
|
scripts: {
|
|
364
367
|
dev: "tauri dev",
|
|
365
368
|
tauri: "tauri",
|
|
369
|
+
// The real build, and the reason it must be declared: the inherited `theokit build` requires
|
|
370
|
+
// `app/`, which this surface removes (usetheokit/theokit#374). `tauri.conf.json`'s
|
|
371
|
+
// `beforeBuildCommand` already chains the frontend and the sidecar, so this is the whole
|
|
372
|
+
// build rather than a shortcut past two of its steps.
|
|
373
|
+
build: "tauri build",
|
|
366
374
|
"build:frontend": "vite build frontend",
|
|
367
375
|
// Generates the Tauri externalBin launcher (src-tauri/binaries/theo-sidecar-<triple>) the Rust
|
|
368
376
|
// shell spawns. Wired into tauri.conf.json beforeDev/BuildCommand — regenerated each launch.
|
|
@@ -411,7 +419,7 @@ function substituteTmpls2(dir, projectName) {
|
|
|
411
419
|
}
|
|
412
420
|
if (entry.endsWith(".tmpl")) {
|
|
413
421
|
const content = readFileSync2(full, "utf-8").replace(/\{\{name\}\}/g, projectName);
|
|
414
|
-
|
|
422
|
+
writeScaffoldFile(full.replace(/\.tmpl$/, ""), content);
|
|
415
423
|
unlinkSync2(full);
|
|
416
424
|
}
|
|
417
425
|
}
|
|
@@ -438,14 +446,14 @@ function applySurface(options) {
|
|
|
438
446
|
pkg.dependencies = { ...dropKeys(pkg.dependencies, WEB_ONLY_DEPS), ...cfg.deps };
|
|
439
447
|
pkg.devDependencies = { ...dropKeys(pkg.devDependencies, WEB_ONLY_DEV_DEPS), ...cfg.devDeps };
|
|
440
448
|
pkg.scripts = { ...pkg.scripts ?? {}, ...cfg.scripts };
|
|
441
|
-
|
|
449
|
+
writeScaffoldFile(pkgPath, `${JSON.stringify(pkg, null, 2)}
|
|
442
450
|
`);
|
|
443
451
|
}
|
|
444
452
|
const tsconfigPath = join3(options.targetDir, "tsconfig.json");
|
|
445
453
|
if (existsSync2(tsconfigPath)) {
|
|
446
454
|
const tsconfig = JSON.parse(readFileSync2(tsconfigPath, "utf-8"));
|
|
447
455
|
tsconfig.include = cfg.tsconfigInclude;
|
|
448
|
-
|
|
456
|
+
writeScaffoldFile(tsconfigPath, `${JSON.stringify(tsconfig, null, 2)}
|
|
449
457
|
`);
|
|
450
458
|
}
|
|
451
459
|
}
|
|
@@ -467,7 +475,6 @@ import {
|
|
|
467
475
|
existsSync as existsSync4,
|
|
468
476
|
cpSync as cpSync3,
|
|
469
477
|
readFileSync as readFileSync4,
|
|
470
|
-
writeFileSync as writeFileSync4,
|
|
471
478
|
renameSync,
|
|
472
479
|
unlinkSync as unlinkSync4,
|
|
473
480
|
readdirSync as readdirSync3,
|
|
@@ -478,7 +485,7 @@ import { resolve as resolve3, join as join5, dirname as dirname3 } from "path";
|
|
|
478
485
|
import { fileURLToPath as fileURLToPath3 } from "url";
|
|
479
486
|
|
|
480
487
|
// src/bare-transform.ts
|
|
481
|
-
import { existsSync as existsSync3, readFileSync as readFileSync3,
|
|
488
|
+
import { existsSync as existsSync3, readFileSync as readFileSync3, unlinkSync as unlinkSync3, rmSync as rmSync3 } from "fs";
|
|
482
489
|
import { join as join4 } from "path";
|
|
483
490
|
var HELLO_PAGE = `export default function Page() {
|
|
484
491
|
return <h1>Hello Theo</h1>
|
|
@@ -510,16 +517,16 @@ function applyBareTransform(targetDir, options = {}) {
|
|
|
510
517
|
delete pkg.devDependencies.postcss;
|
|
511
518
|
delete pkg.devDependencies.autoprefixer;
|
|
512
519
|
}
|
|
513
|
-
|
|
520
|
+
writeScaffoldFile(pkgPath, `${JSON.stringify(pkg, null, 2)}
|
|
514
521
|
`);
|
|
515
522
|
}
|
|
516
523
|
const pagePath = join4(targetDir, "app/page.tsx");
|
|
517
524
|
if (existsSync3(pagePath)) {
|
|
518
|
-
|
|
525
|
+
writeScaffoldFile(pagePath, HELLO_PAGE);
|
|
519
526
|
}
|
|
520
527
|
const layoutPath = join4(targetDir, "app/layout.tsx");
|
|
521
528
|
if (existsSync3(layoutPath)) {
|
|
522
|
-
|
|
529
|
+
writeScaffoldFile(layoutPath, BARE_LAYOUT);
|
|
523
530
|
}
|
|
524
531
|
const chatPath = join4(targetDir, "agents/chat.ts");
|
|
525
532
|
if (existsSync3(chatPath)) {
|
|
@@ -588,7 +595,7 @@ function scaffold(targetDir, projectName, templateName = "default", options = {}
|
|
|
588
595
|
const dst = join5(targetDir, entry.slice(0, -".tmpl".length));
|
|
589
596
|
const content = readFileSync4(src, "utf-8");
|
|
590
597
|
const replaced = content.replace(/\{\{name\}\}/g, resolvedName);
|
|
591
|
-
|
|
598
|
+
writeScaffoldFile(dst, replaced);
|
|
592
599
|
unlinkSync4(src);
|
|
593
600
|
}
|
|
594
601
|
if (options.bare) {
|
|
@@ -815,8 +822,8 @@ function applyOptions(targetDir, options, opts) {
|
|
|
815
822
|
pkg.scripts["lint:fix"] = "biome check . --fix";
|
|
816
823
|
pkg.scripts.format = "biome format . --write";
|
|
817
824
|
pkg.scripts["format:check"] = "biome format .";
|
|
818
|
-
|
|
819
|
-
|
|
825
|
+
writeScaffoldFile(pkgPath, JSON.stringify(pkg, null, 2) + "\n");
|
|
826
|
+
writeScaffoldFile(
|
|
820
827
|
resolve4(targetDir, "biome.json"),
|
|
821
828
|
JSON.stringify(
|
|
822
829
|
{
|
|
@@ -838,18 +845,18 @@ function applyOptions(targetDir, options, opts) {
|
|
|
838
845
|
delete pkg.devDependencies.eslint;
|
|
839
846
|
delete pkg.devDependencies["eslint-config-prettier"];
|
|
840
847
|
delete pkg.devDependencies["typescript-eslint"];
|
|
841
|
-
|
|
848
|
+
writeScaffoldFile(pkgPath, JSON.stringify(pkg, null, 2) + "\n");
|
|
842
849
|
}
|
|
843
850
|
if (options.tailwind) {
|
|
844
851
|
const pkg = JSON.parse(readFileSync5(pkgPath, "utf-8"));
|
|
845
852
|
pkg.devDependencies = pkg.devDependencies ?? {};
|
|
846
853
|
pkg.devDependencies.tailwindcss = "^4.0.0";
|
|
847
854
|
pkg.devDependencies["@tailwindcss/vite"] = "^4.0.0";
|
|
848
|
-
|
|
855
|
+
writeScaffoldFile(pkgPath, JSON.stringify(pkg, null, 2) + "\n");
|
|
849
856
|
const cssDir = existsSync5(resolve4(targetDir, "src/app")) ? "src/app" : "app";
|
|
850
857
|
const cssPath = resolve4(targetDir, `${cssDir}/globals.css`);
|
|
851
858
|
const existing = existsSync5(cssPath) ? readFileSync5(cssPath, "utf-8") : "";
|
|
852
|
-
|
|
859
|
+
writeScaffoldFile(cssPath, '@import "tailwindcss";\n\n' + existing);
|
|
853
860
|
}
|
|
854
861
|
if (options.srcDir) {
|
|
855
862
|
const srcDir = resolve4(targetDir, "src");
|
|
@@ -865,7 +872,7 @@ function applyOptions(targetDir, options, opts) {
|
|
|
865
872
|
const tsc2 = JSON.parse(readFileSync5(tscPath2, "utf-8"));
|
|
866
873
|
tsc2.compilerOptions.baseUrl = "src";
|
|
867
874
|
tsc2.include = ["src/**/*.ts", "src/**/*.tsx"];
|
|
868
|
-
|
|
875
|
+
writeScaffoldFile(tscPath2, JSON.stringify(tsc2, null, 2) + "\n");
|
|
869
876
|
}
|
|
870
877
|
const tscPath = resolve4(targetDir, "tsconfig.json");
|
|
871
878
|
const tsc = JSON.parse(readFileSync5(tscPath, "utf-8"));
|
|
@@ -880,7 +887,7 @@ function applyOptions(targetDir, options, opts) {
|
|
|
880
887
|
[`${prefix}/app/*`]: ["./app/*"]
|
|
881
888
|
};
|
|
882
889
|
}
|
|
883
|
-
|
|
890
|
+
writeScaffoldFile(tscPath, JSON.stringify(tsc, null, 2) + "\n");
|
|
884
891
|
if (!options.agentsMd) {
|
|
885
892
|
const agentsPath = resolve4(targetDir, "AGENTS.md");
|
|
886
893
|
if (existsSync5(agentsPath)) unlinkSync5(agentsPath);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts","../src/clone-example.ts","../src/install.ts","../src/pkg-manager.ts","../src/preflight-node.ts","../src/prompts.ts","../src/scaffold-services.ts","../src/scaffold-surface.ts","../src/version.ts","../src/index.ts","../src/bare-transform.ts"],"mappings":"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","names":["readFileSync","writeFileSync","unlinkSync","renameSync","existsSync","rmSync","resolve","resolve","join","cpSync","existsSync","readdirSync","readFileSync","rmSync","statSync","unlinkSync","writeFileSync","dirname","join","resolve","fileURLToPath","__dirname","substituteTmpls","require","existsSync","cpSync","readFileSync","writeFileSync","unlinkSync","readdirSync","rmSync","statSync","resolve","join","dirname","fileURLToPath","existsSync","readFileSync","writeFileSync","unlinkSync","rmSync","join","__dirname","dirname","fileURLToPath","resolve","existsSync","readdirSync","cpSync","join","statSync","readFileSync","writeFileSync","unlinkSync","rmSync","resolve","rmSync","existsSync","unlinkSync","readFileSync","writeFileSync","renameSync","tscPath","tsc"]}
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts","../src/clone-example.ts","../src/install.ts","../src/pkg-manager.ts","../src/preflight-node.ts","../src/prompts.ts","../src/scaffold-services.ts","../src/write-file.ts","../src/scaffold-surface.ts","../src/version.ts","../src/index.ts","../src/bare-transform.ts"],"mappings":"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","names":["readFileSync","unlinkSync","renameSync","existsSync","rmSync","resolve","resolve","join","join","cpSync","existsSync","readdirSync","readFileSync","rmSync","statSync","unlinkSync","dirname","join","resolve","fileURLToPath","__dirname","dirname","fileURLToPath","resolve","substituteTmpls","readdirSync","join","statSync","readFileSync","unlinkSync","existsSync","cpSync","rmSync","require","existsSync","cpSync","readFileSync","unlinkSync","readdirSync","rmSync","statSync","resolve","join","dirname","fileURLToPath","existsSync","readFileSync","unlinkSync","rmSync","join","join","existsSync","readFileSync","unlinkSync","rmSync","__dirname","dirname","fileURLToPath","resolve","existsSync","readdirSync","cpSync","join","statSync","readFileSync","unlinkSync","rmSync","resolve","rmSync","existsSync","unlinkSync","readFileSync","renameSync","tscPath","tsc"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-theokit",
|
|
3
|
-
"version": "1.23.
|
|
3
|
+
"version": "1.23.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Scaffold a new TheoKit project",
|
|
6
6
|
"repository": {
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"cross-spawn": "^7.0.6"
|
|
25
25
|
},
|
|
26
26
|
"publishConfig": {
|
|
27
|
+
"provenance": true,
|
|
27
28
|
"access": "public"
|
|
28
29
|
},
|
|
29
30
|
"engines": {
|
|
@@ -9,6 +9,7 @@ This project includes TheoKit-aware skills that activate automatically when you
|
|
|
9
9
|
| Skill | Triggers when editing | What it provides |
|
|
10
10
|
|-------|----------------------|------------------|
|
|
11
11
|
| theokit-routes | `server/routes/**` | defineRoute API, Zod validation, HTTP methods, dynamic params |
|
|
12
|
+
| theokit-gateways | `server/routes/**`, `**/*webhook*` | handleChannelWebhook, the `@theokit/gateway-*` adapters, signature validation, the onMessage seam |
|
|
12
13
|
| theokit-agents | `**/*agent*`, `**/*tool*`, `**/*Agent*`, `**/*Tool*` | @Agent, @Tool, @Toolbox decorators, LLM integration |
|
|
13
14
|
| theokit-database | `**/*schema*`, `**/*db*`, `**/drizzle*`, `**/*migration*`, `**/*seed*` | Drizzle ORM, SQLite, schema patterns, migrations |
|
|
14
15
|
| theokit-frontend | `app/**` | File-based routing, layouts, theoFetch, useAgent |
|
|
@@ -25,8 +25,11 @@ pnpm-debug.log*
|
|
|
25
25
|
*.pem
|
|
26
26
|
*.tsbuildinfo
|
|
27
27
|
|
|
28
|
-
#
|
|
29
|
-
data
|
|
28
|
+
# framework-written app data — conversation transcripts (.data/agent-sessions/**/*.jsonl)
|
|
29
|
+
# and the local SQLite DB both live here. This said `data/`, without the dot, and
|
|
30
|
+
# matched nothing the framework writes: every prompt, answer, tool input and tool
|
|
31
|
+
# result went into version control on the first commit after the first run (#395).
|
|
32
|
+
.data/
|
|
30
33
|
|
|
31
34
|
# editors
|
|
32
35
|
.vscode/
|
|
@@ -18,9 +18,37 @@ import { weatherTool } from './tools/weather.js'
|
|
|
18
18
|
* the environment — OPENROUTER_API_KEY (preferred) OR ANTHROPIC_API_KEY / OPENAI_API_KEY; the model id is
|
|
19
19
|
* provider-prefixed so OpenRouter routes it upstream (https://openrouter.ai/models).
|
|
20
20
|
*/
|
|
21
|
+
/**
|
|
22
|
+
* Who may run this agent, and against which conversation (ADR 0001).
|
|
23
|
+
*
|
|
24
|
+
* Every agent declares this; `'public'` is the decision, not the absence of one — and it is the
|
|
25
|
+
* honest one for a scaffold with no login. It means: the endpoint resumes whatever conversation the
|
|
26
|
+
* caller names, so anyone holding a session id may read and continue it. That is a capability
|
|
27
|
+
* model, and it is fine while the ids are the random UUIDs the client mints.
|
|
28
|
+
*
|
|
29
|
+
* The moment this app has users, replace it with the owner check:
|
|
30
|
+
*
|
|
31
|
+
* ```ts
|
|
32
|
+
* import { requireOwner } from 'theokit/server/define'
|
|
33
|
+
*
|
|
34
|
+
* export const policy = ({ subject, params }) =>
|
|
35
|
+
* requireOwner(subject, ownerOfConversation(params.sessionId))
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* `subject` is whatever `server/context.ts` put on `ctx.subject`; `params` carries
|
|
39
|
+
* `{ agent, endpoint, sessionId?, approvalId? }`. One declaration covers the run, the thread
|
|
40
|
+
* routes, the approval surface and MCP.
|
|
41
|
+
*/
|
|
42
|
+
export const policy = 'public'
|
|
43
|
+
|
|
21
44
|
export default AgentBuilder.create()
|
|
22
45
|
.input(z.object({ message: z.string() }))
|
|
23
|
-
|
|
46
|
+
// `LLM_MODEL` is honoured HERE, not by the framework, because this is where the model is
|
|
47
|
+
// declared and this file is yours. `.env.example` documented the variable and nothing read it,
|
|
48
|
+
// so setting it changed the model to exactly what it already was (#398, #408). One expression is
|
|
49
|
+
// cheaper than an override path through the framework, and it keeps the value visible in the file
|
|
50
|
+
// that decides it. The literal stays as the fallback: a scaffold has to run with no environment.
|
|
51
|
+
.model(process.env.LLM_MODEL ?? 'openai/gpt-4o-mini')
|
|
24
52
|
.system(BASE_INSTRUCTIONS)
|
|
25
53
|
.tool(weatherTool)
|
|
26
54
|
.tool(currentTimeTool)
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ChatThread, ChatMessage, AgentStreaming, QuickActionChips } from '@theokit/ui'
|
|
2
|
-
import { type UIMessage } from '@theokit/ui'
|
|
3
2
|
import { ScrollArea } from '@usetheo/ui'
|
|
3
|
+
import { type UIMessage } from 'theokit/client'
|
|
4
4
|
|
|
5
5
|
import { MODEL_NAME, STARTERS } from '../lib/constants'
|
|
6
|
+
import { toRenderable } from '../lib/renderable'
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* The scrolling transcript: the message thread + a live streaming indicator + the starter prompts (shown
|
|
@@ -25,7 +26,7 @@ export function ChatPanel({
|
|
|
25
26
|
<div className="mx-auto flex w-full max-w-3xl flex-col gap-4 px-6 py-6">
|
|
26
27
|
<ChatThread>
|
|
27
28
|
{thread.map((message) => (
|
|
28
|
-
<ChatMessage key={message.id} message={message} />
|
|
29
|
+
<ChatMessage key={message.id} message={toRenderable(message)} />
|
|
29
30
|
))}
|
|
30
31
|
{isStreaming && <AgentStreaming model={MODEL_NAME} />}
|
|
31
32
|
</ChatThread>
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
-
import { type UIMessage } from '
|
|
4
|
-
import { useAgent } from 'theokit/client'
|
|
3
|
+
import { useAgent, type UIMessage } from 'theokit/client'
|
|
5
4
|
|
|
6
5
|
import { GREETING } from '../lib/constants'
|
|
7
6
|
|
|
@@ -12,7 +11,14 @@ import { GREETING } from '../lib/constants'
|
|
|
12
11
|
* hand-rolled transcript (local history + commit-once effect + inflight-merge) is gone — the store owns it.
|
|
13
12
|
*/
|
|
14
13
|
export interface ChatTranscript {
|
|
15
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* The full transcript (greeting + committed history + the in-flight reply while streaming).
|
|
16
|
+
*
|
|
17
|
+
* Typed as the framework's `UIMessage` — the shape `useAgent` actually returns — and NOT as the
|
|
18
|
+
* component library's. Two earlier versions of this template typed it as the renderer's type and
|
|
19
|
+
* a fresh scaffold failed its own `typecheck` (usetheokit/theokit#80, #396). `app/lib/renderable.ts`
|
|
20
|
+
* converts at the one place that renders.
|
|
21
|
+
*/
|
|
16
22
|
thread: UIMessage[]
|
|
17
23
|
isStreaming: boolean
|
|
18
24
|
hasError: boolean
|
|
@@ -14,7 +14,14 @@ export default function RootLayout() {
|
|
|
14
14
|
return (
|
|
15
15
|
<div className="grid h-screen w-screen grid-rows-[auto_1fr] bg-background text-foreground">
|
|
16
16
|
<Header />
|
|
17
|
-
|
|
17
|
+
{/*
|
|
18
|
+
`data-theo-scroll` marks this as a scroll container, so its offset is restored on back
|
|
19
|
+
navigation (usetheokit/theokit#421). Browsers and react-router only ever restore the
|
|
20
|
+
DOCUMENT; in a shell like this one the document never scrolls, so without the marker there
|
|
21
|
+
is nothing to restore. The value is the id — add the attribute to any other element you
|
|
22
|
+
scroll, with a different value.
|
|
23
|
+
*/}
|
|
24
|
+
<main data-theo-scroll="main" className="flex h-full flex-col overflow-hidden">
|
|
18
25
|
<Outlet />
|
|
19
26
|
</main>
|
|
20
27
|
</div>
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
ToolInvocationState,
|
|
3
|
+
UIMessage as RenderableMessage,
|
|
4
|
+
UIMessagePart as RenderablePart,
|
|
5
|
+
} from '@theokit/ui'
|
|
6
|
+
import type { UIMessage } from 'theokit/client'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The seam between what the framework STREAMS and what the component library RENDERS.
|
|
10
|
+
*
|
|
11
|
+
* `useAgent().thread` hands you `UIMessage` from `theokit/client` — the wire shape, whose parts are
|
|
12
|
+
* deliberately open (`{ type: string; [key: string]: unknown }`) so a `data-*` part or a part kind
|
|
13
|
+
* invented after your app was written still arrives intact. `<ChatMessage>` wants `@theokit/ui`'s
|
|
14
|
+
* `UIMessage`, whose parts are a closed discriminated union.
|
|
15
|
+
*
|
|
16
|
+
* Both are right, and neither can be made assignable to the other without one of them giving up
|
|
17
|
+
* what it is for. So the APP owns the conversion — which is where it belongs: your app chose the
|
|
18
|
+
* renderer, and the framework does not know about it. Two prior versions of this template typed the
|
|
19
|
+
* transcript as the renderer's type and let TypeScript discover the mismatch on the first
|
|
20
|
+
* `tsc --noEmit` of a fresh scaffold (usetheokit/theokit#80, #396).
|
|
21
|
+
*
|
|
22
|
+
* Nothing here is a cast. Each branch checks the fields that branch needs and builds a value the
|
|
23
|
+
* renderer's type accepts; a part it cannot vouch for is DROPPED rather than forced through, which
|
|
24
|
+
* is the honest outcome for a part this version of the library has no renderer for.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/** The tool states `@theokit/ui` knows how to render. Anything else is not renderable here. */
|
|
28
|
+
const TOOL_STATES = [
|
|
29
|
+
'input-streaming',
|
|
30
|
+
'input-available',
|
|
31
|
+
'approval-requested',
|
|
32
|
+
'approval-responded',
|
|
33
|
+
'output-available',
|
|
34
|
+
'output-error',
|
|
35
|
+
'output-denied',
|
|
36
|
+
] as const
|
|
37
|
+
|
|
38
|
+
function isToolState(value: unknown): value is ToolInvocationState {
|
|
39
|
+
return typeof value === 'string' && (TOOL_STATES as readonly string[]).includes(value)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function toRenderablePart(part: UIMessage['parts'][number]): RenderablePart | null {
|
|
43
|
+
const { type } = part
|
|
44
|
+
|
|
45
|
+
if (type === 'text' || type === 'reasoning') {
|
|
46
|
+
return typeof part.text === 'string' ? { type, text: part.text } : null
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (type === 'dynamic-tool' || type.startsWith('tool-')) {
|
|
50
|
+
// A tool part the renderer can draw needs both of these; a half-built one is skipped rather
|
|
51
|
+
// than drawn with holes.
|
|
52
|
+
if (typeof part.toolCallId !== 'string' || !isToolState(part.state)) return null
|
|
53
|
+
return {
|
|
54
|
+
...part,
|
|
55
|
+
type: type === 'dynamic-tool' ? 'dynamic-tool' : `tool-${type.slice('tool-'.length)}`,
|
|
56
|
+
toolCallId: part.toolCallId,
|
|
57
|
+
state: part.state,
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (type.startsWith('data-')) {
|
|
62
|
+
return { ...part, type: `data-${type.slice('data-'.length)}`, data: part.data }
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// A kind this version of `@theokit/ui` has no renderer for. Dropping it keeps the rest of the
|
|
66
|
+
// message readable; forcing it through would render nothing and hide the reason.
|
|
67
|
+
return null
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** Project one streamed message into the shape `<ChatMessage>` renders. */
|
|
71
|
+
export function toRenderable(message: UIMessage): RenderableMessage {
|
|
72
|
+
return {
|
|
73
|
+
id: message.id,
|
|
74
|
+
role: message.role,
|
|
75
|
+
parts: message.parts.map(toRenderablePart).filter((part) => part !== null),
|
|
76
|
+
...(message.metadata === undefined ? {} : { metadata: message.metadata }),
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
// @vitest-environment jsdom
|
|
2
2
|
import { render, screen } from '@testing-library/react'
|
|
3
3
|
import { describe, it, expect } from 'vitest'
|
|
4
|
-
import { ChatThread, ChatMessage
|
|
4
|
+
import { ChatThread, ChatMessage } from '@theokit/ui'
|
|
5
|
+
import { type UIMessage } from 'theokit/client'
|
|
6
|
+
|
|
7
|
+
import { toRenderable } from './lib/renderable'
|
|
5
8
|
import Page from './page'
|
|
6
9
|
|
|
7
10
|
/**
|
|
@@ -22,7 +25,10 @@ describe('default chat page', () => {
|
|
|
22
25
|
expect(screen.getByLabelText('New chat')).toBeDefined()
|
|
23
26
|
})
|
|
24
27
|
|
|
25
|
-
it('
|
|
28
|
+
it('a streamed message renders through the conversion the app actually uses', () => {
|
|
29
|
+
// Typed as what `useAgent()` RETURNS, not as what `<ChatMessage>` takes. Those are different
|
|
30
|
+
// types on purpose, and a scaffold that conflated them failed its own typecheck twice
|
|
31
|
+
// (usetheokit/theokit#80, #396). `toRenderable` is the seam, and this is what exercises it.
|
|
26
32
|
const assistant: UIMessage = {
|
|
27
33
|
id: 'a-0',
|
|
28
34
|
role: 'assistant',
|
|
@@ -30,7 +36,7 @@ describe('default chat page', () => {
|
|
|
30
36
|
}
|
|
31
37
|
const { container } = render(
|
|
32
38
|
<ChatThread>
|
|
33
|
-
<ChatMessage message={assistant} />
|
|
39
|
+
<ChatMessage message={toRenderable(assistant)} />
|
|
34
40
|
</ChatThread>,
|
|
35
41
|
)
|
|
36
42
|
expect(container.querySelector('[data-slot="chat-message"]')).not.toBeNull()
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
|
|
20
20
|
- File at `server/routes/tasks/[id].ts` maps to `/api/tasks/:id`
|
|
21
21
|
- Export HTTP method handlers: `export const GET = defineRoute({...})`
|
|
22
|
+
- Every method declares `policy` — who may call it. `'public'` is a valid answer and an explicit one;
|
|
23
|
+
omitting it fails the build with the file named
|
|
22
24
|
- Use `params: z.object({...})` for URL params, `body:` for request body
|
|
23
25
|
- Use `status: 201` for creation responses, not manual `res.status()`
|
|
24
26
|
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: theokit-gateways
|
|
3
|
+
description: Receiving messages from Telegram, WhatsApp, Slack and other platforms — handleChannelWebhook, the @theokit/gateway-* adapters, signature validation, the onMessage seam
|
|
4
|
+
user-invocable: false
|
|
5
|
+
paths:
|
|
6
|
+
- "server/routes/**"
|
|
7
|
+
- "server/channels/**"
|
|
8
|
+
- "**/*gateway*"
|
|
9
|
+
- "**/*webhook*"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# TheoKit Gateways
|
|
13
|
+
|
|
14
|
+
Receiving a message from a messaging platform spans three packages, and each owns one part of it.
|
|
15
|
+
|
|
16
|
+
| Package | Its half |
|
|
17
|
+
|---|---|
|
|
18
|
+
| `theokit` (here) | The HTTP route and the signature check. `handleChannelWebhook` verifies the signature, parses the body, and hands your app the parsed JSON as `payload: unknown` |
|
|
19
|
+
| `@theokit/gateway-*` | Translating that payload into a canonical event, so your app never re-declares a platform's wire format |
|
|
20
|
+
| `@theokit/sdk` | Not involved in this path today |
|
|
21
|
+
|
|
22
|
+
## Wiring one
|
|
23
|
+
|
|
24
|
+
`handleChannelWebhook` is not mounted for you. It takes a `Request`, the URL path, and a config, and
|
|
25
|
+
returns the `Response` your route must return.
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import { handleChannelWebhook } from 'theokit/server/agent'
|
|
29
|
+
import { telegram } from 'theokit/server/webhook' // also: discord, slack, github, stripe
|
|
30
|
+
import { parseInbound } from '@theokit/gateway-telegram'
|
|
31
|
+
|
|
32
|
+
const response = await handleChannelWebhook(request, new URL(request.url).pathname, {
|
|
33
|
+
validators: { telegram: telegram({ secretToken: process.env.TELEGRAM_SECRET_TOKEN! }) },
|
|
34
|
+
onMessage: async ({ agent, platform, payload }) => {
|
|
35
|
+
const event = parseInbound(payload)
|
|
36
|
+
if (event === null) return // not a message this adapter handles — see below
|
|
37
|
+
// hand `event` to your agent
|
|
38
|
+
},
|
|
39
|
+
})
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The path it expects is `POST /api/agents/<name>/channels/<platform>/webhook`; `<name>` and
|
|
43
|
+
`<platform>` arrive in `onMessage` as `agent` and `platform`.
|
|
44
|
+
|
|
45
|
+
**Give it a `Request` whose body has not been read.** It calls `request.json()` itself, so a wrapper
|
|
46
|
+
that has already parsed the body — `defineRoute` offers a parsed `body` in its handler context —
|
|
47
|
+
leaves nothing for it to read. Mount it where you still hold the original request, or pass a clone.
|
|
48
|
+
|
|
49
|
+
`ChannelMessage` is `{ agent, platform, payload }`. There is no `request` inside `onMessage`, because
|
|
50
|
+
the body was read and the signature checked before it ran.
|
|
51
|
+
|
|
52
|
+
## Never throw out of `onMessage`
|
|
53
|
+
|
|
54
|
+
`onMessage` is awaited **before** the 200 is built, and `handleChannelWebhook` does not catch around
|
|
55
|
+
it. A throw there means the 200 is never built: mounted in a TheoKit route, the rejection reaches
|
|
56
|
+
that route's error boundary and is answered 500 — the platform sees a failed delivery where it
|
|
57
|
+
expected an acknowledgement.
|
|
58
|
+
|
|
59
|
+
This is why every adapter's translator returns `null` (or `undefined`) for a payload it does not
|
|
60
|
+
recognise rather than throwing. Handle the `null` and answer normally.
|
|
61
|
+
|
|
62
|
+
## Which adapters go through this seam
|
|
63
|
+
|
|
64
|
+
Only platforms that deliver by **webhook**. Telegram and the SMS providers export `parseInbound`
|
|
65
|
+
under that name; LINE, WhatsApp Cloud and Teams export their translation under their own names, each
|
|
66
|
+
with its own signature — read the one you are using.
|
|
67
|
+
|
|
68
|
+
Adapters whose transport is a long-lived connection — Discord, Slack, Mattermost, Matrix, e-mail,
|
|
69
|
+
and WhatsApp's `web` and `baileys` backends — do **not** go through this seam. They own their
|
|
70
|
+
transport, and running one alongside a TheoKit server needs a process lifecycle this scaffold does
|
|
71
|
+
not set up.
|
|
@@ -17,6 +17,7 @@ import { z } from 'zod'
|
|
|
17
17
|
|
|
18
18
|
// GET handler — no body, optional params/query
|
|
19
19
|
export const GET = defineRoute({
|
|
20
|
+
policy: 'public', // who may call it — required
|
|
20
21
|
params: z.object({ id: z.coerce.number() }), // URL params
|
|
21
22
|
query: z.object({ page: z.coerce.number().optional() }), // Query string
|
|
22
23
|
handler: ({ params, query }) => {
|
|
@@ -26,6 +27,7 @@ export const GET = defineRoute({
|
|
|
26
27
|
|
|
27
28
|
// POST handler — with body validation + custom status
|
|
28
29
|
export const POST = defineRoute({
|
|
30
|
+
policy: ({ subject }) => subject !== null, // any authenticated caller
|
|
29
31
|
body: z.object({
|
|
30
32
|
title: z.string().min(3),
|
|
31
33
|
done: z.boolean().default(false),
|
|
@@ -38,10 +40,26 @@ export const POST = defineRoute({
|
|
|
38
40
|
})
|
|
39
41
|
|
|
40
42
|
// PUT, DELETE follow the same pattern
|
|
41
|
-
export const PUT = defineRoute({ body: z.object({...}), handler: ({body, params}) => {...} })
|
|
42
|
-
export const DELETE = defineRoute({ params: z.object({id: z.coerce.number()}), handler: ({params}) => {...} })
|
|
43
|
+
export const PUT = defineRoute({ policy: 'public', body: z.object({...}), handler: ({body, params}) => {...} })
|
|
44
|
+
export const DELETE = defineRoute({ policy: 'public', params: z.object({id: z.coerce.number()}), handler: ({params}) => {...} })
|
|
43
45
|
```
|
|
44
46
|
|
|
47
|
+
## policy — who may call this route
|
|
48
|
+
|
|
49
|
+
Required on every exported method. The scanner refuses a route file that omits it and names the
|
|
50
|
+
file, so absence is a build error rather than a route silently open to everyone.
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
policy: 'public' // open, and said out loud
|
|
54
|
+
policy: ({ subject }) => subject !== null // any authenticated caller
|
|
55
|
+
policy: ({ subject, params }) =>
|
|
56
|
+
requireOwner(subject, ownerOf(params.id)) // this subject owns this record
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
`requireOwner` comes from `theokit/server`. The policy is evaluated identically over HTTP and
|
|
60
|
+
in-process, so a desktop or terminal surface gets the same answer a browser does. It receives no
|
|
61
|
+
headers and no cookies: identity arrives as `subject`, established by the transport.
|
|
62
|
+
|
|
45
63
|
## File-to-URL Mapping
|
|
46
64
|
|
|
47
65
|
| File path | URL | Notes |
|
|
@@ -71,6 +89,7 @@ export const createTask = defineAction({
|
|
|
71
89
|
import { TheoError } from 'theokit'
|
|
72
90
|
|
|
73
91
|
export const GET = defineRoute({
|
|
92
|
+
policy: 'public',
|
|
74
93
|
handler: ({ params }) => {
|
|
75
94
|
const task = db.select().from(tasks).where(eq(tasks.id, params.id)).get()
|
|
76
95
|
if (!task) throw new TheoError({ code: 'NOT_FOUND', message: 'Task not found' })
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
"dev": "theokit dev",
|
|
8
8
|
"build": "theokit build",
|
|
9
9
|
"start": "theokit start",
|
|
10
|
+
"preview": "theokit preview",
|
|
10
11
|
"test": "vitest run",
|
|
11
12
|
"lint": "eslint .",
|
|
12
13
|
"lint:fix": "eslint . --fix",
|
|
@@ -15,7 +16,7 @@
|
|
|
15
16
|
"typecheck": "tsc --noEmit"
|
|
16
17
|
},
|
|
17
18
|
"dependencies": {
|
|
18
|
-
"theokit": "^0.
|
|
19
|
+
"theokit": "^0.50.0",
|
|
19
20
|
"@theokit/agents": "^10.1.0",
|
|
20
21
|
"@theokit/sdk": "^4.52.1",
|
|
21
22
|
"@theokit/ui": "^1.1.0",
|
|
@@ -40,12 +41,5 @@
|
|
|
40
41
|
"typescript": "^5.5.0",
|
|
41
42
|
"typescript-eslint": "^8.0.0",
|
|
42
43
|
"vitest": "^3.0.0"
|
|
43
|
-
},
|
|
44
|
-
"pnpm": {
|
|
45
|
-
"onlyBuiltDependencies": [
|
|
46
|
-
"esbuild",
|
|
47
|
-
"better-sqlite3",
|
|
48
|
-
"workerd"
|
|
49
|
-
]
|
|
50
44
|
}
|
|
51
45
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Build scripts this project allows its dependencies to run.
|
|
2
|
+
#
|
|
3
|
+
# pnpm 10 refuses to run a dependency's install script unless it is approved here,
|
|
4
|
+
# and it stopped reading the `pnpm` field in package.json — where this list used to
|
|
5
|
+
# live, silently doing nothing while every install printed a warning about it
|
|
6
|
+
# (usetheokit/theokit#397). Without these entries, `pnpm install` ends in
|
|
7
|
+
# ERR_PNPM_IGNORED_BUILDS with esbuild and node-pty unbuilt.
|
|
8
|
+
#
|
|
9
|
+
# Each entry is a decision, not boilerplate: an install script runs arbitrary code
|
|
10
|
+
# on your machine. These are the ones this scaffold needs.
|
|
11
|
+
allowBuilds:
|
|
12
|
+
# The bundler behind `theokit dev` and `theokit build`; ships a platform binary.
|
|
13
|
+
esbuild: true
|
|
14
|
+
# A native terminal, reached through @theokit/agents. Compiles or downloads a
|
|
15
|
+
# prebuild on install. A web-only app never opens one — see usetheokit/theokit#25
|
|
16
|
+
# if you would rather not pay for it.
|
|
17
|
+
node-pty: true
|
|
18
|
+
# Present only if you add them; harmless entries otherwise, and here so the
|
|
19
|
+
# decision is already made the day you do.
|
|
20
|
+
better-sqlite3: true
|
|
21
|
+
workerd: true
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { route } from 'theokit/server/define'
|
|
2
2
|
|
|
3
3
|
export const GET = route()
|
|
4
|
+
// A liveness probe answers the same thing to everyone, so it is genuinely open.
|
|
5
|
+
// Every route declares this; `'public'` is the decision, not the absence of one.
|
|
6
|
+
.policy('public')
|
|
4
7
|
.handler(() => ({
|
|
5
8
|
status: 'ok',
|
|
6
9
|
timestamp: Date.now(),
|
|
@@ -41,10 +41,14 @@ const write = (line: string): void => {
|
|
|
41
41
|
process.stdout.write(line)
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
await runTurnToJsonl(chatAgent, apiKey, message, write, ({ approvalId
|
|
44
|
+
await runTurnToJsonl(chatAgent, apiKey, message, write, ({ approvalId }) => {
|
|
45
|
+
// Register the resolver and write NOTHING. The approval frame is already on the wire:
|
|
46
|
+
// `runTurnToJsonl` writes every chunk the in-process turn produces, and a gated tool produces a
|
|
47
|
+
// `tool-approval-request` carrying the `toolCallId` readers key a tool part by. A second,
|
|
48
|
+
// hand-written line here was a duplicate the framework's own wire schema refuses
|
|
49
|
+
// (usetheokit/theokit#403).
|
|
45
50
|
return new Promise<boolean>((resolve) => {
|
|
46
51
|
pending.set(approvalId, resolve)
|
|
47
|
-
write(`${JSON.stringify({ type: 'tool-approval-request', approvalId, toolName })}\n`)
|
|
48
52
|
})
|
|
49
53
|
})
|
|
50
54
|
|