@treeseed/sdk 0.6.7 → 0.6.8

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 (48) hide show
  1. package/dist/copilot.d.ts +15 -0
  2. package/dist/copilot.js +75 -0
  3. package/dist/index.d.ts +2 -0
  4. package/dist/index.js +18 -0
  5. package/dist/managed-dependencies.d.ts +56 -0
  6. package/dist/managed-dependencies.js +668 -0
  7. package/dist/operations/providers/default.js +30 -1
  8. package/dist/operations/services/commit-message-provider.d.ts +33 -0
  9. package/dist/operations/services/commit-message-provider.js +319 -0
  10. package/dist/operations/services/config-runtime.js +41 -20
  11. package/dist/operations/services/git-remote-policy.d.ts +9 -0
  12. package/dist/operations/services/git-remote-policy.js +55 -0
  13. package/dist/operations/services/git-workflow.js +22 -3
  14. package/dist/operations/services/github-api.js +9 -4
  15. package/dist/operations/services/knowledge-coop-launch.js +4 -0
  16. package/dist/operations/services/local-dev.js +7 -2
  17. package/dist/operations/services/package-reference-policy.d.ts +70 -0
  18. package/dist/operations/services/package-reference-policy.js +314 -0
  19. package/dist/operations/services/project-platform.d.ts +4 -0
  20. package/dist/operations/services/project-platform.js +28 -4
  21. package/dist/operations/services/railway-deploy.d.ts +4 -1
  22. package/dist/operations/services/railway-deploy.js +76 -38
  23. package/dist/operations/services/repository-save-orchestrator.d.ts +172 -0
  24. package/dist/operations/services/repository-save-orchestrator.js +1462 -0
  25. package/dist/operations/services/workspace-dependency-mode.d.ts +70 -0
  26. package/dist/operations/services/workspace-dependency-mode.js +404 -0
  27. package/dist/operations/services/workspace-preflight.js +5 -0
  28. package/dist/operations/services/workspace-save.js +10 -6
  29. package/dist/operations-registry.js +5 -0
  30. package/dist/operations-types.d.ts +1 -0
  31. package/dist/platform/books-data.js +4 -1
  32. package/dist/platform/env.yaml +6 -3
  33. package/dist/reconcile/builtin-adapters.js +37 -7
  34. package/dist/scripts/cleanup-markdown.js +4 -0
  35. package/dist/scripts/publish-package.js +5 -0
  36. package/dist/scripts/tenant-workflow-action.js +11 -2
  37. package/dist/verification.js +24 -12
  38. package/dist/workflow/operations.d.ts +381 -55
  39. package/dist/workflow/operations.js +718 -258
  40. package/dist/workflow-state.d.ts +40 -1
  41. package/dist/workflow-state.js +220 -17
  42. package/dist/workflow-support.d.ts +3 -0
  43. package/dist/workflow-support.js +34 -0
  44. package/dist/workflow.d.ts +19 -3
  45. package/dist/workflow.js +3 -3
  46. package/dist/wrangler-d1.js +6 -1
  47. package/package.json +17 -1
  48. package/templates/github/deploy.workflow.yml +24 -14
