@powerhousedao/ph-clint-cli 0.1.0-dev.4 → 0.1.0-dev.41

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 (90) hide show
  1. package/dist/cli.js +51 -12
  2. package/dist/codegen/actions.d.ts +42 -0
  3. package/dist/codegen/actions.js +387 -0
  4. package/dist/codegen/builders/agent-ts.d.ts +4 -4
  5. package/dist/codegen/builders/agent-ts.js +83 -2
  6. package/dist/codegen/builders/app-index-ts.d.ts +3 -10
  7. package/dist/codegen/builders/app-index-ts.js +10 -14
  8. package/dist/codegen/builders/cli-package-json.js +62 -8
  9. package/dist/codegen/builders/cli-ts.js +61 -24
  10. package/dist/codegen/builders/config-ts.js +11 -15
  11. package/dist/codegen/builders/demo-agent-ts.d.ts +8 -0
  12. package/dist/codegen/builders/demo-agent-ts.js +44 -0
  13. package/dist/codegen/builders/eslint-config-js.d.ts +1 -1
  14. package/dist/codegen/builders/eslint-config-js.js +7 -4
  15. package/dist/codegen/builders/framework-gen-ts.d.ts +4 -5
  16. package/dist/codegen/builders/framework-gen-ts.js +21 -18
  17. package/dist/codegen/builders/framework-ts.js +33 -7
  18. package/dist/codegen/builders/index.d.ts +10 -1
  19. package/dist/codegen/builders/index.js +30 -5
  20. package/dist/codegen/builders/manifest-json.d.ts +6 -0
  21. package/dist/codegen/builders/manifest-json.js +31 -0
  22. package/dist/codegen/builders/mastra-index-ts.d.ts +3 -0
  23. package/dist/codegen/builders/mastra-index-ts.js +47 -5
  24. package/dist/codegen/builders/publish-config-js.d.ts +8 -0
  25. package/dist/codegen/builders/publish-config-js.js +32 -0
  26. package/dist/codegen/builders/publish-config-ts.d.ts +8 -0
  27. package/dist/codegen/builders/publish-config-ts.js +32 -0
  28. package/dist/codegen/builders/readme-md.js +7 -6
  29. package/dist/codegen/builders/root-package-json.d.ts +3 -0
  30. package/dist/codegen/builders/root-package-json.js +23 -11
  31. package/dist/codegen/builders/smoke-test-ts.d.ts +2 -0
  32. package/dist/codegen/builders/smoke-test-ts.js +15 -0
  33. package/dist/codegen/generated.d.ts +17 -0
  34. package/dist/codegen/generated.js +49 -0
  35. package/dist/codegen/index.d.ts +3 -0
  36. package/dist/codegen/index.js +139 -14
  37. package/dist/codegen/scaffold.d.ts +31 -3
  38. package/dist/codegen/scaffold.js +114 -16
  39. package/dist/commands/clint-project-build.js +10 -27
  40. package/dist/commands/clint-project-init.d.ts +30 -8
  41. package/dist/commands/clint-project-init.js +45 -41
  42. package/dist/commands/clint-project-publish.d.ts +1 -0
  43. package/dist/commands/clint-project-publish.js +5 -3
  44. package/dist/commands/clint-project-regen.js +25 -1
  45. package/dist/commands/clint-skills-sync.d.ts +10 -0
  46. package/dist/commands/clint-skills-sync.js +56 -0
  47. package/dist/config.d.ts +3 -5
  48. package/dist/config.js +5 -7
  49. package/dist/framework.d.ts +5 -169
  50. package/dist/framework.gen.d.ts +1 -32
  51. package/dist/framework.js +0 -4
  52. package/{prompts/agent-profiles/AgentBase.md → dist/gen/agent-profiles/PhClintDevAgent.md} +1 -1
  53. package/dist/gen/skills/cli-setup/.cli-docs.md +135 -0
  54. package/dist/gen/skills/cli-setup/SKILL.md +125 -0
  55. package/dist/gen/skills/cli-setup/references/00.assess-cli-needs.md +53 -0
  56. package/dist/gen/skills/cli-setup/references/01.define-config-schema.md +78 -0
  57. package/dist/gen/skills/cli-setup/references/02.wire-cli.md +141 -0
  58. package/dist/gen/skills/cli-setup/references/03.add-entrypoint.md +128 -0
  59. package/dist/gen/skills/cli-setup/references/expected-outcome.md +3 -0
  60. package/dist/gen/skills/command-definition/.cli-docs.md +84 -0
  61. package/dist/gen/skills/command-definition/SKILL.md +99 -0
  62. package/dist/gen/skills/command-definition/references/00.assess-requirements.md +58 -0
  63. package/dist/gen/skills/command-definition/references/01.define-schema.md +72 -0
  64. package/dist/gen/skills/command-definition/references/02.implement-execute.md +118 -0
  65. package/dist/gen/skills/command-definition/references/03.add-prompting.md +54 -0
  66. package/dist/gen/skills/command-definition/references/expected-outcome.md +3 -0
  67. package/dist/gen/skills/service-definition/.cli-docs.md +214 -0
  68. package/dist/gen/skills/service-definition/SKILL.md +148 -0
  69. package/dist/gen/skills/service-definition/references/00.assess-service.md +69 -0
  70. package/dist/gen/skills/service-definition/references/01.define-service.md +166 -0
  71. package/dist/gen/skills/service-definition/references/02.add-preflight.md +132 -0
  72. package/dist/gen/skills/service-definition/references/03.add-project-scanner.md +82 -0
  73. package/dist/gen/skills/service-definition/references/04.wire-events.md +120 -0
  74. package/dist/gen/skills/service-definition/references/expected-outcome.md +3 -0
  75. package/dist/services/clint-project.js +21 -0
  76. package/dist/skills/sync.d.ts +40 -0
  77. package/dist/skills/sync.js +119 -0
  78. package/dist/spec/ensure-document.d.ts +17 -0
  79. package/dist/spec/ensure-document.js +62 -0
  80. package/dist/spec/from-document.d.ts +4 -1
  81. package/dist/spec/from-document.js +18 -8
  82. package/dist/spec/types.d.ts +85 -6
  83. package/dist/spec/types.js +90 -23
  84. package/dist/triggers/publish-trigger.d.ts +10 -0
  85. package/dist/triggers/publish-trigger.js +169 -0
  86. package/dist/triggers/spec-change.d.ts +5 -34
  87. package/dist/triggers/spec-change.js +130 -102
  88. package/package.json +7 -7
  89. package/prompts/skills-ext/.gitkeep +0 -0
  90. package/prompts/skills-tpl/.gitkeep +0 -0
