create-theokit 1.23.12 → 1.25.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.
package/dist/cli.js CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  // src/cli.ts
4
4
  import { execSync } from "child_process";
5
- import { readFileSync as readFileSync5, unlinkSync as unlinkSync5, mkdirSync, renameSync as renameSync2, existsSync as existsSync5, rmSync as rmSync5 } from "fs";
6
- import { resolve as resolve4 } from "path";
5
+ import { readFileSync as readFileSync6, unlinkSync as unlinkSync5, mkdirSync, renameSync as renameSync2, existsSync as existsSync6, rmSync as rmSync5 } from "fs";
6
+ import { resolve as resolve5 } from "path";
7
7
 
8
8
  // src/clone-example.ts
9
9
  import { execFileSync } from "child_process";
@@ -82,17 +82,17 @@ var DEFAULTS = {
82
82
  agentsMd: true
83
83
  };
84
84
  async function ask(rl, question, defaultVal) {
85
- return new Promise((resolve5) => {
85
+ return new Promise((resolve6) => {
86
86
  const suffix = defaultVal ? "(Y/n)" : "(y/N)";
87
87
  rl.question(` ${question} ${suffix} `, (answer) => {
88
88
  const a = answer.trim().toLowerCase();
89
- if (a === "") resolve5(defaultVal);
90
- else resolve5(a === "y" || a === "yes");
89
+ if (a === "") resolve6(defaultVal);
90
+ else resolve6(a === "y" || a === "yes");
91
91
  });
92
92
  });
93
93
  }
94
94
  async function askChoice(rl, question, choices, defaultIdx = 0) {
95
- return new Promise((resolve5) => {
95
+ return new Promise((resolve6) => {
96
96
  console.log(` ${question}`);
97
97
  for (let i = 0; i < choices.length; i++) {
98
98
  const marker = i === defaultIdx ? "\u276F" : " ";
@@ -100,7 +100,7 @@ async function askChoice(rl, question, choices, defaultIdx = 0) {
100
100
  }
101
101
  rl.question(" Choice (number): ", (answer) => {
102
102
  const n = parseInt(answer.trim(), 10);
103
- resolve5(n >= 1 && n <= choices.length ? n - 1 : defaultIdx);
103
+ resolve6(n >= 1 && n <= choices.length ? n - 1 : defaultIdx);
104
104
  });
105
105
  });
106
106
  }
@@ -472,17 +472,17 @@ var CLI_VERSION = readVersion();
472
472
 
473
473
  // src/index.ts
474
474
  import {
475
- existsSync as existsSync4,
476
- cpSync as cpSync3,
477
- readFileSync as readFileSync4,
475
+ existsSync as existsSync5,
476
+ cpSync as cpSync4,
477
+ readFileSync as readFileSync5,
478
478
  renameSync,
479
479
  unlinkSync as unlinkSync4,
480
480
  readdirSync as readdirSync3,
481
481
  rmSync as rmSync4,
482
482
  statSync as statSync3
483
483
  } from "fs";
484
- import { resolve as resolve3, join as join5, dirname as dirname3 } from "path";
485
- import { fileURLToPath as fileURLToPath3 } from "url";
484
+ import { resolve as resolve4, join as join6, dirname as dirname4 } from "path";
485
+ import { fileURLToPath as fileURLToPath4 } from "url";
486
486
 
487
487
  // src/bare-transform.ts
488
488
  import { existsSync as existsSync3, readFileSync as readFileSync3, unlinkSync as unlinkSync3, rmSync as rmSync3 } from "fs";
@@ -546,10 +546,86 @@ function applyBareTransform(targetDir, options = {}) {
546
546
  }
547
547
  }
548
548
 
549
+ // src/bot-preset.ts
550
+ import { cpSync as cpSync3, existsSync as existsSync4, readFileSync as readFileSync4, writeFileSync } from "fs";
551
+ import { dirname as dirname3, join as join5, resolve as resolve3 } from "path";
552
+ import { fileURLToPath as fileURLToPath3 } from "url";
553
+ var PRESET_FILES = [
554
+ "agents/researcher.ts",
555
+ "agents/publisher.ts",
556
+ "agents/lib/bot-scope.ts",
557
+ "agents/lib/sandbox.ts",
558
+ "agents/tools/read-notes.ts",
559
+ "agents/tools/write-note.ts",
560
+ "agents/tools/publish.ts",
561
+ "server/delivery.ts",
562
+ "server/crons/daily-research.ts"
563
+ ];
564
+ function presetRoot() {
565
+ return resolve3(dirname3(fileURLToPath3(import.meta.url)), "../templates/_bot-preset");
566
+ }
567
+ function applyBotPreset(options) {
568
+ const from = presetRoot();
569
+ const missing = PRESET_FILES.filter((f) => !existsSync4(join5(from, f)));
570
+ if (missing.length > 0) {
571
+ throw new Error(
572
+ `--preset=bot is incomplete in this build: missing ${missing.join(", ")}. Refusing to scaffold a partial preset.`
573
+ );
574
+ }
575
+ for (const file of PRESET_FILES) {
576
+ cpSync3(join5(from, file), join5(options.targetDir, file), { recursive: true });
577
+ }
578
+ appendBotReadme(options.targetDir);
579
+ }
580
+ function appendBotReadme(targetDir) {
581
+ const path = join5(targetDir, "README.md");
582
+ let current;
583
+ try {
584
+ current = readFileSync4(path, "utf-8");
585
+ } catch (error) {
586
+ if (error.code === "ENOENT") return;
587
+ throw error;
588
+ }
589
+ writeFileSync(path, `${current}
590
+ ${BOT_README_SECTION}`, "utf-8");
591
+ }
592
+ var BOT_README_SECTION = `
593
+ ## Bots (\`--preset=bot\`)
594
+
595
+ Two agents that work unattended:
596
+
597
+ - **researcher** \u2014 writes notes into its own workspace on a schedule
598
+ - **publisher** \u2014 reads those notes and publishes, behind a human approval
599
+
600
+ \`\`\`bash
601
+ # drive one directly
602
+ curl -X POST localhost:3000/api/agents/researcher \\
603
+ -H 'content-type: application/json' -H 'X-Theo-Action: 1' \\
604
+ -d '{"topic":"what changed in our dependencies this week"}'
605
+ \`\`\`
606
+
607
+ ### What to change first
608
+
609
+ **\`server/delivery.ts\`** prints to the console. That is the honest local behaviour and the reason
610
+ the scaffold runs before you configure anything \u2014 but a bot whose approvals only print is a bot
611
+ nobody can approve. Point it at a channel you actually read; one commented example is in the file.
612
+
613
+ **\`server/crons/daily-research.ts\`** runs at 09:00 UTC. Cron schedules are UTC, not local.
614
+
615
+ ### What is already decided for you
616
+
617
+ Each bot writes only inside \`.bots/<id>/\`, enforced by a resolved-path check rather than by asking
618
+ the model nicely. \`publisher\` can read the researcher's notes and cannot write them \u2014 that
619
+ asymmetry comes from \`botScope\`'s write root, so it holds even when a prompt says otherwise.
620
+
621
+ \`publish\` is gated by \`.approval()\`. On an attended run the surface shows the prompt; on a
622
+ scheduled one there is no attached client, which is what \`server/delivery.ts\` exists for.
623
+ `;
624
+
549
625
  // src/index.ts
550
- var __dirname3 = dirname3(fileURLToPath3(import.meta.url));
626
+ var __dirname3 = dirname4(fileURLToPath4(import.meta.url));
551
627
  function getTemplateDir(templateName = "default") {
552
- return resolve3(__dirname3, "../templates", templateName);
628
+ return resolve4(__dirname3, "../templates", templateName);
553
629
  }
554
630
  function isValidProjectName(name) {
555
631
  return /^[a-z0-9][a-z0-9._-]*$/.test(name);
@@ -561,43 +637,43 @@ function scaffold(targetDir, projectName, templateName = "default", options = {}
561
637
  );
562
638
  }
563
639
  const templateDir = getTemplateDir(templateName);
564
- if (!existsSync4(templateDir)) {
640
+ if (!existsSync5(templateDir)) {
565
641
  throw new Error(`Template "${templateName}" not found. Available templates: default`);
566
642
  }
567
- const resolvedName = projectName === "." ? resolve3(targetDir).split("/").pop() ?? "my-app" : projectName;
643
+ const resolvedName = projectName === "." ? resolve4(targetDir).split("/").pop() ?? "my-app" : projectName;
568
644
  if (!isValidProjectName(resolvedName)) {
569
645
  throw new Error(
570
646
  `Invalid project name "${resolvedName}". Use lowercase letters, numbers, hyphens, and dots. Must start with a letter or number.`
571
647
  );
572
648
  }
573
- if (existsSync4(targetDir)) {
649
+ if (existsSync5(targetDir)) {
574
650
  const contents = readdirSync3(targetDir);
575
651
  if (contents.length > 0) {
576
652
  throw new Error(`Directory "${targetDir}" is not empty. Please use an empty directory.`);
577
653
  }
578
654
  }
579
- cpSync3(templateDir, targetDir, { recursive: true });
655
+ cpSync4(templateDir, targetDir, { recursive: true });
580
656
  for (const [from, to] of [
581
657
  ["_gitignore", ".gitignore"],
582
658
  ["_prettierignore", ".prettierignore"]
583
659
  ]) {
584
- const src = join5(targetDir, from);
585
- if (existsSync4(src)) {
586
- renameSync(src, join5(targetDir, to));
660
+ const src = join6(targetDir, from);
661
+ if (existsSync5(src)) {
662
+ renameSync(src, join6(targetDir, to));
587
663
  }
588
664
  }
589
- const dotClaudeSrc = join5(targetDir, "dot-claude");
590
- const dotClaudeDest = join5(targetDir, ".claude");
591
- if (existsSync4(dotClaudeSrc)) {
665
+ const dotClaudeSrc = join6(targetDir, "dot-claude");
666
+ const dotClaudeDest = join6(targetDir, ".claude");
667
+ if (existsSync5(dotClaudeSrc)) {
592
668
  renameSync(dotClaudeSrc, dotClaudeDest);
593
669
  }
594
670
  for (const entry of readdirSync3(targetDir)) {
595
671
  if (!entry.endsWith(".tmpl")) continue;
596
- const src = join5(targetDir, entry);
672
+ const src = join6(targetDir, entry);
597
673
  const stat = statSync3(src);
598
674
  if (!stat.isFile()) continue;
599
- const dst = join5(targetDir, entry.slice(0, -".tmpl".length));
600
- const content = readFileSync4(src, "utf-8");
675
+ const dst = join6(targetDir, entry.slice(0, -".tmpl".length));
676
+ const content = readFileSync5(src, "utf-8");
601
677
  const replaced = content.replace(/\{\{name\}\}/g, resolvedName);
602
678
  writeScaffoldFile(dst, replaced);
603
679
  unlinkSync4(src);
@@ -616,6 +692,16 @@ Original error: ${original}`
616
692
  );
617
693
  }
618
694
  }
695
+ if (options.botPreset) {
696
+ try {
697
+ applyBotPreset({ targetDir });
698
+ } catch (err) {
699
+ rmSync4(targetDir, { recursive: true, force: true });
700
+ const original = err instanceof Error ? err.message : String(err);
701
+ throw new Error(`Scaffold rolled back: bot preset failed.
702
+ Original error: ${original}`);
703
+ }
704
+ }
619
705
  }
620
706
 
621
707
  // src/cli.ts
@@ -640,6 +726,7 @@ function showHelp() {
640
726
  --template=<name> Template to use (default: "default")
641
727
  --surface=<web|tui|desktop> App surface (default: "web") \u2014 tui (Ink) / desktop (Tauri)
642
728
  --bare Minimal app (no @theokit/* deps)
729
+ --preset=bot Layer the unattended-agent shape over the template
643
730
  --skip-install Scaffold files only, skip package install
644
731
  --disable-git Skip git init
645
732
  --use-npm Use npm as package manager
@@ -656,12 +743,23 @@ function showHelp() {
656
743
  npx create-theokit my-app
657
744
  npx create-theokit my-app --bare --skip-install
658
745
  npx create-theokit my-app --surface=tui
746
+ npx create-theokit my-app --preset=bot
659
747
  npx create-theokit my-app --surface=desktop
660
748
  npx create-theokit my-app --use-bun --biome
661
749
  npx create-theokit my-app --example=https://github.com/user/repo
662
750
  npx create-theokit my-app --import-alias="~/*"
663
751
  `);
664
752
  }
753
+ function parsePresetFlag(args) {
754
+ const preset = getFlag(args, "preset");
755
+ if (preset === void 0) return false;
756
+ if (preset !== "bot") {
757
+ console.error("");
758
+ console.error(`Unknown preset "${preset}". The only preset today is \`bot\`.`);
759
+ process.exit(1);
760
+ }
761
+ return true;
762
+ }
665
763
  async function main() {
666
764
  try {
667
765
  assertNodeVersion(process.version);
@@ -687,6 +785,7 @@ async function main() {
687
785
  }
688
786
  const templateName = getFlag(args, "template") ?? "default";
689
787
  const bare = hasFlag(args, "bare");
788
+ const botPreset = parsePresetFlag(args);
690
789
  const skipInstall = hasFlag(args, "skip-install");
691
790
  const useDefaults = hasFlag(args, "yes");
692
791
  const disableGit = hasFlag(args, "disable-git");
@@ -722,7 +821,7 @@ async function main() {
722
821
  );
723
822
  process.exit(1);
724
823
  }
725
- const targetDir = resolve4(process.cwd(), projectName);
824
+ const targetDir = resolve5(process.cwd(), projectName);
726
825
  if (exampleFlag) {
727
826
  try {
728
827
  console.log(`
@@ -763,10 +862,10 @@ Cloning example "${exampleFlag}" into ${projectName}...
763
862
  const backendsSuffix = backends.length > 0 ? ` [+services: ${backends.join(", ")}]` : "";
764
863
  console.log(
765
864
  `
766
- Creating TheoKit project "${projectName}" (template: ${templateName})${suffix}${surfaceSuffix}${backendsSuffix}...
865
+ Creating TheoKit project "${projectName}" (template: ${templateName})${suffix}${surfaceSuffix}${backendsSuffix}${botPreset ? " + bot preset" : ""}...
767
866
  `
768
867
  );
769
- scaffold(targetDir, projectName, templateName, { bare });
868
+ scaffold(targetDir, projectName, templateName, { bare, botPreset });
770
869
  applySurfaceStep(targetDir, projectName, surface, options);
771
870
  applyOptions(targetDir, options, { importAlias, useBiome });
772
871
  if (backends.length > 0) {
@@ -813,11 +912,11 @@ Original error: ${original}`);
813
912
  options.srcDir = false;
814
913
  }
815
914
  function applyOptions(targetDir, options, opts) {
816
- const pkgPath = resolve4(targetDir, "package.json");
915
+ const pkgPath = resolve5(targetDir, "package.json");
817
916
  if (opts.useBiome) {
818
- const eslintPath = resolve4(targetDir, "eslint.config.mjs");
819
- if (existsSync5(eslintPath)) unlinkSync5(eslintPath);
820
- const pkg = JSON.parse(readFileSync5(pkgPath, "utf-8"));
917
+ const eslintPath = resolve5(targetDir, "eslint.config.mjs");
918
+ if (existsSync6(eslintPath)) unlinkSync5(eslintPath);
919
+ const pkg = JSON.parse(readFileSync6(pkgPath, "utf-8"));
821
920
  delete pkg.devDependencies.eslint;
822
921
  delete pkg.devDependencies["eslint-config-prettier"];
823
922
  delete pkg.devDependencies["typescript-eslint"];
@@ -828,7 +927,7 @@ function applyOptions(targetDir, options, opts) {
828
927
  pkg.scripts["format:check"] = "biome format .";
829
928
  writeScaffoldFile(pkgPath, JSON.stringify(pkg, null, 2) + "\n");
830
929
  writeScaffoldFile(
831
- resolve4(targetDir, "biome.json"),
930
+ resolve5(targetDir, "biome.json"),
832
931
  JSON.stringify(
833
932
  {
834
933
  $schema: "https://biomejs.dev/schemas/1.9.0/schema.json",
@@ -841,9 +940,9 @@ function applyOptions(targetDir, options, opts) {
841
940
  ) + "\n"
842
941
  );
843
942
  } else if (!options.eslint) {
844
- const eslintPath = resolve4(targetDir, "eslint.config.mjs");
845
- if (existsSync5(eslintPath)) unlinkSync5(eslintPath);
846
- const pkg = JSON.parse(readFileSync5(pkgPath, "utf-8"));
943
+ const eslintPath = resolve5(targetDir, "eslint.config.mjs");
944
+ if (existsSync6(eslintPath)) unlinkSync5(eslintPath);
945
+ const pkg = JSON.parse(readFileSync6(pkgPath, "utf-8"));
847
946
  delete pkg.scripts.lint;
848
947
  delete pkg.scripts["lint:fix"];
849
948
  delete pkg.devDependencies.eslint;
@@ -852,34 +951,34 @@ function applyOptions(targetDir, options, opts) {
852
951
  writeScaffoldFile(pkgPath, JSON.stringify(pkg, null, 2) + "\n");
853
952
  }
854
953
  if (options.tailwind) {
855
- const pkg = JSON.parse(readFileSync5(pkgPath, "utf-8"));
954
+ const pkg = JSON.parse(readFileSync6(pkgPath, "utf-8"));
856
955
  pkg.devDependencies = pkg.devDependencies ?? {};
857
956
  pkg.devDependencies.tailwindcss = "^4.0.0";
858
957
  pkg.devDependencies["@tailwindcss/vite"] = "^4.0.0";
859
958
  writeScaffoldFile(pkgPath, JSON.stringify(pkg, null, 2) + "\n");
860
- const cssDir = existsSync5(resolve4(targetDir, "src/app")) ? "src/app" : "app";
861
- const cssPath = resolve4(targetDir, `${cssDir}/globals.css`);
862
- const existing = existsSync5(cssPath) ? readFileSync5(cssPath, "utf-8") : "";
959
+ const cssDir = existsSync6(resolve5(targetDir, "src/app")) ? "src/app" : "app";
960
+ const cssPath = resolve5(targetDir, `${cssDir}/globals.css`);
961
+ const existing = existsSync6(cssPath) ? readFileSync6(cssPath, "utf-8") : "";
863
962
  writeScaffoldFile(cssPath, '@import "tailwindcss";\n\n' + existing);
864
963
  }
865
964
  if (options.srcDir) {
866
- const srcDir = resolve4(targetDir, "src");
965
+ const srcDir = resolve5(targetDir, "src");
867
966
  mkdirSync(srcDir, { recursive: true });
868
967
  for (const dir of ["app", "server"]) {
869
- const from = resolve4(targetDir, dir);
870
- const to = resolve4(srcDir, dir);
871
- if (existsSync5(from)) renameSync2(from, to);
968
+ const from = resolve5(targetDir, dir);
969
+ const to = resolve5(srcDir, dir);
970
+ if (existsSync6(from)) renameSync2(from, to);
872
971
  }
873
- const configFrom = resolve4(targetDir, "theo.config.ts");
874
- if (existsSync5(configFrom)) renameSync2(configFrom, resolve4(srcDir, "theo.config.ts"));
875
- const tscPath2 = resolve4(targetDir, "tsconfig.json");
876
- const tsc2 = JSON.parse(readFileSync5(tscPath2, "utf-8"));
972
+ const configFrom = resolve5(targetDir, "theo.config.ts");
973
+ if (existsSync6(configFrom)) renameSync2(configFrom, resolve5(srcDir, "theo.config.ts"));
974
+ const tscPath2 = resolve5(targetDir, "tsconfig.json");
975
+ const tsc2 = JSON.parse(readFileSync6(tscPath2, "utf-8"));
877
976
  tsc2.compilerOptions.baseUrl = "src";
878
977
  tsc2.include = ["src/**/*.ts", "src/**/*.tsx"];
879
978
  writeScaffoldFile(tscPath2, JSON.stringify(tsc2, null, 2) + "\n");
880
979
  }
881
- const tscPath = resolve4(targetDir, "tsconfig.json");
882
- const tsc = JSON.parse(readFileSync5(tscPath, "utf-8"));
980
+ const tscPath = resolve5(targetDir, "tsconfig.json");
981
+ const tsc = JSON.parse(readFileSync6(tscPath, "utf-8"));
883
982
  if (!options.aliases) {
884
983
  delete tsc.compilerOptions.baseUrl;
885
984
  delete tsc.compilerOptions.paths;
@@ -893,8 +992,8 @@ function applyOptions(targetDir, options, opts) {
893
992
  }
894
993
  writeScaffoldFile(tscPath, JSON.stringify(tsc, null, 2) + "\n");
895
994
  if (!options.agentsMd) {
896
- const agentsPath = resolve4(targetDir, "AGENTS.md");
897
- if (existsSync5(agentsPath)) unlinkSync5(agentsPath);
995
+ const agentsPath = resolve5(targetDir, "AGENTS.md");
996
+ if (existsSync6(agentsPath)) unlinkSync5(agentsPath);
898
997
  }
899
998
  }
900
999
  function initGit(targetDir) {
@@ -913,6 +1012,6 @@ main().catch((err) => {
913
1012
  process.exit(1);
914
1013
  });
915
1014
  export {
916
- main
1015
+ parsePresetFlag
917
1016
  };
918
1017
  //# sourceMappingURL=cli.js.map
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/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"]}
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","../src/bot-preset.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","cpSync","existsSync","readFileSync","dirname","join","resolve","fileURLToPath","__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.12",
3
+ "version": "1.25.0",
4
4
  "type": "module",
5
5
  "description": "Scaffold a new TheoKit project",
6
6
  "repository": {
@@ -0,0 +1,62 @@
1
+ import { deriveConversationId } from '@theokit/agents'
2
+ import { bindToolScope } from '@theokit/agents/tool-scope'
3
+ import type { SandboxProvider } from '@theokit/agents/sandbox'
4
+
5
+ /**
6
+ * Everything one bot needs, per request, in one call.
7
+ *
8
+ * This is the piece a bot builder currently rediscovers. Three separate providers have to line up
9
+ * for a bot to be isolated from its siblings, and each is documented somewhere else:
10
+ *
11
+ * - **conversation** — `deriveConversationId(resource, thread)` keeps one bot's history out of
12
+ * another's. Without it, two bots sharing a store read each other's turns.
13
+ * - **tools** — `bindToolScope({ projectRoot, writeRoot, sandbox })` confines what the bot can
14
+ * touch. The sandbox is REQUIRED by that API on purpose: an omitted one used to produce an
15
+ * unconfined shell in silence.
16
+ * - **workspace** — a directory per bot, so "confined" means confined to its own work and not to
17
+ * the whole app.
18
+ *
19
+ * Composing them here means a new bot is one call rather than three decisions, and — more to the
20
+ * point — the isolation is the DEFAULT instead of something each bot has to remember.
21
+ */
22
+ export interface BotScope {
23
+ /** Pass to the run so this bot's history is its own. */
24
+ readonly conversationId: string
25
+ /** Pass to tools so this bot writes only inside its own workspace. */
26
+ readonly tools: ReturnType<typeof bindToolScope>
27
+ /** Where this bot's work lives on disk. */
28
+ readonly workspace: string
29
+ }
30
+
31
+ export interface BotScopeInput {
32
+ /** Which bot. Becomes the conversation `resource` and the workspace directory name. */
33
+ readonly botId: string
34
+ /**
35
+ * Which thread of that bot's work — a ticket id, a channel, a schedule name. Defaults to
36
+ * `'default'` so a single-threaded bot needs no ceremony.
37
+ */
38
+ readonly thread?: string
39
+ /** The app root. Everything is derived under it. */
40
+ readonly projectRoot: string
41
+ /**
42
+ * The confinement, required for the same reason `bindToolScope` requires it: a caller who wants
43
+ * none must say so with a `danger-full-access` provider, which appears in a review. An omission
44
+ * appears nowhere.
45
+ */
46
+ readonly sandbox: SandboxProvider
47
+ }
48
+
49
+ export function botScope(input: BotScopeInput): BotScope {
50
+ const workspace = `${input.projectRoot}/.bots/${input.botId}`
51
+ return {
52
+ conversationId: deriveConversationId(input.botId, input.thread ?? 'default'),
53
+ // `writeRoot` is the bot's own directory, not the project: a bot that can write anywhere in the
54
+ // app is a bot that can edit its siblings' work, and nothing here asked for that.
55
+ tools: bindToolScope({
56
+ projectRoot: input.projectRoot,
57
+ writeRoot: workspace,
58
+ sandbox: input.sandbox,
59
+ }),
60
+ workspace,
61
+ }
62
+ }
@@ -0,0 +1,21 @@
1
+ import { createSandboxBackend, type SandboxProvider } from '@theokit/agents/sandbox'
2
+
3
+ /**
4
+ * The confinement every bot in this scaffold runs under.
5
+ *
6
+ * `workspace-write` is the honest default for a bot: it writes, and only inside the roots the
7
+ * sandbox names. The two alternatives are wrong here in opposite directions — `read-only` makes a
8
+ * bot that cannot do its job, and `danger-full-access` hands an unattended agent the whole machine.
9
+ *
10
+ * Built through the SDK's own factory rather than by hand. The first draft of this file returned
11
+ * `{ mode: 'workspace-write' }` cast to the type, which `tsc` refused on the scaffolded app — and it
12
+ * was right to: a `SandboxProvider` is a BACKEND (or a function returning one), not a config object.
13
+ * The factory is documented as an "honest factory": it uses kernel enforcement where bwrap exists,
14
+ * and where it does not it warns once and falls back rather than pretending to sandbox.
15
+ *
16
+ * It is a function rather than a constant so a real deployment can swap the backend — a container, a
17
+ * remote sandbox — without every tool learning a new shape.
18
+ */
19
+ export function workspaceSandbox(): SandboxProvider {
20
+ return createSandboxBackend({ mode: 'workspace-write' })
21
+ }
@@ -0,0 +1,33 @@
1
+ import { AgentBuilder } from '@theokit/agents'
2
+ import { z } from 'zod'
3
+
4
+ import { publishTool } from './tools/publish.js'
5
+ import { readNotesTool } from './tools/read-notes.js'
6
+
7
+ /**
8
+ * `publisher` — turns the researcher's notes into something that leaves the building.
9
+ *
10
+ * The second bot, and the one that shows what a bot product has to solve that a chat app does not:
11
+ * **nobody is watching when this runs**. The approval below pauses the run, and on a schedule there
12
+ * is no attached client to show it to — which is why `server/delivery.ts` exists and why its seam is
13
+ * not optional in a template called `bot`.
14
+ *
15
+ * It can read the researcher's notes and cannot write them. That asymmetry is enforced by
16
+ * `botScope`'s `writeRoot`, not by instruction: a prompt asking a model not to write is a request,
17
+ * and a write root is a wall.
18
+ */
19
+ export const policy = 'public'
20
+
21
+ export default AgentBuilder.create()
22
+ .input(z.object({ instruction: z.string() }))
23
+ .model(process.env.LLM_MODEL ?? 'openai/gpt-4o-mini')
24
+ .system(
25
+ 'You turn research notes into published output. Read notes with read_notes, then publish. ' +
26
+ 'Publishing is gated: a human approves it before it happens.',
27
+ )
28
+ .tool(readNotesTool)
29
+ .tool(publishTool)
30
+ // The gate that makes this a bot rather than a script. On an attended run the surface shows the
31
+ // prompt; on a scheduled one it reaches the owner through `server/delivery.ts`.
32
+ .approval('publish', { question: 'Publish this?' })
33
+ .build()
@@ -0,0 +1,30 @@
1
+ import { AgentBuilder } from '@theokit/agents'
2
+ import { z } from 'zod'
3
+
4
+ import { readNotesTool } from './tools/read-notes.js'
5
+ import { writeNoteTool } from './tools/write-note.js'
6
+
7
+ /**
8
+ * `researcher` — gathers and writes notes, unattended.
9
+ *
10
+ * The first of two bots, and the pair is the point: one bot is a chat app with a cron. Two is where
11
+ * the questions a bot product actually has start — whose conversation is this, whose workspace can
12
+ * it write to, who approves the thing that leaves the building.
13
+ *
14
+ * It has NO approval gate, deliberately: everything it does is confined to its own workspace by
15
+ * `botScope`, and gating a write nobody outside can see would teach the ceremony without the reason.
16
+ * `publisher` is the one that needs it.
17
+ */
18
+ export const policy = 'public'
19
+
20
+ export default AgentBuilder.create()
21
+ .input(z.object({ topic: z.string() }))
22
+ .model(process.env.LLM_MODEL ?? 'openai/gpt-4o-mini')
23
+ .system(
24
+ 'You research a topic and leave notes for the publisher bot. ' +
25
+ 'Write what you find with write_note; read what you already know with read_notes. ' +
26
+ "You cannot publish — that is another bot's job, and it needs a human to approve.",
27
+ )
28
+ .tool(readNotesTool)
29
+ .tool(writeNoteTool)
30
+ .build()
@@ -0,0 +1,28 @@
1
+ import { tool } from 'theokit/server/define'
2
+ import { z } from 'zod'
3
+
4
+ import { deliver } from '../../server/delivery.js'
5
+
6
+ /**
7
+ * The action that leaves the building — and therefore the one behind an approval.
8
+ *
9
+ * `publisher.ts` marks it `.approval('publish', …)`, so the run PAUSES here. On an attended run the
10
+ * surface shows the prompt. On a scheduled one nobody is attached, which is the whole problem a bot
11
+ * product has and a chat app does not — see `server/delivery.ts`.
12
+ *
13
+ * It "publishes" by delivering the text, because a scaffold should not guess whether your product
14
+ * means a blog, a channel or a queue. Replace the body; keep the gate.
15
+ */
16
+ export const publishTool = tool('publish')
17
+ .describe('Publish finished output. A gated action — a human approves it before it runs.')
18
+ .input(
19
+ z.object({
20
+ title: z.string().describe('What is being published.'),
21
+ body: z.string().describe('The content.'),
22
+ }),
23
+ )
24
+ .execute(async ({ title, body }) => {
25
+ await deliver({ subject: `Published: ${title}`, body })
26
+ return `Published "${title}".`
27
+ })
28
+ .build()
@@ -0,0 +1,34 @@
1
+ import { tool } from 'theokit/server/define'
2
+ import { readdir, readFile } from 'node:fs/promises'
3
+ import { join } from 'node:path'
4
+ import { z } from 'zod'
5
+
6
+ import { botScope } from '../lib/bot-scope.js'
7
+ import { workspaceSandbox } from '../lib/sandbox.js'
8
+
9
+ /**
10
+ * Read the researcher's notes. Both bots use this, and only one can write them.
11
+ *
12
+ * That asymmetry is the multi-bot shape in one file: `publisher` reads a workspace it has no write
13
+ * root for, so "the publisher cannot edit the research" is enforced by `botScope` rather than by
14
+ * instructions the model may ignore.
15
+ */
16
+ export const readNotesTool = tool('read_notes')
17
+ .describe("Read the researcher bot's notes.")
18
+ .input(z.object({}))
19
+ .execute(async () => {
20
+ const scope = botScope({
21
+ botId: 'researcher',
22
+ projectRoot: process.cwd(),
23
+ sandbox: workspaceSandbox(),
24
+ })
25
+ // An empty workspace is a normal state on a first run, not an error: the researcher may simply
26
+ // not have run yet. Saying so beats an ENOENT the model has to interpret.
27
+ const names = await readdir(scope.workspace).catch(() => [] as string[])
28
+ if (names.length === 0) return 'No notes yet — the researcher has not written any.'
29
+ const notes = await Promise.all(
30
+ names.map(async (n) => `## ${n}\n${await readFile(join(scope.workspace, n), 'utf-8')}`),
31
+ )
32
+ return notes.join('\n\n')
33
+ })
34
+ .build()
@@ -0,0 +1,43 @@
1
+ import { tool } from 'theokit/server/define'
2
+ import { mkdir, writeFile } from 'node:fs/promises'
3
+ import { dirname, join, resolve } from 'node:path'
4
+ import { z } from 'zod'
5
+
6
+ import { botScope } from '../lib/bot-scope.js'
7
+ import { workspaceSandbox } from '../lib/sandbox.js'
8
+
9
+ /**
10
+ * Write a note into THIS bot's workspace — and nowhere else.
11
+ *
12
+ * The confinement is the interesting part, and it is not the prompt's job. `botScope` derives a
13
+ * `writeRoot` per bot; this resolves the caller's path against it and refuses anything that escapes.
14
+ * A model asked politely not to write outside its folder is a request; a resolved-path check is a
15
+ * wall.
16
+ */
17
+ export const writeNoteTool = tool('write_note')
18
+ .describe('Write a research note into your own workspace. Paths are relative to it.')
19
+ .input(
20
+ z.object({
21
+ path: z.string().describe('Relative path for the note, e.g. "topic/summary.md".'),
22
+ content: z.string().describe('The note body.'),
23
+ }),
24
+ )
25
+ .execute(async ({ path, content }) => {
26
+ const scope = botScope({
27
+ botId: 'researcher',
28
+ projectRoot: process.cwd(),
29
+ sandbox: workspaceSandbox(),
30
+ })
31
+ const target = resolve(join(scope.workspace, path))
32
+ // Fail fast, fail clear: name what was refused and why, rather than writing somewhere surprising.
33
+ if (!target.startsWith(resolve(scope.workspace))) {
34
+ throw new Error(
35
+ `write_note: "${path}" resolves outside this bot's workspace (${scope.workspace}). ` +
36
+ 'A bot writes only its own work; use a relative path.',
37
+ )
38
+ }
39
+ await mkdir(dirname(target), { recursive: true })
40
+ await writeFile(target, content, 'utf-8')
41
+ return `Wrote ${path}`
42
+ })
43
+ .build()
@@ -0,0 +1,44 @@
1
+ import { defineCron } from 'theokit/server/cron'
2
+
3
+ import { botScope } from '../../agents/lib/bot-scope.js'
4
+ import { workspaceSandbox } from '../../agents/lib/sandbox.js'
5
+ import { deliver } from '../delivery.js'
6
+
7
+ /**
8
+ * The entry point that makes this a bot: a schedule, not a page.
9
+ *
10
+ * A chat app starts when someone opens it. This starts at 09:00 whether or not anyone is looking,
11
+ * which is the whole shape the `bot` preset exists to demonstrate — and every hard question follows
12
+ * from it. Whose conversation does an unattended run continue? (`botScope`, so the bot resumes its
13
+ * own history rather than starting blank each morning.) Where does its output go when nobody is
14
+ * attached? (`deliver`.)
15
+ *
16
+ * `concurrency: 'forbid'` is the default and the right one here: yesterday's run still going when
17
+ * today's fires means the model is slow or stuck, and starting a second one against the same
18
+ * workspace makes two bots fight over one directory.
19
+ */
20
+ export default defineCron('daily-research', {
21
+ // 09:00 UTC. Cron schedules are UTC — a bot that appears to run an hour early twice a year is
22
+ // this line read as local time.
23
+ schedule: '0 9 * * *',
24
+ async handler({ traceId, scheduledAt }: { traceId: string; scheduledAt: Date }) {
25
+ const scope = botScope({
26
+ botId: 'researcher',
27
+ // The thread is the DATE, so each day is its own conversation. One endless thread would grow
28
+ // until the model spent its context re-reading last month.
29
+ thread: scheduledAt.toISOString().slice(0, 10),
30
+ projectRoot: process.cwd(),
31
+ sandbox: workspaceSandbox(),
32
+ })
33
+
34
+ await deliver({
35
+ subject: `daily-research started (${scope.conversationId})`,
36
+ body:
37
+ `Workspace: ${scope.workspace}\n` +
38
+ `Trace: ${traceId}\n\n` +
39
+ 'Drive the researcher agent from here — POST /api/agents/researcher with a topic, or call\n' +
40
+ 'it in-process. The scope above is what keeps this run isolated from the publisher and from\n' +
41
+ "yesterday's.",
42
+ })
43
+ },
44
+ })
@@ -0,0 +1,69 @@
1
+ /**
2
+ * How something reaches you when nobody is watching.
3
+ *
4
+ * This is the seam a `bot` template cannot omit. In a chat app an approval renders inline: the
5
+ * person who triggered the run is looking at it. On a schedule there is no attached client, so a
6
+ * paused run waits for an approval that has nowhere to appear — the difference between an agent and
7
+ * a bot, in one sentence.
8
+ *
9
+ * ## No channel is wired, and that is the decision
10
+ *
11
+ * A scaffold that defaulted to email would put your address in a file you did not write; one that
12
+ * defaulted to Slack would assume a workspace. Both are product decisions a starting point should
13
+ * not make for you. So the seam is here, it is called from the places that need it, and it prints
14
+ * until you point it somewhere.
15
+ *
16
+ * Printing is not a placeholder for "unimplemented" — it is the honest local behaviour, and it is
17
+ * why the scaffold RUNS before you have configured anything.
18
+ *
19
+ * ## Wiring a real channel
20
+ *
21
+ * Replace the body. One example, deliberately commented rather than installed:
22
+ *
23
+ * ```ts
24
+ * import { Resend } from 'resend'
25
+ * const resend = new Resend(process.env.RESEND_API_KEY)
26
+ * await resend.emails.send({
27
+ * from: 'bots@yourdomain.dev',
28
+ * to: process.env.BOT_OWNER_EMAIL!,
29
+ * subject: message.subject,
30
+ * text: message.body,
31
+ * })
32
+ * ```
33
+ *
34
+ * `@theokit/plugin-email` gives you the same thing with a provider contract, if you would rather not
35
+ * bind to one vendor.
36
+ */
37
+ export interface DeliveryMessage {
38
+ readonly subject: string
39
+ readonly body: string
40
+ }
41
+
42
+ export async function deliver(message: DeliveryMessage): Promise<void> {
43
+ // `await` on nothing keeps the signature honest: every real channel is async, and a caller that
44
+ // learned to omit `await` here would break the day you wire one.
45
+ await Promise.resolve()
46
+ console.log(`\n[bot] ${message.subject}\n${message.body}\n`)
47
+ }
48
+
49
+ /**
50
+ * The approval that could not be shown, delivered instead.
51
+ *
52
+ * Called when a scheduled run pauses on an `.approval()` gate. It carries the run id because
53
+ * approving happens against the run, not against the message — whoever receives this has to be able
54
+ * to act on it.
55
+ */
56
+ export async function deliverApproval(input: {
57
+ readonly agent: string
58
+ readonly runId: string
59
+ readonly question: string
60
+ }): Promise<void> {
61
+ await deliver({
62
+ subject: `Approval needed: ${input.agent}`,
63
+ body:
64
+ `${input.question}\n\n` +
65
+ `Run: ${input.runId}\n` +
66
+ `Approve: POST /api/agents/${input.agent}/approvals/${input.runId}\n\n` +
67
+ 'Nobody was attached when this paused, which is why it reached you here.',
68
+ })
69
+ }
@@ -79,6 +79,24 @@ your environment.
79
79
  Deeper detail lives in [`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md);
80
80
  customization and environment variables have their own pages beside it.
81
81
 
82
+ ## What is already installed
83
+
84
+ Two component libraries come with this template, and the split is by **what a component is for**,
85
+ not by how generic it looks:
86
+
87
+ | You need | Import from | Examples |
88
+ | --- | --- | --- |
89
+ | Agent surfaces — chat, streaming, tool calls, approvals | **`@theokit/ui`** | `ChatThread`, `ChatMessage`, `ChatComposer`, `ToolCallCard`, `AgentStream` |
90
+ | App chrome — shell, navigation, tables, forms, feedback | **`@usetheo/ui`** | `Sidebar`, `PageShell`, `DataTable`, `Select`, `FormField`, `Badge`, `EmptyState`, `Alert`, `Dialog`, `CommandPalette` |
91
+
92
+ This template uses a handful of them. The rest are installed and waiting — **check before you write
93
+ markup by hand.** A real app built on this scaffold hand-wrote around 600 lines of navigation, rows,
94
+ filters, badges and empty states that already existed in these two packages
95
+ (usetheokit/theokit#471).
96
+
97
+ The catalogue is `node_modules/@theokit/ui/llms.txt` — written to be read by an agent, and it
98
+ carries the routing table above in full.
99
+
82
100
  ## Adding a screen
83
101
 
84
102
  Routing is file-based: a screen is a folder under `app/` with a `page.tsx`.
@@ -37,6 +37,13 @@ export default function AboutPage() {
37
37
  screen. See <code>docs/ARCHITECTURE.md</code> § Adding a screen. Delete this page when you
38
38
  don't need it.
39
39
  </p>
40
+ <p className="text-muted-foreground text-sm leading-relaxed">
41
+ Before you write markup for that screen, look at what is already installed:{' '}
42
+ <code>@theokit/ui</code> for agent surfaces and <code>@usetheo/ui</code> for app chrome —
43
+ sidebars, tables, selects, badges, empty states. The catalogue is{' '}
44
+ <code>node_modules/@theokit/ui/llms.txt</code>, written to be read by an agent. The README
45
+ has the routing table.
46
+ </p>
40
47
  <Link to="/" prefetch="intent" className="text-primary text-sm hover:underline">
41
48
  ← Back to the chat
42
49
  </Link>
@@ -15,13 +15,23 @@ export default function RootLayout() {
15
15
  <div className="grid h-screen w-screen grid-rows-[auto_1fr] bg-background text-foreground">
16
16
  <Header />
17
17
  {/*
18
+ `<main>` SCROLLS. The shell pins itself to the viewport (`h-screen`), so the document never
19
+ scrolls and something inside has to — and the default is here, where an ordinary page gets
20
+ it for free. It used to be `overflow-hidden`, which is right for the chat and wrong for
21
+ every other page: content below the fold was simply unreachable, with nothing to explain it
22
+ (usetheokit/theokit#484). A page with the unusual requirement declares it; the common one
23
+ should not have to.
24
+
25
+ `min-h-0` is the non-obvious half. This is a grid child, and a grid/flex child defaults to
26
+ `min-height: auto` — it refuses to shrink below its content, so `overflow-y-auto` alone does
27
+ nothing at all. Whatever you scroll, it needs both.
28
+
18
29
  `data-theo-scroll` marks this as a scroll container, so its offset is restored on back
19
30
  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.
31
+ DOCUMENT, which here never scrolls, so without the marker there is nothing to restore. The
32
+ value is the id — add the attribute to any other element you scroll, with a different value.
23
33
  */}
24
- <main data-theo-scroll="main" className="flex h-full flex-col overflow-hidden">
34
+ <main data-theo-scroll="main" className="min-h-0 overflow-y-auto">
25
35
  <Outlet />
26
36
  </main>
27
37
  </div>
@@ -39,21 +39,31 @@ export default function Page() {
39
39
  return (
40
40
  <>
41
41
  <Metadata title="TheoKit agent" description="Chat with your TheoKit agent." />
42
- <ChatPanel
43
- thread={thread}
44
- isStreaming={isStreaming}
45
- onlyGreeting={onlyGreeting}
46
- onStarter={handleSubmit}
47
- />
48
- <Composer
49
- value={composerValue}
50
- onValueChange={setComposerValue}
51
- onSubmit={handleSubmit}
52
- running={isStreaming}
53
- hasError={hasError}
54
- error={error}
55
- onNewChat={newChat}
56
- />
42
+ {/*
43
+ The chat is the page that does NOT want the shell's scroll: the log scrolls inside itself
44
+ and the composer stays pinned to the bottom, which `overflow-hidden` is what produces. So it
45
+ declares that here rather than imposing it on every other page from the layout (#484).
46
+
47
+ `h-full` fills the routed slot; `min-h-0` lets this box shrink below its content so the
48
+ child's own scroll works — the same pair the layout comment describes.
49
+ */}
50
+ <div className="flex h-full min-h-0 flex-col overflow-hidden">
51
+ <ChatPanel
52
+ thread={thread}
53
+ isStreaming={isStreaming}
54
+ onlyGreeting={onlyGreeting}
55
+ onStarter={handleSubmit}
56
+ />
57
+ <Composer
58
+ value={composerValue}
59
+ onValueChange={setComposerValue}
60
+ onSubmit={handleSubmit}
61
+ running={isStreaming}
62
+ hasError={hasError}
63
+ error={error}
64
+ onNewChat={newChat}
65
+ />
66
+ </div>
57
67
  </>
58
68
  )
59
69
  }
@@ -25,17 +25,21 @@ paths:
25
25
  ```typescript
26
26
  import { theoFetch } from 'theokit/client'
27
27
 
28
- // Typed fetchparams and response inferred from server routes
28
+ // The URL is used literally build it yourself for a dynamic route.
29
29
  const tasks = await theoFetch('/api/tasks')
30
- const task = await theoFetch('/api/tasks/:id', { params: { id: 1 } })
30
+ const task = await theoFetch(`/api/tasks/${id}`)
31
31
 
32
- // POST with body
32
+ // POST with body. `method` is REQUIRED when the route declares one.
33
33
  const created = await theoFetch('/api/tasks', {
34
34
  method: 'POST',
35
35
  body: { title: 'New task' },
36
36
  })
37
37
  ```
38
38
 
39
+ `theoFetch` has **no `params` option.** Its options are `RequestInit` minus `body`/`method`, plus a
40
+ conditional `query` and `body` — nothing interpolates a `:id` segment for you. Reach for the
41
+ generated client below when you want that; it is the half that knows your route tree.
42
+
39
43
  ## App Client (proxy-based)
40
44
 
41
45
  ```typescript
@@ -43,11 +47,22 @@ import { createAppClient } from 'theokit/client'
43
47
 
44
48
  const client = createAppClient()
45
49
 
46
- const tasks = await client.tasks.GET()
47
- const task = await client.tasks[':id'].GET({ params: { id: 1 } })
48
- const created = await client.tasks.POST({ body: { title: 'New' } })
50
+ const tasks = await client.tasks.get()
51
+ const task = await client.tasks.id.get({ params: { id: '42' } }) // → GET /api/tasks/42
52
+ const created = await client.tasks.post({ body: { title: 'New' } })
49
53
  ```
50
54
 
55
+ Three details the generator decides for you, and each is easy to guess wrong:
56
+
57
+ - **methods are lowercase** — `get`, `post`; the export in your route file stays `GET`
58
+ - **a dynamic segment loses its colon** — `app/tasks/[id]` is reached as `client.tasks.id`, not
59
+ `client.tasks[':id']`
60
+ - **`params` values are strings** — `{ id: '42' }`; a URL segment has no other type
61
+
62
+ Segments are otherwise kept **literal**, so a hyphenated route needs bracket access:
63
+ `client['agents-config'].get()`. The client mirrors your URLs rather than prettifying them — a
64
+ camelCased key once produced a request to a path no route served.
65
+
51
66
  ## Agent Streaming
52
67
 
53
68
  Two client APIs from `theokit/client`:
@@ -16,9 +16,25 @@ paths:
16
16
 
17
17
  `@theokit/ui` is an optional peer dependency. If installed, it provides ready-made AI components for chat + coding-agent surfaces (chat thread, agent events, tool calls, diff viewer, build logs), plus theming. **Never build custom equivalents** of components it provides. Generic primitives (Button, Input, Card, CodeBlock, PageShell, Sidebar, Avatar, Alert, etc.) live in `@usetheo/ui`, which `@theokit/ui` depends on — import those from `@usetheo/ui`.
18
18
 
19
+ ## Read the catalogue before writing markup
20
+
21
+ `@theokit/ui` ships **`llms.txt`** — a file written for an agent to read, at
22
+ `node_modules/@theokit/ui/llms.txt`. It lists every component with its purpose and, in a
23
+ **"Which package has what"** table, routes each need to the right package. Read it before building a
24
+ sidebar, a table, a select, a badge or an empty state by hand.
25
+
26
+ That is not a style preference. A real app built on this scaffold hand-wrote ~600 lines of markup —
27
+ navigation, queue rows, filters, status badges, empty states, a composer — and **every one of them
28
+ already existed** in the two packages the scaffold had installed (usetheokit/theokit#471). The
29
+ components were there; nothing pointed at them.
30
+
31
+ `@usetheo/ui` has no `llms.txt`; its surface is in its own README and its type definitions.
32
+
19
33
  ## Package Identity
20
34
 
21
- `@theokit/ui` (AI-native, currently `1.0.0`) provides the AI-agent-surface components. Its generic foundation was split into `@usetheo/ui` in the 2026-07-03 AI-exclusive pivot; `@theokit/ui` depends on `@usetheo/ui`, so installing `@theokit/ui` pulls the foundation transitively.
35
+ `@theokit/ui` provides the AI-agent-surface components. (The version this project uses is in
36
+ `package.json`; a number written here goes stale the first time anyone upgrades, and this one
37
+ said `1.0.0` while npm served `1.5.1`.) Its generic foundation was split into `@usetheo/ui` in the 2026-07-03 AI-exclusive pivot; `@theokit/ui` depends on `@usetheo/ui`, so installing `@theokit/ui` pulls the foundation transitively.
22
38
 
23
39
  ```bash
24
40
  # Install from npm (preferred)
@@ -16,7 +16,7 @@
16
16
  "typecheck": "tsc --noEmit"
17
17
  },
18
18
  "dependencies": {
19
- "theokit": "^0.53.0",
19
+ "theokit": "^0.56.0",
20
20
  "@theokit/agents": "^10.1.0",
21
21
  "@theokit/sdk": "^4.52.1",
22
22
  "@theokit/ui": "^1.1.0",