speexor 0.1.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.
- package/API-REFERENCE.md +201 -0
- package/ARCHITECTURE.md +548 -0
- package/CHANGELOG.md +52 -0
- package/CODE-OF-CONDUCT.md +83 -0
- package/CONTRIBUTING.md +98 -0
- package/FAQ.md +105 -0
- package/LICENSE.md +21 -0
- package/PUBLISH.md +77 -0
- package/README.md +179 -0
- package/REFACTOR-LOG.md +40 -0
- package/ROADMAP.md +78 -0
- package/SECURITY.md +79 -0
- package/SUMMARY.md +46 -0
- package/TESTING.md +140 -0
- package/dist/agent-5D3BVWNK.js +37 -0
- package/dist/agent-5D3BVWNK.js.map +1 -0
- package/dist/chunk-2F66BZYJ.js +212 -0
- package/dist/chunk-2F66BZYJ.js.map +1 -0
- package/dist/chunk-5NA2TFPG.js +3 -0
- package/dist/chunk-5NA2TFPG.js.map +1 -0
- package/dist/chunk-B7WLHC4W.js +666 -0
- package/dist/chunk-B7WLHC4W.js.map +1 -0
- package/dist/chunk-SXALZEOJ.js +345 -0
- package/dist/chunk-SXALZEOJ.js.map +1 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +287 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/index.d.ts +31 -0
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -0
- package/dist/index.d.ts +75 -0
- package/dist/index.js +205 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/index.d.ts +6 -0
- package/dist/plugins/index.js +3 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/types-0q_okI2g.d.ts +205 -0
- package/docs/PRD01.md +264 -0
- package/docs/PRD02.md +299 -0
- package/docs/PRD03.md +0 -0
- package/docs/PRD04.md +349 -0
- package/docs/PRD05.md +312 -0
- package/docs/SETUP.md +94 -0
- package/docs/TROUBLESHOOTING.md +113 -0
- package/examples/basic.yaml +61 -0
- package/package.json +102 -0
- package/schema/config.schema.json +119 -0
- package/speexor.config.yaml.example +30 -0
package/package.json
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "speexor",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Speexor — Agent Orchestrator for multi-AI coding agent orchestration across repositories",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"bin": {
|
|
10
|
+
"speexor": "dist/cli/index.js"
|
|
11
|
+
},
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"import": "./dist/index.js",
|
|
15
|
+
"types": "./dist/index.d.ts"
|
|
16
|
+
},
|
|
17
|
+
"./core": {
|
|
18
|
+
"import": "./dist/core/index.js",
|
|
19
|
+
"types": "./dist/core/index.d.ts"
|
|
20
|
+
},
|
|
21
|
+
"./cli": {
|
|
22
|
+
"import": "./dist/cli/index.js",
|
|
23
|
+
"types": "./dist/cli/index.d.ts"
|
|
24
|
+
},
|
|
25
|
+
"./plugins": {
|
|
26
|
+
"import": "./dist/plugins/index.js",
|
|
27
|
+
"types": "./dist/plugins/index.d.ts"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist",
|
|
32
|
+
"schema",
|
|
33
|
+
"docs",
|
|
34
|
+
"*.md",
|
|
35
|
+
"examples",
|
|
36
|
+
"speexor.config.yaml.example"
|
|
37
|
+
],
|
|
38
|
+
"scripts": {
|
|
39
|
+
"build": "tsup",
|
|
40
|
+
"dev": "tsup --watch",
|
|
41
|
+
"test": "vitest run",
|
|
42
|
+
"test:watch": "vitest",
|
|
43
|
+
"test:coverage": "vitest run --coverage",
|
|
44
|
+
"typecheck": "tsc --noEmit",
|
|
45
|
+
"lint": "biome check src/",
|
|
46
|
+
"lint:fix": "biome check --write src/",
|
|
47
|
+
"clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\""
|
|
48
|
+
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"commander": "^12.0.0",
|
|
51
|
+
"chalk": "^5.3.0",
|
|
52
|
+
"conf": "^12.0.0",
|
|
53
|
+
"dayjs": "^1.11.0",
|
|
54
|
+
"debug": "^4.3.0",
|
|
55
|
+
"eventemitter3": "^5.0.0",
|
|
56
|
+
"execa": "^9.0.0",
|
|
57
|
+
"globby": "^14.0.0",
|
|
58
|
+
"node-emoji": "^2.1.0",
|
|
59
|
+
"ora": "^8.0.0",
|
|
60
|
+
"yaml": "^2.5.0",
|
|
61
|
+
"zod": "^3.23.0"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"@biomejs/biome": "^2.5.1",
|
|
65
|
+
"@types/debug": "^4.1.0",
|
|
66
|
+
"@types/node": "^26.0.1",
|
|
67
|
+
"@vitest/coverage-v8": "^2.1.9",
|
|
68
|
+
"tsup": "^8.3.0",
|
|
69
|
+
"typescript": "^5.7.0",
|
|
70
|
+
"vite": "^8.1.0",
|
|
71
|
+
"vitest": "^2.1.0"
|
|
72
|
+
},
|
|
73
|
+
"keywords": [
|
|
74
|
+
"orchestrator",
|
|
75
|
+
"ai-agent",
|
|
76
|
+
"agent-orchestration",
|
|
77
|
+
"coding-agent",
|
|
78
|
+
"claude-code",
|
|
79
|
+
"opencode",
|
|
80
|
+
"aider",
|
|
81
|
+
"codex",
|
|
82
|
+
"multi-agent",
|
|
83
|
+
"speexor"
|
|
84
|
+
],
|
|
85
|
+
"publishConfig": {
|
|
86
|
+
"access": "public"
|
|
87
|
+
},
|
|
88
|
+
"preferGlobal": true,
|
|
89
|
+
"repository": {
|
|
90
|
+
"type": "git",
|
|
91
|
+
"url": "git+https://github.com/superdevids/speexjs.git",
|
|
92
|
+
"directory": "packages/speexor"
|
|
93
|
+
},
|
|
94
|
+
"bugs": {
|
|
95
|
+
"url": "https://github.com/superdevids/speexjs/issues"
|
|
96
|
+
},
|
|
97
|
+
"homepage": "https://github.com/superdevids/speexjs/tree/main/packages/speexor#readme",
|
|
98
|
+
"license": "MIT",
|
|
99
|
+
"engines": {
|
|
100
|
+
"node": ">=18.0.0"
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://speexjs.dev/schemas/speexor-config.json",
|
|
4
|
+
"title": "Speexor Configuration",
|
|
5
|
+
"description": "Configuration schema for Speexor — Agent Orchestrator",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["version", "projects"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"version": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"enum": ["1"],
|
|
12
|
+
"description": "Config schema version"
|
|
13
|
+
},
|
|
14
|
+
"projects": {
|
|
15
|
+
"type": "array",
|
|
16
|
+
"minItems": 1,
|
|
17
|
+
"items": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"required": ["name", "repository", "provider"],
|
|
20
|
+
"properties": {
|
|
21
|
+
"name": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"description": "Project display name"
|
|
24
|
+
},
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"description": "Git repository URL or local path"
|
|
28
|
+
},
|
|
29
|
+
"path": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"description": "Local path override for repository"
|
|
32
|
+
},
|
|
33
|
+
"branch": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"description": "Default base branch",
|
|
36
|
+
"default": "main"
|
|
37
|
+
},
|
|
38
|
+
"provider": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"required": ["primary"],
|
|
41
|
+
"properties": {
|
|
42
|
+
"primary": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"enum": ["opencode", "claude-code", "aider", "codex"],
|
|
45
|
+
"description": "Primary AI coding agent"
|
|
46
|
+
},
|
|
47
|
+
"fallback": {
|
|
48
|
+
"type": "array",
|
|
49
|
+
"items": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"enum": ["opencode", "claude-code", "aider", "codex"]
|
|
52
|
+
},
|
|
53
|
+
"description": "Fallback agents in priority order"
|
|
54
|
+
},
|
|
55
|
+
"concurrentLimit": {
|
|
56
|
+
"type": "integer",
|
|
57
|
+
"minimum": 1,
|
|
58
|
+
"maximum": 20,
|
|
59
|
+
"description": "Maximum parallel agents for this project"
|
|
60
|
+
},
|
|
61
|
+
"costLimit": {
|
|
62
|
+
"type": "integer",
|
|
63
|
+
"minimum": 0,
|
|
64
|
+
"description": "Cost limit in cents per session"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"reactions": {
|
|
69
|
+
"type": "object",
|
|
70
|
+
"properties": {
|
|
71
|
+
"ci-failed": { "$ref": "#/definitions/reactionRule" },
|
|
72
|
+
"changes-requested": { "$ref": "#/definitions/reactionRule" },
|
|
73
|
+
"approved-and-green": { "$ref": "#/definitions/reactionRule" }
|
|
74
|
+
},
|
|
75
|
+
"description": "Reaction rules for CI/PR events"
|
|
76
|
+
},
|
|
77
|
+
"plugins": {
|
|
78
|
+
"type": "object",
|
|
79
|
+
"properties": {
|
|
80
|
+
"tracker": { "type": "string" },
|
|
81
|
+
"scm": { "type": "string" },
|
|
82
|
+
"runtime": { "type": "string" },
|
|
83
|
+
"notifier": { "type": "string" }
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"definitions": {
|
|
91
|
+
"reactionRule": {
|
|
92
|
+
"type": "object",
|
|
93
|
+
"required": ["auto", "action"],
|
|
94
|
+
"properties": {
|
|
95
|
+
"auto": {
|
|
96
|
+
"type": "boolean",
|
|
97
|
+
"description": "Auto-trigger reaction when event occurs"
|
|
98
|
+
},
|
|
99
|
+
"action": {
|
|
100
|
+
"type": "string",
|
|
101
|
+
"enum": ["fix", "notify", "escalate", "skip"],
|
|
102
|
+
"description": "Action to take when reaction triggers"
|
|
103
|
+
},
|
|
104
|
+
"retries": {
|
|
105
|
+
"type": "integer",
|
|
106
|
+
"minimum": 0,
|
|
107
|
+
"maximum": 10,
|
|
108
|
+
"description": "Number of retry attempts"
|
|
109
|
+
},
|
|
110
|
+
"escalateAfter": {
|
|
111
|
+
"type": "integer",
|
|
112
|
+
"minimum": 1,
|
|
113
|
+
"maximum": 1440,
|
|
114
|
+
"description": "Minutes before escalating to human"
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Speexor Configuration Example
|
|
2
|
+
# Copy this file to your project root as speexor.config.yaml
|
|
3
|
+
|
|
4
|
+
version: "1"
|
|
5
|
+
|
|
6
|
+
projects:
|
|
7
|
+
- name: my-project
|
|
8
|
+
repository: https://github.com/your-username/your-repo
|
|
9
|
+
provider:
|
|
10
|
+
primary: opencode
|
|
11
|
+
fallback:
|
|
12
|
+
- claude-code
|
|
13
|
+
concurrentLimit: 3
|
|
14
|
+
|
|
15
|
+
reactions:
|
|
16
|
+
ci-failed:
|
|
17
|
+
auto: true
|
|
18
|
+
action: fix
|
|
19
|
+
retries: 3
|
|
20
|
+
escalateAfter: 30
|
|
21
|
+
changes-requested:
|
|
22
|
+
auto: true
|
|
23
|
+
action: fix
|
|
24
|
+
retries: 2
|
|
25
|
+
escalateAfter: 60
|
|
26
|
+
approved-and-green:
|
|
27
|
+
auto: false
|
|
28
|
+
action: notify
|
|
29
|
+
retries: 0
|
|
30
|
+
escalateAfter: 0
|