@@ -2,12 +2,12 @@
2
2
  * `ph-clint clint-project-init` — the project bootstrap wizard.
3
3
  *
4
4
  * Behavior:
5
- * 1. Resolve target dir (positional `dir`, defaults to cwd).
5
+ * 1. Resolve target dir (positional `dir`, defaults to the project name).
6
6
  * 2. Assert it is empty (or `--force`).
7
7
  * 3. Collect project identity + feature toggles (prompt for missing).
8
8
  * 4. Assemble a ClintProjectSpec and validate with Zod.
9
9
  * 5. Write the spec + emit the generated tree via `generateProject`.
10
- * 6. (Split layout) run `ph init` in `{name}-app/` unless `--skip-ph-init`.
10
+ * 6. (Split layout) run `ph init` in `{name}-app/`.
11
11
  * 7. Run `pnpm install` in generated sub-projects unless `--skip-install`.
12
12
  * 8. Print next-steps guidance.
13
13
  */
@@ -17,12 +17,13 @@ import { z } from 'zod';
17
17
  import { clintProjectSpecSchema, } from '../spec/types.js';
18
18
  import { generateProject } from '../codegen/index.js';
19
19
  import { isDirEmptyEnough } from '../codegen/write.js';
20
- import { runPhInit, runPnpmInstall } from '../codegen/scaffold.js';
20
+ import { runPostGenActions } from '../codegen/actions.js';
21
+ import { ensureSpecDocument } from '../spec/ensure-document.js';
21
22
  const inputSchema = z.object({
22
23
  dir: z
23
24
  .string()
24
25
  .optional()
25
- .describe('Target directory (defaults to the current directory)'),
26
+ .describe('Target directory (defaults to the project name)'),
26
27
  name: z
27
28
  .string()
28
29
  .describe('Project name — bare, or `@scope/name`. Lowercase letters, digits, hyphens.'),
@@ -43,10 +44,6 @@ const inputSchema = z.object({
43
44
  .boolean()
44
45
  .default(false)
45
46
  .describe('Overwrite files if the target directory is not empty'),
46
- skipPhInit: z
47
- .boolean()
48
- .default(false)
49
- .describe('Do not run `ph init` in the app folder after scaffolding'),
50
47
  skipInstall: z
51
48
  .boolean()
52
49
  .default(false)
@@ -70,13 +67,22 @@ export function buildSpec(input) {
70
67
  // Routine is forced on when Mastra is on — the REPL-only path works, but
71
68
  // the agent routine loop is what most users actually want.
72
69
  const routine = input.enableRoutine || input.enableMastra;
70
+ const mastra = input.enableMastra
71
+ ? {
72
+ enabled: true,
73
+ agentId: `${name}-agent`,
74
+ agentName: `${name.charAt(0).toUpperCase()}${name.slice(1).replace(/-(\w)/g, (_, c) => ' ' + c.toUpperCase())} Agent`,
75
+ models: [{ id: 'anthropic/claude-sonnet-4-5', isDefault: true }],
76
+ profiles: [{ id: 'base', title: 'Base', content: 'You are a helpful assistant.' }],
77
+ }
78
+ : { enabled: false };
73
79
  const candidate = {
74
80
  name,
75
81
  scope,
76
82
  description: input.description ?? '',
77
83
  features: {
78
- powerhouse: { enabled: input.enablePowerhouse },
79
- mastra: { enabled: input.enableMastra },
84
+ powerhouse: input.enablePowerhouse ? 'Connect' : 'Disabled',
85
+ mastra,
80
86
  routine: { enabled: routine },
81
87
  },
82
88
  };
@@ -90,8 +96,9 @@ export const init = defineCommand({
90
96
  promptForDefaults: true,
91
97
  promptOptional: ['description'],
92
98
  },
93
- execute: async (input, { workdir, stdout }) => {
94
- const targetDir = path.resolve(workdir, input.dir ?? '.');
99
+ execute: async (input, { workdir, stdout, reactor: getReactor, folders, runProcess }) => {
100
+ const { name: bareName } = splitPackageName(input.name);
101
+ const targetDir = path.resolve(workdir, input.dir ?? bareName);
95
102
  if (!input.force) {
96
103
  const empty = await isDirEmptyEnough(targetDir);
97
104
  if (!empty) {
@@ -109,44 +116,41 @@ export const init = defineCommand({
109
116
  allowNonEmpty: input.force,
110
117
  });
111
118
  stdout(`Generated ${result.files.length} files in ${targetDir}\n`);
112
- const split = spec.features.powerhouse.enabled;
113
- // Reactor package scaffolding (split layout only).
114
- if (split && result.appDir && !input.skipPhInit) {
115
- const phResult = await runPhInit({
116
- targetDir,
117
- appDir: result.appDir,
118
- spec,
119
- log: (msg) => stdout(msg + '\n'),
120
- });
121
- if (!phResult.ran) {
122
- stdout(`Note: \`ph init\` did not run — ${phResult.reason ?? 'see above'}.\n`);
123
- }
124
- }
125
- // Dependency installation.
126
- if (!input.skipInstall) {
127
- const dirs = [];
128
- if (split) {
129
- if (result.appDir)
130
- dirs.push(result.appDir);
131
- dirs.push(result.cliDir);
119
+ // Create spec document in personal drive (if reactor available)
120
+ if (getReactor && folders) {
121
+ try {
122
+ const reactor = await getReactor();
123
+ if (reactor) {
124
+ const { docId } = await ensureSpecDocument({
125
+ spec, targetDir, reactor, folders,
126
+ });
127
+ stdout(`Created spec document ${docId} in Clint Folders/specs/${spec.name}\n`);
128
+ }
132
129
  }
133
- else {
134
- dirs.push(targetDir);
130
+ catch (err) {
131
+ // Non-fatal — trigger will pick it up on next startup
132
+ stdout(`Note: could not create spec document — ${err instanceof Error ? err.message : String(err)}\n`);
135
133
  }
136
- await runPnpmInstall({
137
- dirs,
138
- log: (msg) => stdout(msg + '\n'),
139
- });
140
134
  }
135
+ // Run post-generation actions (ph-init, install, build, skills-sync).
136
+ // Only skip cli-install — in split layout, ph-init handles app install
137
+ // internally, and app-build must still run so the CLI can link to it.
138
+ const skip = new Set();
139
+ if (input.skipInstall) {
140
+ skip.add('cli-install');
141
+ }
142
+ await runPostGenActions(result.pendingActions, {
143
+ log: (msg) => stdout(msg + '\n'),
144
+ runProcess,
145
+ skip,
146
+ });
147
+ const split = spec.features.powerhouse !== 'Disabled';
141
148
  const next = [];
142
149
  next.push('');
143
150
  next.push('Next steps:');
144
151
  const relDir = path.relative(workdir, targetDir) || '.';
145
152
  if (split) {
146
153
  next.push(` cd ${relDir}`);
147
- if (input.skipPhInit) {
148
- next.push(` cd ${spec.name}-app && ph init . && cd ..`);
149
- }
150
154
  if (input.skipInstall) {
151
155
  next.push(' pnpm install');
152
156
  }
@@ -8,6 +8,7 @@ export declare const clintProjectPublish: import("@powerhousedao/ph-clint").Comm
8
8
  dir: z.ZodOptional<z.ZodString>;
9
9
  dryRun: z.ZodDefault<z.ZodBoolean>;
10
10
  skipBuild: z.ZodDefault<z.ZodBoolean>;
11
+ skipGitCheck: z.ZodDefault<z.ZodBoolean>;
11
12
  verbose: z.ZodDefault<z.ZodBoolean>;
12
13
  }, z.core.$strip>, {
13
14
  text: string;
@@ -7,6 +7,7 @@ const inputSchema = z.object({
7
7
  dir: z.string().optional().describe('Project root directory'),
8
8
  dryRun: z.boolean().default(false).describe('Preview without publishing'),
9
9
  skipBuild: z.boolean().default(false),
10
+ skipGitCheck: z.boolean().default(false).describe('Skip git working tree check'),
10
11
  verbose: z.boolean().default(false),
11
12
  });
12
13
  function formatPlanPreview(plan) {
@@ -34,11 +35,12 @@ export const clintProjectPublish = defineCommand({
34
35
  logLines.push(msg);
35
36
  stdout(msg + '\n');
36
37
  };
37
- // 1. Resolve plan
38
+ // 1. Resolve plan — discover config from the target dir, not process.cwd().
39
+ const configFile = path.join(dir, 'publish.config.js');
38
40
  const plan = await resolvePublishPlan({
39
41
  tag: input.tag,
40
- configPath: undefined, // auto-discover from dir
41
- skipGitCheck: input.dryRun,
42
+ configPath: configFile,
43
+ skipGitCheck: input.dryRun || input.skipGitCheck,
42
44
  log,
43
45
  });
44
46
  // 2. Show preview
@@ -11,6 +11,8 @@ import { defineCommand } from '@powerhousedao/ph-clint';
11
11
  import { z } from 'zod';
12
12
  import { readProjectSpec } from '../spec/file.js';
13
13
  import { generateProject } from '../codegen/index.js';
14
+ import { runPostGenActions } from '../codegen/actions.js';
15
+ import { ensureSpecDocument } from '../spec/ensure-document.js';
14
16
  const inputSchema = z.object({
15
17
  dir: z
16
18
  .string()
@@ -25,7 +27,7 @@ export const regen = defineCommand({
25
27
  id: 'clint-project-regen',
26
28
  description: 'Regenerate project files from the persisted spec',
27
29
  inputSchema,
28
- execute: async (input, { workdir, stdout, log }) => {
30
+ execute: async (input, { workdir, stdout, log, runProcess, reactor: getReactor, folders }) => {
29
31
  const targetDir = path.resolve(workdir, input.dir ?? '.');
30
32
  const spec = await readProjectSpec(targetDir);
31
33
  if (!spec) {
@@ -52,7 +54,29 @@ export const regen = defineCommand({
52
54
  else
53
55
  stdout('warning: ' + w + '\n');
54
56
  }
57
+ // Ensure spec document exists in drive (recover if deleted)
58
+ if (getReactor && folders) {
59
+ try {
60
+ const reactor = await getReactor();
61
+ if (reactor) {
62
+ const { docId, created } = await ensureSpecDocument({
63
+ spec, targetDir, reactor, folders,
64
+ });
65
+ if (created) {
66
+ lines.push(`Created spec document ${docId} in Clint Folders/specs/${spec.name}`);
67
+ }
68
+ }
69
+ }
70
+ catch (err) {
71
+ log?.warn(`Could not ensure spec document: ${err instanceof Error ? err.message : String(err)}`);
72
+ }
73
+ }
55
74
  stdout(lines.join('\n') + '\n');
75
+ // Run post-generation actions (install, build, skills-sync).
76
+ await runPostGenActions(result.pendingActions, {
77
+ log: (msg) => stdout(msg + '\n'),
78
+ runProcess,
79
+ });
56
80
  return {
57
81
  text: lines.join('\n'),
58
82
  data: {
@@ -0,0 +1,10 @@
1
+ import { z } from 'zod';
2
+ export declare const skillsSync: import("@powerhousedao/ph-clint").Command<z.ZodObject<{
3
+ dir: z.ZodOptional<z.ZodString>;
4
+ }, z.core.$strip>, {
5
+ text: string;
6
+ data?: undefined;
7
+ } | {
8
+ text: string;
9
+ data: import("../skills/sync.js").SyncResult;
10
+ }, Record<string, unknown>>;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * `ph-clint clint-skills-sync` — reconcile external skills on disk to match
3
+ * the project spec. Clones missing skills from GitHub, removes skills no
4
+ * longer referenced, and updates `.skills-manifest.json`.
5
+ */
6
+ import path from 'node:path';
7
+ import { defineCommand } from '@powerhousedao/ph-clint';
8
+ import { z } from 'zod';
9
+ import { readProjectSpec } from '../spec/file.js';
10
+ import { syncExternalSkills } from '../skills/sync.js';
11
+ const inputSchema = z.object({
12
+ dir: z
13
+ .string()
14
+ .optional()
15
+ .describe('Project directory (defaults to the current directory)'),
16
+ });
17
+ export const skillsSync = defineCommand({
18
+ id: 'clint-skills-sync',
19
+ description: 'Synchronise external skills from the project spec',
20
+ inputSchema,
21
+ execute: async (input, { workdir, stdout, log }) => {
22
+ const targetDir = path.resolve(workdir, input.dir ?? '.');
23
+ const spec = await readProjectSpec(targetDir);
24
+ if (!spec) {
25
+ return {
26
+ text: `Error: no spec found at ${targetDir}/.ph/ph-clint-cli/project-spec.json.\n` +
27
+ 'Run `ph-clint clint-project-init` first to scaffold a new project.',
28
+ };
29
+ }
30
+ const result = await syncExternalSkills({
31
+ targetDir,
32
+ desired: spec.externalSkills,
33
+ log: (msg) => {
34
+ if (log)
35
+ log.info(msg);
36
+ else
37
+ stdout(msg + '\n');
38
+ },
39
+ });
40
+ const lines = [];
41
+ if (result.added.length > 0) {
42
+ lines.push(`Added: ${result.added.join(', ')}`);
43
+ }
44
+ if (result.removed.length > 0) {
45
+ lines.push(`Removed: ${result.removed.join(', ')}`);
46
+ }
47
+ if (result.added.length === 0 && result.removed.length === 0) {
48
+ lines.push('External skills are up to date.');
49
+ }
50
+ stdout(lines.join('\n') + '\n');
51
+ return {
52
+ text: lines.join('\n'),
53
+ data: result,
54
+ };
55
+ },
56
+ });
package/dist/config.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- /** CLI name — used for config resolution, env var prefixing, and .ph/ paths. */
2
- export declare const CLI_NAME = "ph-clint";
3
- export declare const CLI_VERSION = "0.0.0";
4
- /** Project root — resolved from this file's location. */
5
- export declare const PROJECT_ROOT: string;
1
+ export declare const CLI_ROOT: string;
2
+ export declare const CLI_NAME: string;
3
+ export declare const CLI_VERSION: string;
package/dist/config.js CHANGED
@@ -1,7 +1,5 @@
1
- import path from 'node:path';
2
- import { fileURLToPath } from 'node:url';
3
- /** CLI name — used for config resolution, env var prefixing, and .ph/ paths. */
4
- export const CLI_NAME = 'ph-clint';
5
- export const CLI_VERSION = '0.0.0';
6
- /** Project root — resolved from this file's location. */
7
- export const PROJECT_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
1
+ import { readPackageInfo } from '@powerhousedao/ph-clint';
2
+ const pkg = readPackageInfo(import.meta.url);
3
+ export const CLI_ROOT = pkg.root;
4
+ export const CLI_NAME = pkg.name.replace(/-cli$/, '');
5
+ export const CLI_VERSION = pkg.version;
@@ -14,7 +14,6 @@ export declare const configSchema: z.ZodObject<{
14
14
  model: z.ZodDefault<z.ZodString>;
15
15
  devServicePort: z.ZodDefault<z.ZodNumber>;
16
16
  phVersion: z.ZodDefault<z.ZodString>;
17
- projectDocumentId: z.ZodOptional<z.ZodString>;
18
17
  }, z.core.$strip>;
19
18
  export declare const secretsSchema: z.ZodObject<{
20
19
  apiKey: z.ZodOptional<z.ZodString>;
@@ -30,210 +29,47 @@ export declare const defineCommand: <TInput extends z.ZodType, TOutput = unknown
30
29
  model: string;
31
30
  devServicePort: number;
32
31
  phVersion: string;
33
- projectDocumentId?: string | undefined;
34
32
  apiKey?: string | undefined;
35
- }, import("@powerhousedao/ph-clint").InferRegistry<readonly [{
36
- readonly version: 1;
37
- readonly reducer: import("document-model").Reducer<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
38
- readonly actions: {
39
- enableRoutine: (input: import("@powerhousedao/ph-clint-app").EnableRoutineInput) => import("@powerhousedao/ph-clint-app").EnableRoutineAction;
40
- disableRoutine: (input: import("@powerhousedao/ph-clint-app").DisableRoutineInput) => import("@powerhousedao/ph-clint-app").DisableRoutineAction;
41
- enableMastra: (input: import("@powerhousedao/ph-clint-app").EnableMastraInput) => import("@powerhousedao/ph-clint-app").EnableMastraAction;
42
- disableMastra: (input: import("@powerhousedao/ph-clint-app").DisableMastraInput) => import("@powerhousedao/ph-clint-app").DisableMastraAction;
43
- enablePowerhouse: (input: import("@powerhousedao/ph-clint-app").EnablePowerhouseInput) => import("@powerhousedao/ph-clint-app").EnablePowerhouseAction;
44
- setPowerhouseSwitchboard: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardAction;
45
- setPowerhouseConnect: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseConnectInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseConnectAction;
46
- setPackageName: (input: import("@powerhousedao/ph-clint-app").SetPackageNameInput) => import("@powerhousedao/ph-clint-app").SetPackageNameAction;
47
- clearBin: (input: import("@powerhousedao/ph-clint-app").ClearBinInput) => import("@powerhousedao/ph-clint-app").ClearBinAction;
48
- setBin: (input: import("@powerhousedao/ph-clint-app").SetBinInput) => import("@powerhousedao/ph-clint-app").SetBinAction;
49
- setDescription: (input: import("@powerhousedao/ph-clint-app").SetDescriptionInput) => import("@powerhousedao/ph-clint-app").SetDescriptionAction;
50
- setVersion: (input: import("@powerhousedao/ph-clint-app").SetVersionInput) => import("@powerhousedao/ph-clint-app").SetVersionAction;
51
- clearScope: (input: import("@powerhousedao/ph-clint-app").ClearScopeInput) => import("@powerhousedao/ph-clint-app").ClearScopeAction;
52
- setScope: (input: import("@powerhousedao/ph-clint-app").SetScopeInput) => import("@powerhousedao/ph-clint-app").SetScopeAction;
53
- setName: (name: string | {
54
- name: string;
55
- }) => import("document-model").SetNameAction;
56
- undo: (count?: number, scope?: string) => import("document-model").UndoAction;
57
- redo: (count?: number, scope?: string) => import("document-model").RedoAction;
58
- prune: (start?: number, end?: number, scope?: string) => import("document-model").SchemaPruneAction;
59
- loadState: <TState extends import("document-model").PHBaseState = import("document-model").PHBaseState>(state: TState & {
60
- name: string;
61
- }, operations: number) => import("document-model").LoadStateAction;
62
- noop: (scope?: string) => import("document-model").NOOPAction;
63
- };
64
- readonly utils: import("document-model").DocumentModelUtils<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
65
- readonly documentModel: import("document-model").DocumentModelPHState;
66
- }]>>) => Promise<TOutput>;
33
+ }, import("@powerhousedao/ph-clint").InferRegistry<readonly [import("document-model").DocumentModelModule<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>]>>) => Promise<TOutput>;
67
34
  }) => import("@powerhousedao/ph-clint").Command<TInput, TOutput, {
68
35
  model: string;
69
36
  devServicePort: number;
70
37
  phVersion: string;
71
- projectDocumentId?: string | undefined;
72
38
  apiKey?: string | undefined;
73
39
  }>, defineTrigger: <TState = Record<string, unknown>>(options: import("@powerhousedao/ph-clint").TriggerOptions<TState, {
74
40
  model: string;
75
41
  devServicePort: number;
76
42
  phVersion: string;
77
- projectDocumentId?: string | undefined;
78
43
  apiKey?: string | undefined;
79
- }, import("@powerhousedao/ph-clint").InferRegistry<readonly [{
80
- readonly version: 1;
81
- readonly reducer: import("document-model").Reducer<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
82
- readonly actions: {
83
- enableRoutine: (input: import("@powerhousedao/ph-clint-app").EnableRoutineInput) => import("@powerhousedao/ph-clint-app").EnableRoutineAction;
84
- disableRoutine: (input: import("@powerhousedao/ph-clint-app").DisableRoutineInput) => import("@powerhousedao/ph-clint-app").DisableRoutineAction;
85
- enableMastra: (input: import("@powerhousedao/ph-clint-app").EnableMastraInput) => import("@powerhousedao/ph-clint-app").EnableMastraAction;
86
- disableMastra: (input: import("@powerhousedao/ph-clint-app").DisableMastraInput) => import("@powerhousedao/ph-clint-app").DisableMastraAction;
87
- enablePowerhouse: (input: import("@powerhousedao/ph-clint-app").EnablePowerhouseInput) => import("@powerhousedao/ph-clint-app").EnablePowerhouseAction;
88
- setPowerhouseSwitchboard: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardAction;
89
- setPowerhouseConnect: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseConnectInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseConnectAction;
90
- setPackageName: (input: import("@powerhousedao/ph-clint-app").SetPackageNameInput) => import("@powerhousedao/ph-clint-app").SetPackageNameAction;
91
- clearBin: (input: import("@powerhousedao/ph-clint-app").ClearBinInput) => import("@powerhousedao/ph-clint-app").ClearBinAction;
92
- setBin: (input: import("@powerhousedao/ph-clint-app").SetBinInput) => import("@powerhousedao/ph-clint-app").SetBinAction;
93
- setDescription: (input: import("@powerhousedao/ph-clint-app").SetDescriptionInput) => import("@powerhousedao/ph-clint-app").SetDescriptionAction;
94
- setVersion: (input: import("@powerhousedao/ph-clint-app").SetVersionInput) => import("@powerhousedao/ph-clint-app").SetVersionAction;
95
- clearScope: (input: import("@powerhousedao/ph-clint-app").ClearScopeInput) => import("@powerhousedao/ph-clint-app").ClearScopeAction;
96
- setScope: (input: import("@powerhousedao/ph-clint-app").SetScopeInput) => import("@powerhousedao/ph-clint-app").SetScopeAction;
97
- setName: (name: string | {
98
- name: string;
99
- }) => import("document-model").SetNameAction;
100
- undo: (count?: number, scope?: string) => import("document-model").UndoAction;
101
- redo: (count?: number, scope?: string) => import("document-model").RedoAction;
102
- prune: (start?: number, end?: number, scope?: string) => import("document-model").SchemaPruneAction;
103
- loadState: <TState_1 extends import("document-model").PHBaseState = import("document-model").PHBaseState>(state: TState_1 & {
104
- name: string;
105
- }, operations: number) => import("document-model").LoadStateAction;
106
- noop: (scope?: string) => import("document-model").NOOPAction;
107
- };
108
- readonly utils: import("document-model").DocumentModelUtils<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
109
- readonly documentModel: import("document-model").DocumentModelPHState;
110
- }]>>) => import("@powerhousedao/ph-clint").Trigger<TState, {
44
+ }, import("@powerhousedao/ph-clint").InferRegistry<readonly [import("document-model").DocumentModelModule<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>]>>) => import("@powerhousedao/ph-clint").Trigger<TState, {
111
45
  model: string;
112
46
  devServicePort: number;
113
47
  phVersion: string;
114
- projectDocumentId?: string | undefined;
115
48
  apiKey?: string | undefined;
116
- }, import("@powerhousedao/ph-clint").InferRegistry<readonly [{
117
- readonly version: 1;
118
- readonly reducer: import("document-model").Reducer<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
119
- readonly actions: {
120
- enableRoutine: (input: import("@powerhousedao/ph-clint-app").EnableRoutineInput) => import("@powerhousedao/ph-clint-app").EnableRoutineAction;
121
- disableRoutine: (input: import("@powerhousedao/ph-clint-app").DisableRoutineInput) => import("@powerhousedao/ph-clint-app").DisableRoutineAction;
122
- enableMastra: (input: import("@powerhousedao/ph-clint-app").EnableMastraInput) => import("@powerhousedao/ph-clint-app").EnableMastraAction;
123
- disableMastra: (input: import("@powerhousedao/ph-clint-app").DisableMastraInput) => import("@powerhousedao/ph-clint-app").DisableMastraAction;
124
- enablePowerhouse: (input: import("@powerhousedao/ph-clint-app").EnablePowerhouseInput) => import("@powerhousedao/ph-clint-app").EnablePowerhouseAction;
125
- setPowerhouseSwitchboard: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardAction;
126
- setPowerhouseConnect: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseConnectInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseConnectAction;
127
- setPackageName: (input: import("@powerhousedao/ph-clint-app").SetPackageNameInput) => import("@powerhousedao/ph-clint-app").SetPackageNameAction;
128
- clearBin: (input: import("@powerhousedao/ph-clint-app").ClearBinInput) => import("@powerhousedao/ph-clint-app").ClearBinAction;
129
- setBin: (input: import("@powerhousedao/ph-clint-app").SetBinInput) => import("@powerhousedao/ph-clint-app").SetBinAction;
130
- setDescription: (input: import("@powerhousedao/ph-clint-app").SetDescriptionInput) => import("@powerhousedao/ph-clint-app").SetDescriptionAction;
131
- setVersion: (input: import("@powerhousedao/ph-clint-app").SetVersionInput) => import("@powerhousedao/ph-clint-app").SetVersionAction;
132
- clearScope: (input: import("@powerhousedao/ph-clint-app").ClearScopeInput) => import("@powerhousedao/ph-clint-app").ClearScopeAction;
133
- setScope: (input: import("@powerhousedao/ph-clint-app").SetScopeInput) => import("@powerhousedao/ph-clint-app").SetScopeAction;
134
- setName: (name: string | {
135
- name: string;
136
- }) => import("document-model").SetNameAction;
137
- undo: (count?: number, scope?: string) => import("document-model").UndoAction;
138
- redo: (count?: number, scope?: string) => import("document-model").RedoAction;
139
- prune: (start?: number, end?: number, scope?: string) => import("document-model").SchemaPruneAction;
140
- loadState: <TState_1 extends import("document-model").PHBaseState = import("document-model").PHBaseState>(state: TState_1 & {
141
- name: string;
142
- }, operations: number) => import("document-model").LoadStateAction;
143
- noop: (scope?: string) => import("document-model").NOOPAction;
144
- };
145
- readonly utils: import("document-model").DocumentModelUtils<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
146
- readonly documentModel: import("document-model").DocumentModelPHState;
147
- }]>>, defineService: (options: import("@powerhousedao/ph-clint").ServiceDefinition<{
49
+ }, import("@powerhousedao/ph-clint").InferRegistry<readonly [import("document-model").DocumentModelModule<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>]>>, defineService: (options: import("@powerhousedao/ph-clint").ServiceDefinition<{
148
50
  model: string;
149
51
  devServicePort: number;
150
52
  phVersion: string;
151
- projectDocumentId?: string | undefined;
152
53
  apiKey?: string | undefined;
153
54
  }>) => import("@powerhousedao/ph-clint").ServiceDefinition<{
154
55
  model: string;
155
56
  devServicePort: number;
156
57
  phVersion: string;
157
- projectDocumentId?: string | undefined;
158
58
  apiKey?: string | undefined;
159
59
  }>, createDocumentChangeTrigger: <T extends string, TState extends {
160
60
  pending: number;
161
61
  } = {
162
62
  pending: number;
163
- }>(options: import("@powerhousedao/ph-clint").DocumentChangeTriggerOptions<import("@powerhousedao/ph-clint").InferRegistry<readonly [{
164
- readonly version: 1;
165
- readonly reducer: import("document-model").Reducer<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
166
- readonly actions: {
167
- enableRoutine: (input: import("@powerhousedao/ph-clint-app").EnableRoutineInput) => import("@powerhousedao/ph-clint-app").EnableRoutineAction;
168
- disableRoutine: (input: import("@powerhousedao/ph-clint-app").DisableRoutineInput) => import("@powerhousedao/ph-clint-app").DisableRoutineAction;
169
- enableMastra: (input: import("@powerhousedao/ph-clint-app").EnableMastraInput) => import("@powerhousedao/ph-clint-app").EnableMastraAction;
170
- disableMastra: (input: import("@powerhousedao/ph-clint-app").DisableMastraInput) => import("@powerhousedao/ph-clint-app").DisableMastraAction;
171
- enablePowerhouse: (input: import("@powerhousedao/ph-clint-app").EnablePowerhouseInput) => import("@powerhousedao/ph-clint-app").EnablePowerhouseAction;
172
- setPowerhouseSwitchboard: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardAction;
173
- setPowerhouseConnect: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseConnectInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseConnectAction;
174
- setPackageName: (input: import("@powerhousedao/ph-clint-app").SetPackageNameInput) => import("@powerhousedao/ph-clint-app").SetPackageNameAction;
175
- clearBin: (input: import("@powerhousedao/ph-clint-app").ClearBinInput) => import("@powerhousedao/ph-clint-app").ClearBinAction;
176
- setBin: (input: import("@powerhousedao/ph-clint-app").SetBinInput) => import("@powerhousedao/ph-clint-app").SetBinAction;
177
- setDescription: (input: import("@powerhousedao/ph-clint-app").SetDescriptionInput) => import("@powerhousedao/ph-clint-app").SetDescriptionAction;
178
- setVersion: (input: import("@powerhousedao/ph-clint-app").SetVersionInput) => import("@powerhousedao/ph-clint-app").SetVersionAction;
179
- clearScope: (input: import("@powerhousedao/ph-clint-app").ClearScopeInput) => import("@powerhousedao/ph-clint-app").ClearScopeAction;
180
- setScope: (input: import("@powerhousedao/ph-clint-app").SetScopeInput) => import("@powerhousedao/ph-clint-app").SetScopeAction;
181
- setName: (name: string | {
182
- name: string;
183
- }) => import("document-model").SetNameAction;
184
- undo: (count?: number, scope?: string) => import("document-model").UndoAction;
185
- redo: (count?: number, scope?: string) => import("document-model").RedoAction;
186
- prune: (start?: number, end?: number, scope?: string) => import("document-model").SchemaPruneAction;
187
- loadState: <TState_1 extends import("document-model").PHBaseState = import("document-model").PHBaseState>(state: TState_1 & {
188
- name: string;
189
- }, operations: number) => import("document-model").LoadStateAction;
190
- noop: (scope?: string) => import("document-model").NOOPAction;
191
- };
192
- readonly utils: import("document-model").DocumentModelUtils<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
193
- readonly documentModel: import("document-model").DocumentModelPHState;
194
- }]>, T, {
63
+ }>(options: import("@powerhousedao/ph-clint").DocumentChangeTriggerOptions<import("@powerhousedao/ph-clint").InferRegistry<readonly [import("document-model").DocumentModelModule<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>]>, T, {
195
64
  model: string;
196
65
  devServicePort: number;
197
66
  phVersion: string;
198
- projectDocumentId?: string | undefined;
199
67
  apiKey?: string | undefined;
200
68
  }, TState>) => import("@powerhousedao/ph-clint").Trigger<TState, {
201
69
  model: string;
202
70
  devServicePort: number;
203
71
  phVersion: string;
204
- projectDocumentId?: string | undefined;
205
72
  apiKey?: string | undefined;
206
- }, import("@powerhousedao/ph-clint").InferRegistry<readonly [{
207
- readonly version: 1;
208
- readonly reducer: import("document-model").Reducer<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
209
- readonly actions: {
210
- enableRoutine: (input: import("@powerhousedao/ph-clint-app").EnableRoutineInput) => import("@powerhousedao/ph-clint-app").EnableRoutineAction;
211
- disableRoutine: (input: import("@powerhousedao/ph-clint-app").DisableRoutineInput) => import("@powerhousedao/ph-clint-app").DisableRoutineAction;
212
- enableMastra: (input: import("@powerhousedao/ph-clint-app").EnableMastraInput) => import("@powerhousedao/ph-clint-app").EnableMastraAction;
213
- disableMastra: (input: import("@powerhousedao/ph-clint-app").DisableMastraInput) => import("@powerhousedao/ph-clint-app").DisableMastraAction;
214
- enablePowerhouse: (input: import("@powerhousedao/ph-clint-app").EnablePowerhouseInput) => import("@powerhousedao/ph-clint-app").EnablePowerhouseAction;
215
- setPowerhouseSwitchboard: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardAction;
216
- setPowerhouseConnect: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseConnectInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseConnectAction;
217
- setPackageName: (input: import("@powerhousedao/ph-clint-app").SetPackageNameInput) => import("@powerhousedao/ph-clint-app").SetPackageNameAction;
218
- clearBin: (input: import("@powerhousedao/ph-clint-app").ClearBinInput) => import("@powerhousedao/ph-clint-app").ClearBinAction;
219
- setBin: (input: import("@powerhousedao/ph-clint-app").SetBinInput) => import("@powerhousedao/ph-clint-app").SetBinAction;
220
- setDescription: (input: import("@powerhousedao/ph-clint-app").SetDescriptionInput) => import("@powerhousedao/ph-clint-app").SetDescriptionAction;
221
- setVersion: (input: import("@powerhousedao/ph-clint-app").SetVersionInput) => import("@powerhousedao/ph-clint-app").SetVersionAction;
222
- clearScope: (input: import("@powerhousedao/ph-clint-app").ClearScopeInput) => import("@powerhousedao/ph-clint-app").ClearScopeAction;
223
- setScope: (input: import("@powerhousedao/ph-clint-app").SetScopeInput) => import("@powerhousedao/ph-clint-app").SetScopeAction;
224
- setName: (name: string | {
225
- name: string;
226
- }) => import("document-model").SetNameAction;
227
- undo: (count?: number, scope?: string) => import("document-model").UndoAction;
228
- redo: (count?: number, scope?: string) => import("document-model").RedoAction;
229
- prune: (start?: number, end?: number, scope?: string) => import("document-model").SchemaPruneAction;
230
- loadState: <TState_1 extends import("document-model").PHBaseState = import("document-model").PHBaseState>(state: TState_1 & {
231
- name: string;
232
- }, operations: number) => import("document-model").LoadStateAction;
233
- noop: (scope?: string) => import("document-model").NOOPAction;
234
- };
235
- readonly utils: import("document-model").DocumentModelUtils<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
236
- readonly documentModel: import("document-model").DocumentModelPHState;
237
- }]>>;
73
+ }, import("@powerhousedao/ph-clint").InferRegistry<readonly [import("document-model").DocumentModelModule<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>]>>;
238
74
  export { registry } from './framework.gen.js';
239
75
  export type { Registry } from './framework.gen.js';
@@ -2,36 +2,5 @@
2
2
  * Typed document registry derived from the reactor package's document models.
3
3
  * Regenerated whenever the spec's `documentTypes` list changes.
4
4
  */
5
- export declare const registry: import("@powerhousedao/ph-clint").InferRegistry<readonly [{
6
- readonly version: 1;
7
- readonly reducer: import("document-model").Reducer<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
8
- readonly actions: {
9
- enableRoutine: (input: import("@powerhousedao/ph-clint-app").EnableRoutineInput) => import("@powerhousedao/ph-clint-app").EnableRoutineAction;
10
- disableRoutine: (input: import("@powerhousedao/ph-clint-app").DisableRoutineInput) => import("@powerhousedao/ph-clint-app").DisableRoutineAction;
11
- enableMastra: (input: import("@powerhousedao/ph-clint-app").EnableMastraInput) => import("@powerhousedao/ph-clint-app").EnableMastraAction;
12
- disableMastra: (input: import("@powerhousedao/ph-clint-app").DisableMastraInput) => import("@powerhousedao/ph-clint-app").DisableMastraAction;
13
- enablePowerhouse: (input: import("@powerhousedao/ph-clint-app").EnablePowerhouseInput) => import("@powerhousedao/ph-clint-app").EnablePowerhouseAction;
14
- setPowerhouseSwitchboard: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardAction;
15
- setPowerhouseConnect: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseConnectInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseConnectAction;
16
- setPackageName: (input: import("@powerhousedao/ph-clint-app").SetPackageNameInput) => import("@powerhousedao/ph-clint-app").SetPackageNameAction;
17
- clearBin: (input: import("@powerhousedao/ph-clint-app").ClearBinInput) => import("@powerhousedao/ph-clint-app").ClearBinAction;
18
- setBin: (input: import("@powerhousedao/ph-clint-app").SetBinInput) => import("@powerhousedao/ph-clint-app").SetBinAction;
19
- setDescription: (input: import("@powerhousedao/ph-clint-app").SetDescriptionInput) => import("@powerhousedao/ph-clint-app").SetDescriptionAction;
20
- setVersion: (input: import("@powerhousedao/ph-clint-app").SetVersionInput) => import("@powerhousedao/ph-clint-app").SetVersionAction;
21
- clearScope: (input: import("@powerhousedao/ph-clint-app").ClearScopeInput) => import("@powerhousedao/ph-clint-app").ClearScopeAction;
22
- setScope: (input: import("@powerhousedao/ph-clint-app").SetScopeInput) => import("@powerhousedao/ph-clint-app").SetScopeAction;
23
- setName: (name: string | {
24
- name: string;
25
- }) => import("document-model").SetNameAction;
26
- undo: (count?: number, scope?: string) => import("document-model").UndoAction;
27
- redo: (count?: number, scope?: string) => import("document-model").RedoAction;
28
- prune: (start?: number, end?: number, scope?: string) => import("document-model").SchemaPruneAction;
29
- loadState: <TState extends import("document-model").PHBaseState = import("document-model").PHBaseState>(state: TState & {
30
- name: string;
31
- }, operations: number) => import("document-model").LoadStateAction;
32
- noop: (scope?: string) => import("document-model").NOOPAction;
33
- };
34
- readonly utils: import("document-model").DocumentModelUtils<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
35
- readonly documentModel: import("document-model").DocumentModelPHState;
36
- }]>;
5
+ export declare const registry: import("@powerhousedao/ph-clint").InferRegistry<readonly [import("document-model").DocumentModelModule<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>]>;
37
6
  export type Registry = typeof registry;
package/dist/framework.js CHANGED
@@ -25,10 +25,6 @@ export const configSchema = z.object({
25
25
  .string()
26
26
  .default('6.0.0-dev.170')
27
27
  .describe('Pinned Powerhouse version used when emitting a new impl project'),
28
- projectDocumentId: z
29
- .string()
30
- .optional()
31
- .describe('ID of the powerhouse/ph-clint-project document that drives codegen (set on first regen; edit to switch projects)'),
32
28
  });
33
29
  export const secretsSchema = z.object({
34
30
  apiKey: z.string().optional().describe('Anthropic API key'),
@@ -1,6 +1,6 @@
1
1
  # Agent Base System Prompt
2
2
 
3
- You are {{agentName}}, an agent available through the {{cliName}} CLI.
3
+ You are PhClintDevAgent, an agent available through the CLI.
4
4
 
5
5
  ## Capabilities
6
6