@tpsdev-ai/cli 0.2.0 → 0.3.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.
Files changed (228) hide show
  1. package/README.md +65 -0
  2. package/bin/tps.cjs +22 -0
  3. package/bin/tps.ts +435 -0
  4. package/package.json +29 -5
  5. package/dist/bin/tps.d.ts +0 -3
  6. package/dist/bin/tps.d.ts.map +0 -1
  7. package/dist/bin/tps.js +0 -414
  8. package/dist/bin/tps.js.map +0 -1
  9. package/dist/src/cli/hire.d.ts +0 -16
  10. package/dist/src/cli/hire.d.ts.map +0 -1
  11. package/dist/src/cli/hire.js +0 -176
  12. package/dist/src/cli/hire.js.map +0 -1
  13. package/dist/src/cli/office.d.ts +0 -7
  14. package/dist/src/cli/office.d.ts.map +0 -1
  15. package/dist/src/cli/office.js +0 -51
  16. package/dist/src/cli/office.js.map +0 -1
  17. package/dist/src/cli/review.d.ts +0 -9
  18. package/dist/src/cli/review.d.ts.map +0 -1
  19. package/dist/src/cli/review.js +0 -109
  20. package/dist/src/cli/review.js.map +0 -1
  21. package/dist/src/cli/roster.d.ts +0 -6
  22. package/dist/src/cli/roster.d.ts.map +0 -1
  23. package/dist/src/cli/roster.js +0 -60
  24. package/dist/src/cli/roster.js.map +0 -1
  25. package/dist/src/commands/backup.d.ts +0 -19
  26. package/dist/src/commands/backup.d.ts.map +0 -1
  27. package/dist/src/commands/backup.js +0 -595
  28. package/dist/src/commands/backup.js.map +0 -1
  29. package/dist/src/commands/bootstrap.d.ts +0 -7
  30. package/dist/src/commands/bootstrap.d.ts.map +0 -1
  31. package/dist/src/commands/bootstrap.js +0 -255
  32. package/dist/src/commands/bootstrap.js.map +0 -1
  33. package/dist/src/commands/branch.d.ts +0 -14
  34. package/dist/src/commands/branch.d.ts.map +0 -1
  35. package/dist/src/commands/branch.js +0 -395
  36. package/dist/src/commands/branch.js.map +0 -1
  37. package/dist/src/commands/context.d.ts +0 -9
  38. package/dist/src/commands/context.d.ts.map +0 -1
  39. package/dist/src/commands/context.js +0 -57
  40. package/dist/src/commands/context.js.map +0 -1
  41. package/dist/src/commands/git.d.ts +0 -8
  42. package/dist/src/commands/git.d.ts.map +0 -1
  43. package/dist/src/commands/git.js +0 -53
  44. package/dist/src/commands/git.js.map +0 -1
  45. package/dist/src/commands/identity.d.ts +0 -13
  46. package/dist/src/commands/identity.d.ts.map +0 -1
  47. package/dist/src/commands/identity.js +0 -231
  48. package/dist/src/commands/identity.js.map +0 -1
  49. package/dist/src/commands/mail.d.ts +0 -12
  50. package/dist/src/commands/mail.d.ts.map +0 -1
  51. package/dist/src/commands/mail.js +0 -251
  52. package/dist/src/commands/mail.js.map +0 -1
  53. package/dist/src/commands/office-manager.d.ts +0 -147
  54. package/dist/src/commands/office-manager.d.ts.map +0 -1
  55. package/dist/src/commands/office-manager.js +0 -171
  56. package/dist/src/commands/office-manager.js.map +0 -1
  57. package/dist/src/commands/office.d.ts +0 -12
  58. package/dist/src/commands/office.d.ts.map +0 -1
  59. package/dist/src/commands/office.js +0 -480
  60. package/dist/src/commands/office.js.map +0 -1
  61. package/dist/src/commands/roster.d.ts +0 -10
  62. package/dist/src/commands/roster.d.ts.map +0 -1
  63. package/dist/src/commands/roster.js +0 -143
  64. package/dist/src/commands/roster.js.map +0 -1
  65. package/dist/src/commands/secrets.d.ts +0 -9
  66. package/dist/src/commands/secrets.d.ts.map +0 -1
  67. package/dist/src/commands/secrets.js +0 -54
  68. package/dist/src/commands/secrets.js.map +0 -1
  69. package/dist/src/commands/status.d.ts +0 -33
  70. package/dist/src/commands/status.d.ts.map +0 -1
  71. package/dist/src/commands/status.js +0 -407
  72. package/dist/src/commands/status.js.map +0 -1
  73. package/dist/src/generators/brief.d.ts +0 -6
  74. package/dist/src/generators/brief.d.ts.map +0 -1
  75. package/dist/src/generators/brief.js +0 -33
  76. package/dist/src/generators/brief.js.map +0 -1
  77. package/dist/src/generators/claude-code.d.ts +0 -18
  78. package/dist/src/generators/claude-code.d.ts.map +0 -1
  79. package/dist/src/generators/claude-code.js +0 -85
  80. package/dist/src/generators/claude-code.js.map +0 -1
  81. package/dist/src/generators/codex.d.ts +0 -23
  82. package/dist/src/generators/codex.d.ts.map +0 -1
  83. package/dist/src/generators/codex.js +0 -83
  84. package/dist/src/generators/codex.js.map +0 -1
  85. package/dist/src/generators/ollama.d.ts +0 -18
  86. package/dist/src/generators/ollama.d.ts.map +0 -1
  87. package/dist/src/generators/ollama.js +0 -97
  88. package/dist/src/generators/ollama.js.map +0 -1
  89. package/dist/src/generators/openclaw.d.ts +0 -15
  90. package/dist/src/generators/openclaw.d.ts.map +0 -1
  91. package/dist/src/generators/openclaw.js +0 -107
  92. package/dist/src/generators/openclaw.js.map +0 -1
  93. package/dist/src/generators/registry.d.ts +0 -36
  94. package/dist/src/generators/registry.d.ts.map +0 -1
  95. package/dist/src/generators/registry.js +0 -99
  96. package/dist/src/generators/registry.js.map +0 -1
  97. package/dist/src/schema/manifest.d.ts +0 -287
  98. package/dist/src/schema/manifest.d.ts.map +0 -1
  99. package/dist/src/schema/manifest.js +0 -65
  100. package/dist/src/schema/manifest.js.map +0 -1
  101. package/dist/src/schema/report.d.ts +0 -166
  102. package/dist/src/schema/report.d.ts.map +0 -1
  103. package/dist/src/schema/report.js +0 -90
  104. package/dist/src/schema/report.js.map +0 -1
  105. package/dist/src/schema/sanitizer.d.ts +0 -30
  106. package/dist/src/schema/sanitizer.d.ts.map +0 -1
  107. package/dist/src/schema/sanitizer.js +0 -99
  108. package/dist/src/schema/sanitizer.js.map +0 -1
  109. package/dist/src/soundstage/mock-llm.d.ts +0 -3
  110. package/dist/src/soundstage/mock-llm.d.ts.map +0 -1
  111. package/dist/src/soundstage/mock-llm.js +0 -68
  112. package/dist/src/soundstage/mock-llm.js.map +0 -1
  113. package/dist/src/utils/agent-info.d.ts +0 -28
  114. package/dist/src/utils/agent-info.d.ts.map +0 -1
  115. package/dist/src/utils/agent-info.js +0 -102
  116. package/dist/src/utils/agent-info.js.map +0 -1
  117. package/dist/src/utils/archive.d.ts +0 -20
  118. package/dist/src/utils/archive.d.ts.map +0 -1
  119. package/dist/src/utils/archive.js +0 -108
  120. package/dist/src/utils/archive.js.map +0 -1
  121. package/dist/src/utils/config-inject.d.ts +0 -27
  122. package/dist/src/utils/config-inject.d.ts.map +0 -1
  123. package/dist/src/utils/config-inject.js +0 -83
  124. package/dist/src/utils/config-inject.js.map +0 -1
  125. package/dist/src/utils/config.d.ts +0 -30
  126. package/dist/src/utils/config.d.ts.map +0 -1
  127. package/dist/src/utils/config.js +0 -55
  128. package/dist/src/utils/config.js.map +0 -1
  129. package/dist/src/utils/connection-state.d.ts +0 -27
  130. package/dist/src/utils/connection-state.d.ts.map +0 -1
  131. package/dist/src/utils/connection-state.js +0 -81
  132. package/dist/src/utils/connection-state.js.map +0 -1
  133. package/dist/src/utils/context.d.ts +0 -14
  134. package/dist/src/utils/context.d.ts.map +0 -1
  135. package/dist/src/utils/context.js +0 -68
  136. package/dist/src/utils/context.js.map +0 -1
  137. package/dist/src/utils/github-webhook.d.ts +0 -3
  138. package/dist/src/utils/github-webhook.d.ts.map +0 -1
  139. package/dist/src/utils/github-webhook.js +0 -105
  140. package/dist/src/utils/github-webhook.js.map +0 -1
  141. package/dist/src/utils/identity.d.ts +0 -124
  142. package/dist/src/utils/identity.d.ts.map +0 -1
  143. package/dist/src/utils/identity.js +0 -434
  144. package/dist/src/utils/identity.js.map +0 -1
  145. package/dist/src/utils/internal-mail.d.ts +0 -18
  146. package/dist/src/utils/internal-mail.d.ts.map +0 -1
  147. package/dist/src/utils/internal-mail.js +0 -75
  148. package/dist/src/utils/internal-mail.js.map +0 -1
  149. package/dist/src/utils/loop-detector.d.ts +0 -27
  150. package/dist/src/utils/loop-detector.d.ts.map +0 -1
  151. package/dist/src/utils/loop-detector.js +0 -42
  152. package/dist/src/utils/loop-detector.js.map +0 -1
  153. package/dist/src/utils/mail-handler.d.ts +0 -19
  154. package/dist/src/utils/mail-handler.d.ts.map +0 -1
  155. package/dist/src/utils/mail-handler.js +0 -94
  156. package/dist/src/utils/mail-handler.js.map +0 -1
  157. package/dist/src/utils/mail.d.ts +0 -22
  158. package/dist/src/utils/mail.d.ts.map +0 -1
  159. package/dist/src/utils/mail.js +0 -111
  160. package/dist/src/utils/mail.js.map +0 -1
  161. package/dist/src/utils/manifest.d.ts +0 -36
  162. package/dist/src/utils/manifest.d.ts.map +0 -1
  163. package/dist/src/utils/manifest.js +0 -94
  164. package/dist/src/utils/manifest.js.map +0 -1
  165. package/dist/src/utils/noise-ik-transport.d.ts +0 -18
  166. package/dist/src/utils/noise-ik-transport.d.ts.map +0 -1
  167. package/dist/src/utils/noise-ik-transport.js +0 -357
  168. package/dist/src/utils/noise-ik-transport.js.map +0 -1
  169. package/dist/src/utils/nono.d.ts +0 -72
  170. package/dist/src/utils/nono.d.ts.map +0 -1
  171. package/dist/src/utils/nono.js +0 -166
  172. package/dist/src/utils/nono.js.map +0 -1
  173. package/dist/src/utils/outbox.d.ts +0 -10
  174. package/dist/src/utils/outbox.d.ts.map +0 -1
  175. package/dist/src/utils/outbox.js +0 -29
  176. package/dist/src/utils/outbox.js.map +0 -1
  177. package/dist/src/utils/output.d.ts +0 -17
  178. package/dist/src/utils/output.d.ts.map +0 -1
  179. package/dist/src/utils/output.js +0 -83
  180. package/dist/src/utils/output.js.map +0 -1
  181. package/dist/src/utils/plain-tcp-transport.d.ts +0 -10
  182. package/dist/src/utils/plain-tcp-transport.d.ts.map +0 -1
  183. package/dist/src/utils/plain-tcp-transport.js +0 -209
  184. package/dist/src/utils/plain-tcp-transport.js.map +0 -1
  185. package/dist/src/utils/provision.d.ts +0 -2
  186. package/dist/src/utils/provision.d.ts.map +0 -1
  187. package/dist/src/utils/provision.js +0 -193
  188. package/dist/src/utils/provision.js.map +0 -1
  189. package/dist/src/utils/relay.d.ts +0 -30
  190. package/dist/src/utils/relay.d.ts.map +0 -1
  191. package/dist/src/utils/relay.js +0 -539
  192. package/dist/src/utils/relay.js.map +0 -1
  193. package/dist/src/utils/sandbox.d.ts +0 -37
  194. package/dist/src/utils/sandbox.d.ts.map +0 -1
  195. package/dist/src/utils/sandbox.js +0 -126
  196. package/dist/src/utils/sandbox.js.map +0 -1
  197. package/dist/src/utils/transport.d.ts +0 -62
  198. package/dist/src/utils/transport.d.ts.map +0 -1
  199. package/dist/src/utils/transport.js +0 -75
  200. package/dist/src/utils/transport.js.map +0 -1
  201. package/dist/src/utils/vault.d.ts +0 -21
  202. package/dist/src/utils/vault.d.ts.map +0 -1
  203. package/dist/src/utils/vault.js +0 -67
  204. package/dist/src/utils/vault.js.map +0 -1
  205. package/dist/src/utils/wall.d.ts +0 -5
  206. package/dist/src/utils/wall.d.ts.map +0 -1
  207. package/dist/src/utils/wall.js +0 -51
  208. package/dist/src/utils/wall.js.map +0 -1
  209. package/dist/src/utils/wire-delivery.d.ts +0 -10
  210. package/dist/src/utils/wire-delivery.d.ts.map +0 -1
  211. package/dist/src/utils/wire-delivery.js +0 -57
  212. package/dist/src/utils/wire-delivery.js.map +0 -1
  213. package/dist/src/utils/wire-frame.d.ts +0 -10
  214. package/dist/src/utils/wire-frame.d.ts.map +0 -1
  215. package/dist/src/utils/wire-frame.js +0 -66
  216. package/dist/src/utils/wire-frame.js.map +0 -1
  217. package/dist/src/utils/wire-mail.d.ts +0 -54
  218. package/dist/src/utils/wire-mail.d.ts.map +0 -1
  219. package/dist/src/utils/wire-mail.js +0 -24
  220. package/dist/src/utils/wire-mail.js.map +0 -1
  221. package/dist/src/utils/workspace.d.ts +0 -14
  222. package/dist/src/utils/workspace.d.ts.map +0 -1
  223. package/dist/src/utils/workspace.js +0 -53
  224. package/dist/src/utils/workspace.js.map +0 -1
  225. package/dist/src/utils/ws-noise-transport.d.ts +0 -18
  226. package/dist/src/utils/ws-noise-transport.d.ts.map +0 -1
  227. package/dist/src/utils/ws-noise-transport.js +0 -356
  228. package/dist/src/utils/ws-noise-transport.js.map +0 -1
