@treeseed/agent 0.1.2

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 (93) hide show
  1. package/Dockerfile +7 -0
  2. package/README.md +62 -0
  3. package/dist/agent-runtime.js +111 -0
  4. package/dist/agents/adapters/execution.js +90 -0
  5. package/dist/agents/adapters/mutations.js +30 -0
  6. package/dist/agents/adapters/notification.js +16 -0
  7. package/dist/agents/adapters/repository.js +61 -0
  8. package/dist/agents/adapters/research.js +25 -0
  9. package/dist/agents/adapters/verification.js +62 -0
  10. package/dist/agents/cli-tools.js +5 -0
  11. package/dist/agents/cli.js +77 -0
  12. package/dist/agents/content-store.js +1 -0
  13. package/dist/agents/contracts/messages.js +138 -0
  14. package/dist/agents/contracts/run.js +0 -0
  15. package/dist/agents/d1-store.js +1 -0
  16. package/dist/agents/frontmatter.js +1 -0
  17. package/dist/agents/git-runtime.js +1 -0
  18. package/dist/agents/index.js +5 -0
  19. package/dist/agents/kernel/agent-kernel.js +284 -0
  20. package/dist/agents/kernel/trigger-resolver.js +153 -0
  21. package/dist/agents/model-registry.js +1 -0
  22. package/dist/agents/registry-helper.js +14 -0
  23. package/dist/agents/registry.js +91 -0
  24. package/dist/agents/runtime-types.js +0 -0
  25. package/dist/agents/sdk-filters.js +1 -0
  26. package/dist/agents/sdk-types.js +1 -0
  27. package/dist/agents/sdk.js +1 -0
  28. package/dist/agents/spec-loader.js +53 -0
  29. package/dist/agents/spec-normalizer.js +257 -0
  30. package/dist/agents/spec-types.js +0 -0
  31. package/dist/agents/stores/cursor-store.js +1 -0
  32. package/dist/agents/stores/helpers.js +1 -0
  33. package/dist/agents/stores/lease-store.js +1 -0
  34. package/dist/agents/stores/message-store.js +1 -0
  35. package/dist/agents/stores/run-store.js +1 -0
  36. package/dist/agents/stores/subscription-store.js +1 -0
  37. package/dist/agents/testing/agents-smoke.js +32 -0
  38. package/dist/agents/testing/e2e-harness.js +435 -0
  39. package/dist/agents/wrangler-d1.js +1 -0
  40. package/dist/index.js +9 -0
  41. package/dist/scripts/assert-release-tag-version.d.ts +1 -0
  42. package/dist/scripts/assert-release-tag-version.js +20 -0
  43. package/dist/scripts/build-dist.d.ts +1 -0
  44. package/dist/scripts/build-dist.js +98 -0
  45. package/dist/scripts/package-tools.d.ts +1 -0
  46. package/dist/scripts/package-tools.js +7 -0
  47. package/dist/scripts/publish-package.d.ts +1 -0
  48. package/dist/scripts/publish-package.js +19 -0
  49. package/dist/scripts/release-verify.d.ts +1 -0
  50. package/dist/scripts/release-verify.js +143 -0
  51. package/dist/scripts/test-smoke.d.ts +1 -0
  52. package/dist/scripts/test-smoke.js +23 -0
  53. package/dist/scripts/treeseed-agents.d.ts +2 -0
  54. package/dist/scripts/treeseed-agents.js +13 -0
  55. package/dist/src/agent-runtime.d.ts +17 -0
  56. package/dist/src/agents/adapters/execution.d.ts +46 -0
  57. package/dist/src/agents/adapters/mutations.d.ts +22 -0
  58. package/dist/src/agents/adapters/notification.d.ts +11 -0
  59. package/dist/src/agents/adapters/repository.d.ts +28 -0
  60. package/dist/src/agents/adapters/research.d.ts +14 -0
  61. package/dist/src/agents/adapters/verification.d.ts +36 -0
  62. package/dist/src/agents/cli-tools.d.ts +1 -0
  63. package/dist/src/agents/cli.d.ts +6 -0
  64. package/dist/src/agents/content-store.d.ts +1 -0
  65. package/dist/src/agents/contracts/messages.d.ts +88 -0
  66. package/dist/src/agents/contracts/run.d.ts +20 -0
  67. package/dist/src/agents/d1-store.d.ts +1 -0
  68. package/dist/src/agents/frontmatter.d.ts +1 -0
  69. package/dist/src/agents/git-runtime.d.ts +1 -0
  70. package/dist/src/agents/index.d.ts +1 -0
  71. package/dist/src/agents/kernel/agent-kernel.d.ts +52 -0
  72. package/dist/src/agents/kernel/trigger-resolver.d.ts +18 -0
  73. package/dist/src/agents/model-registry.d.ts +1 -0
  74. package/dist/src/agents/registry-helper.d.ts +4 -0
  75. package/dist/src/agents/registry.d.ts +7 -0
  76. package/dist/src/agents/runtime-types.d.ts +117 -0
  77. package/dist/src/agents/sdk-filters.d.ts +1 -0
  78. package/dist/src/agents/sdk-types.d.ts +1 -0
  79. package/dist/src/agents/sdk.d.ts +1 -0
  80. package/dist/src/agents/spec-loader.d.ts +18 -0
  81. package/dist/src/agents/spec-normalizer.d.ts +2 -0
  82. package/dist/src/agents/spec-types.d.ts +64 -0
  83. package/dist/src/agents/stores/cursor-store.d.ts +1 -0
  84. package/dist/src/agents/stores/helpers.d.ts +1 -0
  85. package/dist/src/agents/stores/lease-store.d.ts +1 -0
  86. package/dist/src/agents/stores/message-store.d.ts +1 -0
  87. package/dist/src/agents/stores/run-store.d.ts +1 -0
  88. package/dist/src/agents/stores/subscription-store.d.ts +1 -0
  89. package/dist/src/agents/testing/agents-smoke.d.ts +1 -0
  90. package/dist/src/agents/testing/e2e-harness.d.ts +44 -0
  91. package/dist/src/agents/wrangler-d1.d.ts +1 -0
  92. package/dist/src/index.d.ts +3 -0
  93. package/package.json +54 -0
