@theokit/sdk 1.8.0 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [1.8.1] - 2026-06-12
6
+
7
+ ### Changed
8
+
9
+ - `theokit-init-claude` now merges into existing `.claude/` directories instead of refusing. Adds only missing files, preserves user customizations. Use `--force` to overwrite all files.
10
+
5
11
  ## [1.8.0] - 2026-06-12
6
12
 
7
13
  ### Added
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { cpSync, existsSync } from "node:fs";
2
+ import { cpSync, existsSync, mkdirSync, readdirSync } from "node:fs";
3
3
  import { join } from "node:path";
4
4
 
5
5
  // EC-1: Node version guard (matches SDK engines.node)
@@ -14,21 +14,55 @@ const cwd = process.cwd();
14
14
  const targetDir = join(cwd, ".claude");
15
15
  const force = process.argv.includes("--force");
16
16
 
17
- // EC-4: Check .claude/, AGENTS.md, CLAUDE.md independently
18
- const conflicts = [];
19
- if (existsSync(targetDir)) conflicts.push(".claude/");
20
- if (existsSync(join(cwd, "AGENTS.md"))) conflicts.push("AGENTS.md");
21
- if (existsSync(join(cwd, "CLAUDE.md"))) conflicts.push("CLAUDE.md");
17
+ /**
18
+ * Merge-copy: recursively copies src into dest, skipping files that already
19
+ * exist in dest. With --force, overwrites everything.
20
+ * Returns { added, skipped } counts.
21
+ */
22
+ function mergeCopy(src, dest) {
23
+ let added = 0;
24
+ let skipped = 0;
25
+ mkdirSync(dest, { recursive: true });
26
+ for (const entry of readdirSync(src, { withFileTypes: true })) {
27
+ const srcPath = join(src, entry.name);
28
+ const destPath = join(dest, entry.name);
29
+ if (entry.isDirectory()) {
30
+ const sub = mergeCopy(srcPath, destPath);
31
+ added += sub.added;
32
+ skipped += sub.skipped;
33
+ } else if (force || !existsSync(destPath)) {
34
+ cpSync(srcPath, destPath);
35
+ added++;
36
+ } else {
37
+ skipped++;
38
+ }
39
+ }
40
+ return { added, skipped };
41
+ }
22
42
 
23
- if (conflicts.length > 0 && !force) {
24
- console.error(`Already exists: ${conflicts.join(", ")}. Use --force to overwrite.`);
25
- process.exit(1);
43
+ // Merge .claude/ directory (skills, rules, settings)
44
+ const dotClaude = mergeCopy(join(templateDir, "dot-claude"), targetDir);
45
+
46
+ // Merge root files (AGENTS.md, CLAUDE.md)
47
+ let rootAdded = 0;
48
+ let rootSkipped = 0;
49
+ for (const file of ["AGENTS.md", "CLAUDE.md"]) {
50
+ const dest = join(cwd, file);
51
+ if (force || !existsSync(dest)) {
52
+ cpSync(join(templateDir, file), dest);
53
+ rootAdded++;
54
+ } else {
55
+ rootSkipped++;
56
+ }
26
57
  }
27
58
 
28
- cpSync(join(templateDir, "dot-claude"), targetDir, { recursive: true });
29
- cpSync(join(templateDir, "AGENTS.md"), join(cwd, "AGENTS.md"));
30
- cpSync(join(templateDir, "CLAUDE.md"), join(cwd, "CLAUDE.md"));
59
+ const totalAdded = dotClaude.added + rootAdded;
60
+ const totalSkipped = dotClaude.skipped + rootSkipped;
31
61
 
32
- console.log("Created .claude/ with TheoKit SDK configuration (15 domain skills).");
33
- console.log("Created AGENTS.md (cross-agent) and CLAUDE.md (Claude Code).");
34
- console.log("\nNext: open Claude Code and start building with TheoKit.");
62
+ if (totalAdded === 0) {
63
+ console.log("All TheoKit SDK files already present. Nothing to add.");
64
+ console.log("Use --force to overwrite existing files.");
65
+ } else {
66
+ console.log(`Added ${totalAdded} file(s). Skipped ${totalSkipped} existing file(s).`);
67
+ console.log("\nNext: open Claude Code and start building with TheoKit.");
68
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theokit/sdk",
3
- "version": "1.8.0",
3
+ "version": "1.8.1",
4
4
  "description": "TypeScript SDK for the Theo agent harness — same surface, local or cloud.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/usetheo/theokit-sdk#readme",