@@ -0,0 +1,15 @@
1
+ export type TreeseedCopilotTaskInput = {
2
+ prompt: string;
3
+ cwd?: string;
4
+ model?: string;
5
+ allowTools?: string[];
6
+ env?: NodeJS.ProcessEnv;
7
+ timeoutMs?: number;
8
+ };
9
+ export type TreeseedCopilotTaskResult = {
10
+ status: 'completed' | 'failed';
11
+ summary: string;
12
+ stdout: string;
13
+ stderr: string;
14
+ };
15
+ export declare function runTreeseedCopilotTask(input: TreeseedCopilotTaskInput): Promise<TreeseedCopilotTaskResult>;
@@ -0,0 +1,75 @@
1
+ import { approveAll, CopilotClient } from "@github/copilot-sdk";
2
+ import {
3
+ createTreeseedManagedToolEnv,
4
+ resolveTreeseedToolBinary
5
+ } from "./managed-dependencies.js";
6
+ async function runTreeseedCopilotTask(input) {
7
+ const cwd = input.cwd ?? process.cwd();
8
+ const env = createTreeseedManagedToolEnv(input.env ?? process.env);
9
+ const cliPath = resolveTreeseedToolBinary("copilot", { env });
10
+ if (!cliPath) {
11
+ return {
12
+ status: "failed",
13
+ summary: "Copilot task failed.",
14
+ stdout: "",
15
+ stderr: "Copilot CLI is unavailable."
16
+ };
17
+ }
18
+ const client = new CopilotClient({
19
+ cliPath,
20
+ cwd,
21
+ env,
22
+ logLevel: "error",
23
+ useStdio: true
24
+ });
25
+ let session = null;
26
+ const messages = [];
27
+ const errors = [];
28
+ try {
29
+ session = await client.createSession({
30
+ clientName: "treeseed",
31
+ model: input.model,
32
+ availableTools: input.allowTools && input.allowTools.length > 0 ? input.allowTools : void 0,
33
+ onPermissionRequest: approveAll,
34
+ workingDirectory: cwd,
35
+ onEvent(event) {
36
+ if (event.type === "assistant.message" && event.data.content.trim()) {
37
+ messages.push(event.data.content);
38
+ }
39
+ if (event.type === "session.error") {
40
+ errors.push(event.data.message);
41
+ }
42
+ }
43
+ });
44
+ const finalMessage = await session.sendAndWait({ prompt: input.prompt }, input.timeoutMs ?? 10 * 60 * 1e3);
45
+ const stdout = finalMessage?.data.content ?? messages.at(-1) ?? messages.join("\n\n");
46
+ return {
47
+ status: errors.length > 0 ? "failed" : "completed",
48
+ summary: errors.length > 0 ? "Copilot task failed." : "Copilot task completed.",
49
+ stdout,
50
+ stderr: errors.join("\n")
51
+ };
52
+ } catch (error) {
53
+ return {
54
+ status: "failed",
55
+ summary: "Copilot task failed.",
56
+ stdout: messages.join("\n\n"),
57
+ stderr: [
58
+ ...errors,
59
+ error instanceof Error ? error.message : String(error)
60
+ ].filter(Boolean).join("\n")
61
+ };
62
+ } finally {
63
+ try {
64
+ await session?.disconnect();
65
+ } catch {
66
+ }
67
+ const stopErrors = await client.stop();
68
+ if (stopErrors.length > 0 && errors.length === 0) {
69
+ await client.forceStop();
70
+ }
71
+ }
72
+ }
73
+ export {
74
+ runTreeseedCopilotTask
75
+ };
package/dist/index.d.ts CHANGED
@@ -14,6 +14,8 @@ export { parseGraphDsl } from './graph/dsl.ts';
14
14
  export { createDefaultGraphRankingProvider, DEFAULT_GRAPH_RANKING_PROVIDER } from './graph/ranking.ts';
15
15
  export { BUILTIN_MODEL_REGISTRY, MODEL_REGISTRY, buildBuiltinModelRegistry, buildModelRegistry, buildScopedModelRegistry, mergeModelRegistries, resolveModelDefinition, } from './model-registry.ts';
16
16
  export { normalizeAgentCliOptions, buildCopilotAllowToolArgs } from './cli-tools.ts';
17
+ export { collectTreeseedDependencyStatus, createTreeseedManagedToolEnv, formatTreeseedDependencyReport, installTreeseedDependencies, resolveTreeseedToolBinary, resolveTreeseedToolCommand, } from './managed-dependencies.ts';
18
+ export { runTreeseedCopilotTask, type TreeseedCopilotTaskInput, type TreeseedCopilotTaskResult, } from './copilot.ts';
17
19
  export { findDispatchCapability, listSdkDispatchCapabilities, listWorkflowDispatchCapabilities, } from './dispatch.ts';
18
20
  export { executeSdkOperation, findSdkOperation, listSdkOperationNames, } from './sdk-dispatch.ts';
19
21
  export { resolveSdkRecordVersion } from './sdk-version.ts';
package/dist/index.js CHANGED
@@ -84,6 +84,17 @@ import {
84
84
  resolveModelDefinition
85
85
  } from "./model-registry.js";
86
86
  import { normalizeAgentCliOptions, buildCopilotAllowToolArgs } from "./cli-tools.js";