@@ -1,85 +0,0 @@
1
- import { sanitizeTPSReport, sanitizeIdentifier } from "../schema/sanitizer.js";
2
- import { mkdirSync, writeFileSync, existsSync } from "node:fs";
3
- import { join } from "node:path";
4
- import { homedir } from "node:os";
5
- import { generateOperationalBrief } from "./brief.js";
6
- export function generateClaudeCode(rawReport, options = {}) {
7
- const report = sanitizeTPSReport(rawReport);
8
- const agentName = options.name ? sanitizeIdentifier(options.name) : report.identity.default_name;
9
- const agentId = agentName.toLowerCase().replace(/\s+/g, "-").replace(/[^a-z0-9\-_]/g, "");
10
- if (!agentId) {
11
- throw new Error(`Agent name "${agentName}" produces an empty ID after sanitization.`);
12
- }
13
- const workspacePath = options.workspace || join(homedir(), "claude-agents", agentId);
14
- // Build CLAUDE.md
15
- const claudeMd = [
16
- `# ${agentName}`,
17
- "",
18
- `**Role:** ${report.name}`,
19
- "",
20
- report.description,
21
- "",
22
- "## Personality",
23
- "",
24
- report.identity.personality,
25
- "",
26
- "## Communication Style",
27
- "",
28
- report.identity.communication_style,
29
- "",
30
- "## Operations",
31
- "Read OPERATIONS.md to understand your environment and how to use the TPS CLI.",
32
- "",
33
- ];
34
- if (report.flair.length > 0) {
35
- claudeMd.push("## Skills", "");
36
- for (const f of report.flair) {
37
- claudeMd.push(`- ${f}`);
38
- }
39
- claudeMd.push("");
40
- }
41
- if (report.boundaries) {
42
- claudeMd.push("## Boundaries", "");
43
- if (!report.boundaries.can_commit)
44
- claudeMd.push("- Ask before committing code");
45
- if (!report.boundaries.can_send_external)
46
- claudeMd.push("- Don't send external messages without approval");
47
- if (!report.boundaries.can_spend)
48
- claudeMd.push("- No spending without explicit approval");
49
- claudeMd.push("");
50
- }
51
- // Build .claude/settings.json
52
- const settings = {
53
- model: "claude-sonnet-4-20250514",
54
- permissions: {
55
- allow: report.boundaries?.can_commit
56
- ? ["Bash(git commit:*)", "Bash(git push:*)"]
57
- : [],
58
- deny: [
59
- "Bash(rm -rf:*)",
60
- "Bash(curl:*)",
61
- ],
62
- },
63
- };
64
- const files = {
65
- "CLAUDE.md": claudeMd.join("\n"),
66
- "OPERATIONS.md": generateOperationalBrief(report, !!options.branch),
67
- ".claude/settings.json": JSON.stringify(settings, null, 2) + "\n",
68
- };
69
- return { files, workspacePath, agentId, agentName };
70
- }
71
- export function writeClaudeCode(generated) {
72
- const written = [];
73
- for (const [name, content] of Object.entries(generated.files)) {
74
- const filePath = join(generated.workspacePath, name);
75
- mkdirSync(join(filePath, ".."), { recursive: true });
76
- if (existsSync(filePath)) {
77
- // Don't overwrite existing files
78
- continue;
79
- }
80
- writeFileSync(filePath, content, "utf-8");
81
- written.push(name);
82
- }
83
- return written;
84
- }
85
- //# sourceMappingURL=claude-code.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/generators/claude-code.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- /**
2
- * Codex CLI generator — produces instructions.md and codex config
3
- * from a TPS report.
4
- *
5
- * Codex CLI (OpenAI) uses:
6
- * - instructions.md or AGENTS.md for system instructions
7
- * - .codex/config.json for settings
8
- */
9
- import type { TPSReport } from "../schema/report.js";
10
- export interface GeneratedCodex {
11
- files: Record<string, string>;
12
- workspacePath: string;
13
- agentId: string;
14
- agentName: string;
15
- }
16
- export declare function generateCodex(rawReport: TPSReport, options?: {
17
- name?: string;
18
- workspace?: string;
19
- model?: string;
20
- branch?: boolean;
21
- }): GeneratedCodex;
22
- export declare function writeCodex(generated: GeneratedCodex): string[];
23
- //# sourceMappingURL=codex.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/generators/codex.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAOrD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,aAAa,CAC3B,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACpF,cAAc,CAuEhB;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,EAAE,CAU9D"}
@@ -1,83 +0,0 @@
1
- import { sanitizeTPSReport, sanitizeIdentifier } from "../schema/sanitizer.js";
2
- import { mkdirSync, writeFileSync, existsSync } from "node:fs";
3
- import { join } from "node:path";
4
- import { homedir } from "node:os";
5
- import { generateOperationalBrief } from "./brief.js";
6
- export function generateCodex(rawReport, options = {}) {
7
- const report = sanitizeTPSReport(rawReport);
8
- const agentName = options.name ? sanitizeIdentifier(options.name) : report.identity.default_name;
9
- const agentId = agentName.toLowerCase().replace(/\s+/g, "-").replace(/[^a-z0-9\-_]/g, "");
10
- if (!agentId) {
11
- throw new Error(`Agent name "${agentName}" produces an empty ID after sanitization.`);
12
- }
13
- const workspacePath = options.workspace || join(homedir(), "codex-agents", agentId);
14
- const model = options.model || "o3";
15
- // Build AGENTS.md (Codex's instruction file)
16
- const instructions = [
17
- `# ${agentName}`,
18
- "",
19
- `**Role:** ${report.name}`,
20
- "",
21
- report.description,
22
- "",
23
- "## Operations",
24
- "Read OPERATIONS.md to understand your environment and how to use the TPS CLI.",
25
- "",
26
- "## Personality",
27
- "",
28
- report.identity.personality,
29
- "",
30
- "## Communication Style",
31
- "",
32
- report.identity.communication_style,
33
- "",
34
- ];
35
- if (report.flair.length > 0) {
36
- instructions.push("## Skills", "");
37
- for (const f of report.flair) {
38
- instructions.push(`- ${f}`);
39
- }
40
- instructions.push("");
41
- }
42
- if (report.boundaries) {
43
- instructions.push("## Boundaries", "");
44
- if (report.boundaries.can_commit) {
45
- instructions.push("- You may commit and push code directly");
46
- }
47
- else {
48
- instructions.push("- Ask before committing code");
49
- }
50
- if (!report.boundaries.can_send_external) {
51
- instructions.push("- Don't send external messages without approval");
52
- }
53
- if (!report.boundaries.can_spend) {
54
- instructions.push("- No spending without explicit approval");
55
- }
56
- instructions.push("");
57
- }
58
- // Build codex config
59
- const config = {
60
- model,
61
- approval_mode: report.boundaries?.can_commit ? "auto-edit" : "suggest",
62
- instructions_file: "AGENTS.md",
63
- };
64
- const files = {
65
- "AGENTS.md": instructions.join("\n"),
66
- "OPERATIONS.md": generateOperationalBrief(report, !!options.branch),
67
- ".codex/config.json": JSON.stringify(config, null, 2) + "\n",
68
- };
69
- return { files, workspacePath, agentId, agentName };
70
- }
71
- export function writeCodex(generated) {
72
- const written = [];
73
- for (const [name, content] of Object.entries(generated.files)) {
74
- const filePath = join(generated.workspacePath, name);
75
- mkdirSync(join(filePath, ".."), { recursive: true });
76
- if (existsSync(filePath))
77
- continue;
78
- writeFileSync(filePath, content, "utf-8");
79
- written.push(name);
80
- }
81
- return written;
82
- }
83
- //# sourceMappingURL=codex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/generators/codex.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- /**
2
- * Ollama generator — produces a Modelfile with system prompt from a TPS report.
3
- */
4
- import type { TPSReport } from "../schema/report.js";
5
- export interface GeneratedOllama {
6
- files: Record<string, string>;
7
- workspacePath: string;
8
- agentId: string;
9
- agentName: string;
10
- modelTag: string;
11
- }
12
- export declare function generateOllama(rawReport: TPSReport, options?: {
13
- name?: string;
14
- workspace?: string;
15
- baseModel?: string;
16
- }): GeneratedOllama;
17
- export declare function writeOllama(generated: GeneratedOllama): string[];
18
- //# sourceMappingURL=ollama.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../src/generators/ollama.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAMrD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,cAAc,CAC5B,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACtE,eAAe,CAqFjB;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,EAAE,CAUhE"}
@@ -1,97 +0,0 @@
1
- import { sanitizeTPSReport, sanitizeIdentifier } from "../schema/sanitizer.js";
2
- import { mkdirSync, writeFileSync, existsSync } from "node:fs";
3
- import { join } from "node:path";
4
- import { homedir } from "node:os";
5
- export function generateOllama(rawReport, options = {}) {
6
- const report = sanitizeTPSReport(rawReport);
7
- const agentName = options.name ? sanitizeIdentifier(options.name) : report.identity.default_name;
8
- const agentId = agentName.toLowerCase().replace(/\s+/g, "-").replace(/[^a-z0-9\-_]/g, "");
9
- if (!agentId) {
10
- throw new Error(`Agent name "${agentName}" produces an empty ID after sanitization.`);
11
- }
12
- const workspacePath = options.workspace || join(homedir(), "ollama-agents", agentId);
13
- const baseModel = options.baseModel || "llama3.1:8b";
14
- const modelTag = `tps-${agentId}`;
15
- // Build system prompt
16
- const systemPrompt = [
17
- `You are ${agentName}, a ${report.name}.`,
18
- "",
19
- report.description,
20
- "",
21
- `Personality: ${report.identity.personality}`,
22
- "",
23
- `Communication style: ${report.identity.communication_style}`,
24
- ];
25
- if (report.flair.length > 0) {
26
- systemPrompt.push("", "Your skills: " + report.flair.join(", ") + ".");
27
- }
28
- if (report.boundaries) {
29
- const rules = [];
30
- if (!report.boundaries.can_commit)
31
- rules.push("ask before committing code");
32
- if (!report.boundaries.can_send_external)
33
- rules.push("don't send external messages without approval");
34
- if (!report.boundaries.can_spend)
35
- rules.push("no spending without explicit approval");
36
- if (rules.length > 0) {
37
- systemPrompt.push("", "Rules: " + rules.join("; ") + ".");
38
- }
39
- }
40
- // Build Modelfile
41
- const modelfile = [
42
- `FROM ${baseModel}`,
43
- "",
44
- `SYSTEM """`,
45
- ...systemPrompt,
46
- `"""`,
47
- "",
48
- "# Temperature and parameters",
49
- "PARAMETER temperature 0.7",
50
- "PARAMETER top_p 0.9",
51
- "",
52
- `# Created by TPS for agent: ${agentName}`,
53
- `# Base model: ${baseModel}`,
54
- `# To create: ollama create ${modelTag} -f Modelfile`,
55
- `# To run: ollama run ${modelTag}`,
56
- "",
57
- ].join("\n");
58
- // Also generate a README for the agent
59
- const readme = [
60
- `# ${agentName} (Ollama)`,
61
- "",
62
- `**Role:** ${report.name}`,
63
- `**Base model:** ${baseModel}`,
64
- `**Model tag:** ${modelTag}`,
65
- "",
66
- "## Quick Start",
67
- "",
68
- "```bash",
69
- `cd ${workspacePath}`,
70
- `ollama create ${modelTag} -f Modelfile`,
71
- `ollama run ${modelTag}`,
72
- "```",
73
- "",
74
- "## System Prompt",
75
- "",
76
- systemPrompt.join("\n"),
77
- "",
78
- ].join("\n");
79
- const files = {
80
- "Modelfile": modelfile,
81
- "README.md": readme,
82
- };
83
- return { files, workspacePath, agentId, agentName, modelTag };
84
- }
85
- export function writeOllama(generated) {
86
- const written = [];
87
- for (const [name, content] of Object.entries(generated.files)) {
88
- const filePath = join(generated.workspacePath, name);
89
- mkdirSync(join(filePath, ".."), { recursive: true });
90
- if (existsSync(filePath))
91
- continue;
92
- writeFileSync(filePath, content, "utf-8");
93
- written.push(name);
94
- }
95
- return written;
96
- }
97
- //# sourceMappingURL=ollama.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../../src/generators/ollama.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import type { TPSReport } from "../schema/report.js";
2
- export interface GeneratedWorkspace {
3
- files: Record<string, string>;
4
- config: Record<string, unknown>;
5
- workspacePath: string;
6
- }
7
- export declare function generateWorkspace(rawReport: TPSReport, options?: {
8
- name?: string;
9
- workspace?: string;
10
- branch?: boolean;
11
- agentDir?: string;
12
- isManager?: boolean;
13
- }): GeneratedWorkspace;
14
- export declare function writeWorkspace(generated: GeneratedWorkspace): string[];
15
- //# sourceMappingURL=openclaw.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../../src/generators/openclaw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAmCrD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GAC5G,kBAAkB,CA6FpB;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAStE"}
@@ -1,107 +0,0 @@
1
- import { sanitizeTPSReport, sanitizeIdentifier } from "../schema/sanitizer.js";
2
- import Handlebars from "handlebars";
3
- import { readFileSync, mkdirSync, writeFileSync, existsSync } from "node:fs";
4
- import { join, dirname, resolve } from "node:path";
5
- import { homedir } from "node:os";
6
- import { fileURLToPath } from "node:url";
7
- const __dirname = dirname(fileURLToPath(import.meta.url));
8
- // In dist, templates are at dist/src/templates; in dev, at src/templates
9
- function findTemplatesDir() {
10
- const candidates = [
11
- join(__dirname, "..", "templates"), // dist/src/generators -> dist/src/templates
12
- join(__dirname, "..", "..", "src", "templates"), // dist/src/generators -> src/templates
13
- join(__dirname, "..", "..", "..", "src", "templates"), // deeper nesting
14
- ];
15
- for (const c of candidates) {
16
- if (existsSync(join(c, "SOUL.md.hbs")))
17
- return c;
18
- }
19
- throw new Error("PC Load Letter? Can't find templates directory.");
20
- }
21
- function loadTemplate(name) {
22
- const dir = findTemplatesDir();
23
- const raw = readFileSync(join(dir, name), "utf-8");
24
- return Handlebars.compile(raw);
25
- }
26
- import { generateOperationalBrief } from "./brief.js";
27
- // ... previous helper functions ...
28
- Handlebars.registerHelper("json", (ctx) => JSON.stringify(ctx, null, 2));
29
- export function generateWorkspace(rawReport, options = {}) {
30
- // ops-12.2: Sanitize input report before use
31
- const report = sanitizeTPSReport(rawReport);
32
- // If name provided via options, sanitize it too as an identifier
33
- const agentName = options.name ? sanitizeIdentifier(options.name) : report.identity.default_name;
34
- // S1.6: Sanitize the agent ID — strip any character that isn't [a-z0-9-_].
35
- // This prevents path traversal via crafted report names (e.g., "../../.ssh/").
36
- // The sanitization happens here so it applies whether workspace is explicit or derived.
37
- const rawId = agentName.toLowerCase().replace(/\s+/g, "-");
38
- const agentId = rawId.replace(/[^a-z0-9\-_]/g, "");
39
- if (!agentId) {
40
- throw new Error(`Agent name "${agentName}" produces an empty ID after sanitization. ` +
41
- `Use only letters, numbers, hyphens, and underscores.`);
42
- }
43
- const workspacePath = options.workspace ||
44
- (options.branch
45
- ? join(process.env.HOME || homedir(), ".tps", "branch-office", agentId, "workspace")
46
- : join(process.env.HOME || homedir(), ".openclaw", `workspace-${agentId}`));
47
- // Guard: verify the resolved workspace path stays within the selected boundary.
48
- if (!options.workspace) {
49
- const boundary = options.branch
50
- ? resolve((process.env.HOME || homedir()) + "/.tps/branch-office")
51
- : resolve((process.env.HOME || homedir()) + "/.openclaw");
52
- const resolved = resolve(workspacePath);
53
- if (!resolved.startsWith(boundary + "/")) {
54
- throw new Error(`Workspace path escapes ${boundary}: ${workspacePath} → ${resolved}`);
55
- }
56
- }
57
- const agentDir = options.agentDir || (options.branch
58
- ? join(process.env.HOME || "~", ".tps", "branch-office", agentId, "agent")
59
- : join(process.env.HOME || "~", ".openclaw", "agents", agentId, "agent"));
60
- const templateData = {
61
- ...report,
62
- agentName,
63
- agentId,
64
- workspacePath,
65
- };
66
- const templates = [
67
- options.isManager ? "MANAGER_SOUL.md.hbs" : "SOUL.md.hbs",
68
- "IDENTITY.md.hbs",
69
- "AGENTS.md.hbs",
70
- "USER.md.hbs",
71
- "TOOLS.md.hbs",
72
- "HEARTBEAT.md.hbs",
73
- "package.json.hbs",
74
- "package-lock.json.hbs",
75
- ];
76
- const files = {};
77
- for (const t of templates) {
78
- const outName = t.replace("MANAGER_", "").replace(".hbs", "");
79
- const tmpl = loadTemplate(t);
80
- files[outName] = tmpl(templateData);
81
- }
82
- // Inject OPERATIONS.md brief
83
- files["OPERATIONS.md"] = generateOperationalBrief(report, !!options.branch);
84
- // Generate config matching actual OpenClaw agent schema
85
- const config = {
86
- id: agentId,
87
- name: agentName,
88
- workspace: workspacePath,
89
- agentDir,
90
- };
91
- // Only include thinking if non-default
92
- if (report.openclaw.thinking && report.openclaw.thinking !== "off") {
93
- config.thinking = report.openclaw.thinking;
94
- }
95
- return { files, config, workspacePath };
96
- }
97
- export function writeWorkspace(generated) {
98
- mkdirSync(generated.workspacePath, { recursive: true });
99
- const written = [];
100
- for (const [name, content] of Object.entries(generated.files)) {
101
- const filePath = join(generated.workspacePath, name);
102
- writeFileSync(filePath, content, "utf-8");
103
- written.push(name);
104
- }
105
- return written;
106
- }
107
- //# sourceMappingURL=openclaw.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openclaw.js","sourceRoot":"","sources":["../../../src/generators/openclaw.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- /**
2
- * Generator registry — unified interface for all runtime generators.
3
- * Hire calls the registry instead of if/else chains.
4
- */
5
- import type { TPSReport } from "../schema/report.js";
6
- export type Runtime = "openclaw" | "claude-code" | "ollama" | "codex";
7
- export interface GeneratorResult {
8
- /** Files that were generated (name → content) */
9
- files: Record<string, string>;
10
- /** Where the workspace lives */
11
- workspacePath: string;
12
- /** Sanitized agent ID */
13
- agentId: string;
14
- /** Display name */
15
- agentName: string;
16
- /** OpenClaw config entry (only for openclaw runtime) */
17
- openclawConfig?: Record<string, unknown>;
18
- /** Ollama model tag (only for ollama runtime) */
19
- modelTag?: string;
20
- /** Next steps hint for the user */
21
- nextSteps: string[];
22
- }
23
- export interface GeneratorOptions {
24
- name?: string;
25
- workspace?: string;
26
- branch?: boolean;
27
- baseModel?: string;
28
- }
29
- interface Generator {
30
- generate(report: TPSReport, options: GeneratorOptions): GeneratorResult;
31
- write(result: GeneratorResult): void;
32
- }
33
- export declare function getGenerator(runtime: Runtime): Generator;
34
- export declare const VALID_RUNTIMES: Runtime[];
35
- export {};
36
- //# sourceMappingURL=registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/generators/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAMrD,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtE,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,SAAS;IACjB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAAC;IACxE,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;CACtC;AA6FD,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAMxD;AAED,eAAO,MAAM,cAAc,EAA8B,OAAO,EAAE,CAAC"}
@@ -1,99 +0,0 @@
1
- import { generateWorkspace, writeWorkspace } from "./openclaw.js";
2
- import { generateClaudeCode, writeClaudeCode } from "./claude-code.js";
3
- import { generateOllama, writeOllama } from "./ollama.js";
4
- import { generateCodex, writeCodex } from "./codex.js";
5
- function makeOpenClawGenerator() {
6
- return {
7
- generate(report, options) {
8
- const gen = generateWorkspace(report, options);
9
- return {
10
- files: gen.files,
11
- workspacePath: gen.workspacePath,
12
- agentId: String(gen.config.id),
13
- agentName: String(gen.config.name || gen.config.id),
14
- openclawConfig: gen.config,
15
- nextSteps: ["openclaw gateway restart"],
16
- };
17
- },
18
- write(result) {
19
- // writeWorkspace expects the original GeneratedWorkspace shape
20
- // We reconstruct it from the result
21
- writeWorkspace({
22
- files: result.files,
23
- workspacePath: result.workspacePath,
24
- config: result.openclawConfig,
25
- });
26
- },
27
- };
28
- }
29
- function makeClaudeCodeGenerator() {
30
- return {
31
- generate(report, options) {
32
- const gen = generateClaudeCode(report, options);
33
- return {
34
- files: gen.files,
35
- workspacePath: gen.workspacePath,
36
- agentId: gen.agentId,
37
- agentName: gen.agentName,
38
- nextSteps: [`cd ${gen.workspacePath}`, "claude"],
39
- };
40
- },
41
- write(result) {
42
- writeClaudeCode({ files: result.files, workspacePath: result.workspacePath, agentId: result.agentId, agentName: result.agentName });
43
- },
44
- };
45
- }
46
- function makeOllamaGenerator() {
47
- return {
48
- generate(report, options) {
49
- const gen = generateOllama(report, options);
50
- return {
51
- files: gen.files,
52
- workspacePath: gen.workspacePath,
53
- agentId: gen.agentId,
54
- agentName: gen.agentName,
55
- modelTag: gen.modelTag,
56
- nextSteps: [
57
- `cd ${gen.workspacePath}`,
58
- `ollama create ${gen.modelTag} -f Modelfile`,
59
- `ollama run ${gen.modelTag}`,
60
- ],
61
- };
62
- },
63
- write(result) {
64
- writeOllama({ files: result.files, workspacePath: result.workspacePath, agentId: result.agentId, agentName: result.agentName, modelTag: result.modelTag });
65
- },
66
- };
67
- }
68
- function makeCodexGenerator() {
69
- return {
70
- generate(report, options) {
71
- const gen = generateCodex(report, options);
72
- return {
73
- files: gen.files,
74
- workspacePath: gen.workspacePath,
75
- agentId: gen.agentId,
76
- agentName: gen.agentName,
77
- nextSteps: [`cd ${gen.workspacePath}`, "codex"],
78
- };
79
- },
80
- write(result) {
81
- writeCodex({ files: result.files, workspacePath: result.workspacePath, agentId: result.agentId, agentName: result.agentName });
82
- },
83
- };
84
- }
85
- const generators = {
86
- "openclaw": makeOpenClawGenerator(),
87
- "claude-code": makeClaudeCodeGenerator(),
88
- "ollama": makeOllamaGenerator(),
89
- "codex": makeCodexGenerator(),
90
- };
91
- export function getGenerator(runtime) {
92
- const gen = generators[runtime];
93
- if (!gen) {
94
- throw new Error(`Unknown runtime: ${runtime}. Valid: ${Object.keys(generators).join(", ")}`);
95
- }
96
- return gen;
97
- }
98
- export const VALID_RUNTIMES = Object.keys(generators);
99
- //# sourceMappingURL=registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/generators/registry.ts"],"names":[],"mappings":"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"}