@@ -0,0 +1,117 @@
1
+ import type { AgentHandlerKind, AgentRuntimeSpec, AgentRunStatus, AgentTriggerConfig } from '@treeseed/core/types/agents';
2
+ import type { AgentErrorCategory } from './contracts/run.ts';
3
+ import type { ScopedAgentSdk } from './sdk.ts';
4
+ import type { SdkMessageEntity } from './sdk-types';
5
+ export interface AgentTriggerInvocation {
6
+ kind: 'startup' | 'schedule' | 'message' | 'manual' | 'follow';
7
+ source: string;
8
+ trigger: AgentTriggerConfig;
9
+ message?: SdkMessageEntity | null;
10
+ followModels?: string[];
11
+ cursorValue?: string | null;
12
+ }
13
+ export interface AgentExecutionResult {
14
+ status: AgentRunStatus;
15
+ summary: string;
16
+ stdout?: string;
17
+ stderr?: string;
18
+ errorCategory?: AgentErrorCategory | null;
19
+ metadata?: Record<string, unknown>;
20
+ }
21
+ export interface AgentMutationResult {
22
+ branchName: string | null;
23
+ commitMessage: string | null;
24
+ worktreePath: string | null;
25
+ commitSha: string | null;
26
+ changedPaths: string[];
27
+ }
28
+ export interface AgentRepositoryInspectionResult {
29
+ branchName: string | null;
30
+ changedPaths: string[];
31
+ commitSha: string | null;
32
+ summary: string;
33
+ }
34
+ export interface AgentVerificationResult {
35
+ status: 'completed' | 'failed' | 'waiting';
36
+ summary: string;
37
+ stdout?: string;
38
+ stderr?: string;
39
+ errorCategory?: AgentErrorCategory | null;
40
+ }
41
+ export interface AgentNotificationResult {
42
+ status: 'completed' | 'failed' | 'waiting';
43
+ summary: string;
44
+ deliveredCount: number;
45
+ }
46
+ export interface AgentResearchResult {
47
+ status: 'completed' | 'failed' | 'waiting';
48
+ summary: string;
49
+ markdown: string;
50
+ sources?: string[];
51
+ errorCategory?: AgentErrorCategory | null;
52
+ }
53
+ export interface AgentExecutionAdapter {
54
+ runTask(input: {
55
+ agent: AgentRuntimeSpec;
56
+ runId: string;
57
+ prompt: string;
58
+ }): Promise<AgentExecutionResult>;
59
+ }
60
+ export interface AgentMutationAdapter {
61
+ writeArtifact(input: {
62
+ runId: string;
63
+ agent: AgentRuntimeSpec;
64
+ relativePath: string;
65
+ content: string;
66
+ commitMessage: string;
67
+ }): Promise<AgentMutationResult>;
68
+ }
69
+ export interface AgentRepositoryInspectionAdapter {
70
+ inspectBranch(input: {
71
+ repoRoot: string;
72
+ branchName: string | null;
73
+ }): Promise<AgentRepositoryInspectionResult>;
74
+ }
75
+ export interface AgentVerificationAdapter {
76
+ runChecks(input: {
77
+ agent: AgentRuntimeSpec;
78
+ runId: string;
79
+ commands: string[];
80
+ }): Promise<AgentVerificationResult>;
81
+ }
82
+ export interface AgentNotificationAdapter {
83
+ deliver(input: {
84
+ agent: AgentRuntimeSpec;
85
+ runId: string;
86
+ recipients: string[];
87
+ subject: string;
88
+ body: string;
89
+ }): Promise<AgentNotificationResult>;
90
+ }
91
+ export interface AgentResearchAdapter {
92
+ research(input: {
93
+ agent: AgentRuntimeSpec;
94
+ runId: string;
95
+ questionId: string;
96
+ reason: string | null;
97
+ }): Promise<AgentResearchResult>;
98
+ }
99
+ export interface AgentContext {
100
+ runId: string;
101
+ repoRoot: string;
102
+ agent: AgentRuntimeSpec;
103
+ sdk: ScopedAgentSdk;
104
+ trigger: AgentTriggerInvocation;
105
+ execution: AgentExecutionAdapter;
106
+ mutations: AgentMutationAdapter;
107
+ repository: AgentRepositoryInspectionAdapter;
108
+ verification: AgentVerificationAdapter;
109
+ notifications: AgentNotificationAdapter;
110
+ research: AgentResearchAdapter;
111
+ }
112
+ export interface AgentHandler<TInputs = unknown, TResult = unknown> {
113
+ kind: AgentHandlerKind;
114
+ resolveInputs(context: AgentContext): Promise<TInputs>;
115
+ execute(context: AgentContext, inputs: TInputs): Promise<TResult>;
116
+ emitOutputs(context: AgentContext, result: TResult): Promise<AgentExecutionResult>;
117
+ }
@@ -0,0 +1 @@
1
+ export * from '@treeseed/sdk/sdk-filters';
@@ -0,0 +1 @@
1
+ export * from '@treeseed/sdk/types';
@@ -0,0 +1 @@
1
+ export * from '@treeseed/sdk/sdk';
@@ -0,0 +1,18 @@
1
+ import type { AgentRuntimeSpec } from '@treeseed/core/types/agents';
2
+ import { AgentSdk } from './sdk.ts';
3
+ import type { AgentSpecDiagnostic, NormalizedAgentRuntimeSpec } from './spec-types.ts';
4
+ export interface AgentSpecLoadResult {
5
+ specs: NormalizedAgentRuntimeSpec[];
6
+ diagnostics: AgentSpecDiagnostic[];
7
+ }
8
+ export declare function loadAgentSpecs(sdk: AgentSdk, options?: {
9
+ enabled?: boolean;
10
+ }): Promise<AgentSpecLoadResult>;
11
+ export declare function loadActiveAgentSpecs(sdk: AgentSdk): Promise<AgentSpecLoadResult>;
12
+ export declare function loadAllAgentSpecs(sdk: AgentSdk): Promise<AgentSpecLoadResult>;
13
+ export declare function summarizeAgentSpec(agent: AgentRuntimeSpec): {
14
+ slug: any;
15
+ handler: any;
16
+ enabled: any;
17
+ triggers: any;
18
+ };
@@ -0,0 +1,2 @@
1
+ import type { AgentSpecNormalizationResult, AgentSpecValidationContext, RawAgentRuntimeSpec } from './spec-types.ts';
2
+ export declare function normalizeAgentRuntimeSpec(raw: RawAgentRuntimeSpec, context: AgentSpecValidationContext): AgentSpecNormalizationResult;
@@ -0,0 +1,64 @@
1
+ import type { AgentCliOptions, AgentExecutionConfig, AgentHandlerKind, AgentOutputContract, AgentPermissionConfig, AgentRuntimeSpec, AgentTriggerConfig } from '@treeseed/core/types/agents';
2
+ export type AgentSpecDiagnosticSeverity = 'error' | 'warning';
3
+ export interface AgentSpecDiagnostic {
4
+ severity: AgentSpecDiagnosticSeverity;
5
+ slug: string;
6
+ field: string;
7
+ message: string;
8
+ }
9
+ export interface NormalizedAgentRuntimeSpec extends AgentRuntimeSpec {
10
+ name?: string;
11
+ description?: string;
12
+ summary?: string;
13
+ operator?: string;
14
+ runtimeStatus?: string;
15
+ capabilities?: string[];
16
+ tags?: string[];
17
+ }
18
+ export interface AgentSpecValidationContext {
19
+ registeredHandlers: readonly AgentHandlerKind[];
20
+ messageTypes: readonly string[];
21
+ }
22
+ export interface RawAgentRuntimeSpec {
23
+ id?: unknown;
24
+ body?: unknown;
25
+ slug?: unknown;
26
+ handler?: unknown;
27
+ enabled?: unknown;
28
+ systemPrompt?: unknown;
29
+ persona?: unknown;
30
+ cli?: unknown;
31
+ triggers?: unknown;
32
+ triggerPolicy?: unknown;
33
+ permissions?: unknown;
34
+ execution?: unknown;
35
+ outputs?: unknown;
36
+ name?: unknown;
37
+ description?: unknown;
38
+ summary?: unknown;
39
+ operator?: unknown;
40
+ runtimeStatus?: unknown;
41
+ capabilities?: unknown;
42
+ tags?: unknown;
43
+ }
44
+ export interface AgentSpecNormalizationResult {
45
+ spec: NormalizedAgentRuntimeSpec | null;
46
+ diagnostics: AgentSpecDiagnostic[];
47
+ }
48
+ export interface NormalizedTriggerPolicy {
49
+ maxRunsPerCycle?: number;
50
+ messageBatchSize?: number;
51
+ }
52
+ export interface AgentSpecParts {
53
+ slug: string;
54
+ handler: AgentHandlerKind;
55
+ enabled: boolean;
56
+ systemPrompt: string;
57
+ persona: string;
58
+ cli: AgentCliOptions;
59
+ triggers: AgentTriggerConfig[];
60
+ triggerPolicy?: NormalizedTriggerPolicy;
61
+ permissions: AgentPermissionConfig[];
62
+ execution: AgentExecutionConfig;
63
+ outputs: AgentOutputContract;
64
+ }
@@ -0,0 +1 @@
1
+ export * from '@treeseed/sdk/stores/cursor-store';
@@ -0,0 +1 @@
1
+ export * from '@treeseed/sdk/stores/helpers';
@@ -0,0 +1 @@
1
+ export * from '@treeseed/sdk/stores/lease-store';
@@ -0,0 +1 @@
1
+ export * from '@treeseed/sdk/stores/message-store';
@@ -0,0 +1 @@
1
+ export * from '@treeseed/sdk/stores/run-store';
@@ -0,0 +1 @@
1
+ export * from '@treeseed/sdk/stores/subscription-store';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,44 @@
1
+ import type { AgentExecutionAdapter, AgentMutationAdapter } from '../runtime-types.ts';
2
+ import type { SdkCreateMessageRequest, SdkMessageEntity, SdkRunEntity } from '../sdk-types';
3
+ import type { AgentKernel } from '../kernel/agent-kernel.ts';
4
+ import type { AgentSdk } from '../sdk.ts';
5
+ export interface AgentTestRuntime {
6
+ rootDir: string;
7
+ repoRoot: string;
8
+ persistTo: string;
9
+ sdk: AgentSdk;
10
+ kernel: AgentKernel;
11
+ seedObjectives(entries: Array<{
12
+ slug: string;
13
+ date?: string;
14
+ }>): Promise<void>;
15
+ seedQuestions(entries: Array<{
16
+ slug: string;
17
+ date?: string;
18
+ relatedObjectives?: string[];
19
+ }>): Promise<void>;
20
+ seedKnowledge(entries: Array<{
21
+ slug: string;
22
+ title?: string;
23
+ }>): Promise<void>;
24
+ seedMessages(entries: Array<Omit<SdkCreateMessageRequest, 'actor'>>): Promise<SdkMessageEntity[]>;
25
+ clearModelContent(model: 'objective' | 'question' | 'knowledge'): Promise<void>;
26
+ runAgent(slug: string): Promise<unknown>;
27
+ runCycle(): Promise<unknown>;
28
+ readMessages(): Promise<SdkMessageEntity[]>;
29
+ readRunLogs(): Promise<SdkRunEntity[]>;
30
+ readContentLeases(): Promise<Record<string, unknown>[]>;
31
+ readSandboxArtifacts(): Promise<Array<{
32
+ path: string;
33
+ content: string;
34
+ }>>;
35
+ claimMessage(messageTypes: string[], workerId?: string): Promise<SdkMessageEntity | null>;
36
+ claimObjectiveLease(itemKey: string, workerId?: string): Promise<string | null>;
37
+ cleanup(): Promise<void>;
38
+ }
39
+ export declare function createAgentTestRuntime(options?: {
40
+ execution?: AgentExecutionAdapter;
41
+ mutations?: AgentMutationAdapter;
42
+ executionMode?: 'stub' | 'copilot';
43
+ databaseMode?: 'memory' | 'local-d1';
44
+ }): Promise<AgentTestRuntime>;
@@ -0,0 +1 @@
1
+ export * from '@treeseed/sdk/wrangler-d1';
@@ -0,0 +1,3 @@
1
+ export { AgentKernel } from './agents/kernel/agent-kernel.ts';
2
+ export { runTreeseedAgentCli } from './agents/cli.ts';
3
+ export { resolveAgentHandler, listRegisteredAgentHandlers } from './agents/registry.ts';
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@treeseed/agent",
3
+ "version": "0.1.2",
4
+ "description": "Treeseed agent service runtime package.",
5
+ "license": "AGPL-3.0-only",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/treeseed-ai/agent.git",
9
+ "directory": "."
10
+ },
11
+ "homepage": "https://treeseed.ai",
12
+ "bugs": {
13
+ "url": "https://github.com/treeseed-ai/agent/issues"
14
+ },
15
+ "type": "module",
16
+ "engines": {
17
+ "node": ">=20"
18
+ },
19
+ "types": "./dist/index.d.ts",
20
+ "files": [
21
+ "README.md",
22
+ "dist",
23
+ "Dockerfile"
24
+ ],
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
28
+ "scripts": {
29
+ "setup": "npm install",
30
+ "setup:ci": "npm ci",
31
+ "build": "npm run build:dist",
32
+ "build:dist": "node ./scripts/run-ts.mjs ./scripts/build-dist.ts",
33
+ "test": "npm run test:smoke",
34
+ "prepare": "npm run build:dist",
35
+ "prepack": "npm run build:dist",
36
+ "test:smoke": "node ./scripts/run-ts.mjs ./scripts/test-smoke.ts",
37
+ "release:setup": "npm run setup:ci",
38
+ "release:check-tag": "node ./scripts/run-ts.mjs ./scripts/assert-release-tag-version.ts",
39
+ "release:verify": "node ./scripts/run-ts.mjs ./scripts/release-verify.ts",
40
+ "release:publish": "node ./scripts/run-ts.mjs ./scripts/publish-package.ts"
41
+ },
42
+ "dependencies": {
43
+ "@treeseed/core": "^0.1.2",
44
+ "@treeseed/sdk": "^0.1.2",
45
+ "esbuild": "0.28.0",
46
+ "typescript": "^5.9.3"
47
+ },
48
+ "devDependencies": {
49
+ "@types/node": "^24.6.0"
50
+ },
51
+ "bin": {
52
+ "treeseed-agents": "./dist/scripts/treeseed-agents.js"
53
+ }
54
+ }