87
+ import {
88
+ collectTreeseedDependencyStatus,
89
+ createTreeseedManagedToolEnv,
90
+ formatTreeseedDependencyReport,
91
+ installTreeseedDependencies,
92
+ resolveTreeseedToolBinary,
93
+ resolveTreeseedToolCommand
94
+ } from "./managed-dependencies.js";
95
+ import {
96
+ runTreeseedCopilotTask
97
+ } from "./copilot.js";
87
98
  import {
88
99
  findDispatchCapability,
89
100
  listSdkDispatchCapabilities,
@@ -183,6 +194,7 @@ export {
183
194
  buildModelRegistry,
184
195
  buildScopedModelRegistry,
185
196
  canonicalizeFrontmatter,
197
+ collectTreeseedDependencyStatus,
186
198
  collectTreeseedReconcileStatus,
187
199
  createControlPlaneReporter,
188
200
  createDefaultGraphRankingProvider,
@@ -190,6 +202,7 @@ export {
190
202
  createPublishedContentPipeline,
191
203
  createTeamScopedR2OverlayContentPublishProvider,
192
204
  createTeamScopedR2OverlayContentRuntimeProvider,
205
+ createTreeseedManagedToolEnv,
193
206
  createTreeseedReconcileRegistry,
194
207
  deriveTreeseedDesiredUnits,
195
208
  destroyTreeseedTargetUnits,
@@ -201,10 +214,12 @@ export {
201
214
  findDispatchCapability,
202
215
  findSdkOperation,
203
216
  findTreeseedOperation,
217
+ formatTreeseedDependencyReport,
204
218
  getRailwayAuthProfile,
205
219
  getTenantContentRoot,
206
220
  getTreeseedVerifyDriverStatus,
207
221
  importKnowledgeCoopKnowledgePack,
222
+ installTreeseedDependencies,
208
223
  isTeamScopedR2ContentEnabled,
209
224
  listRailwayEnvironments,
210
225
  listRailwayProjects,
@@ -254,6 +269,9 @@ export {
254
269
  resolveSdkRecordVersion,
255
270
  resolveTeamScopedContentLocator,
256
271
  resolveTreeseedTenantRoot,
272
+ resolveTreeseedToolBinary,
273
+ resolveTreeseedToolCommand,
274
+ runTreeseedCopilotTask,
257
275
  runTreeseedVerifyDriver,
258
276
  signEditorialPreviewToken,
259
277
  tenantFeatureEnabled,
@@ -0,0 +1,56 @@
1
+ import { spawnSync } from 'node:child_process';
2
+ export type TreeseedManagedToolName = 'git' | 'gh' | 'wrangler' | 'railway' | 'copilot' | 'copilot-sdk' | 'copilot-language-server' | 'docker' | 'gh-act';
3
+ export type TreeseedManagedDependencyStatus = 'already-present' | 'installed' | 'repaired' | 'skipped' | 'missing' | 'failed' | 'unsupported';
4
+ export type TreeseedDependencyReport = {
5
+ name: TreeseedManagedToolName;
6
+ kind: 'system' | 'download' | 'npm' | 'extension';
7
+ version?: string;
8
+ source: 'system' | 'managed-cache' | 'package' | 'managed-gh-config' | 'not-applicable';
9
+ binaryPath: string | null;
10
+ status: TreeseedManagedDependencyStatus;
11
+ required: boolean;
12
+ detail: string;
13
+ };
14
+ export type TreeseedNpmInstallReport = {
15
+ root: string | null;
16
+ command: string[];
17
+ status: 'already-present' | 'installed' | 'skipped' | 'failed';
18
+ exitCode: number | null;
19
+ detail: string;
20
+ };
21
+ export type TreeseedDependencyInstallResult = {
22
+ ok: boolean;
23
+ toolsHome: string;
24
+ ghConfigDir: string;
25
+ npmInstalls: TreeseedNpmInstallReport[];
26
+ reports: TreeseedDependencyReport[];
27
+ };
28
+ type DependencyInstallerOptions = {
29
+ tenantRoot?: string;
30
+ force?: boolean;
31
+ env?: NodeJS.ProcessEnv;
32
+ write?: (line: string) => void;
33
+ downloadFile?: (url: string, targetPath: string) => Promise<void>;
34
+ spawn?: typeof spawnSync;
35
+ };
36
+ export declare function createTreeseedManagedToolEnv(env?: NodeJS.ProcessEnv): {
37
+ [x: string]: string | undefined;
38
+ GH_CONFIG_DIR: string;
39
+ GH_PROMPT_DISABLED: string;
40
+ GH_NO_UPDATE_NOTIFIER: string;
41
+ };
42
+ export declare function formatTreeseedDependencyFailureDetails(result: Pick<TreeseedDependencyInstallResult, 'npmInstalls' | 'reports'>): string;
43
+ export declare function resolveTreeseedToolBinary(toolName: TreeseedManagedToolName, options?: {
44
+ env?: NodeJS.ProcessEnv;
45
+ }): string | null;
46
+ export declare function resolveTreeseedToolCommand(toolName: TreeseedManagedToolName, options?: {
47
+ env?: NodeJS.ProcessEnv;
48
+ }): {
49
+ command: string;
50
+ argsPrefix: string[];
51
+ binaryPath: string;
52
+ } | null;
53
+ export declare function installTreeseedDependencies(options?: DependencyInstallerOptions): Promise<TreeseedDependencyInstallResult>;
54
+ export declare function collectTreeseedDependencyStatus(options?: DependencyInstallerOptions): TreeseedDependencyInstallResult;
55
+ export declare function formatTreeseedDependencyReport(result: TreeseedDependencyInstallResult): string;
56
+ export {};