devchain-cli 0.7.2 → 0.8.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/dist/drizzle/0027_legal_malice.sql +17 -0
- package/dist/drizzle/0028_populate_provider_configs.sql +19 -0
- package/dist/drizzle/0029_merge_profiles_by_family_slug.sql +116 -0
- package/dist/drizzle/0030_set_agents_provider_config_id.sql +14 -0
- package/dist/drizzle/0031_remove_legacy_profile_columns.sql +68 -0
- package/dist/drizzle/0032_agents_provider_config_not_null.sql +52 -0
- package/dist/drizzle/0033_profile_provider_configs_name.sql +38 -0
- package/dist/drizzle/0034_sessions_agent_running_unique.sql +30 -0
- package/dist/drizzle/0035_provider_config_position.sql +26 -0
- package/dist/drizzle/PHASE2_MIGRATION_GUIDE.md +109 -0
- package/dist/drizzle/meta/0027_snapshot.json +3648 -0
- package/dist/drizzle/meta/0035_snapshot.json +3670 -0
- package/dist/drizzle/meta/_journal.json +64 -1
- package/dist/drizzle/migration-guard.sql +17 -0
- package/dist/drizzle/phase2-rollback.sql +44 -0
- package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts +101 -12
- package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts.map +1 -1
- package/dist/node_modules/@devchain/shared/schemas/export-schema.js +20 -0
- package/dist/node_modules/@devchain/shared/schemas/export-schema.js.map +1 -1
- package/dist/node_modules/@devchain/shared/tsconfig.tsbuildinfo +1 -1
- package/dist/server/modules/agents/controllers/agents.controller.d.ts +15 -0
- package/dist/server/modules/agents/controllers/agents.controller.js +120 -57
- package/dist/server/modules/agents/controllers/agents.controller.js.map +1 -1
- package/dist/server/modules/core/services/preflight.service.d.ts +6 -0
- package/dist/server/modules/core/services/preflight.service.js +143 -57
- package/dist/server/modules/core/services/preflight.service.js.map +1 -1
- package/dist/server/modules/epics/services/epics.service.d.ts +10 -4
- package/dist/server/modules/epics/services/epics.service.js +8 -5
- package/dist/server/modules/epics/services/epics.service.js.map +1 -1
- package/dist/server/modules/events/catalog/epic.created.d.ts +18 -0
- package/dist/server/modules/events/catalog/epic.created.js +8 -0
- package/dist/server/modules/events/catalog/epic.created.js.map +1 -1
- package/dist/server/modules/events/catalog/epic.updated.d.ts +18 -0
- package/dist/server/modules/events/catalog/epic.updated.js +8 -0
- package/dist/server/modules/events/catalog/epic.updated.js.map +1 -1
- package/dist/server/modules/events/catalog/index.d.ts +36 -0
- package/dist/server/modules/events/subscribers/epic-assignment-notifier.subscriber.d.ts +1 -0
- package/dist/server/modules/events/subscribers/epic-assignment-notifier.subscriber.js +33 -2
- package/dist/server/modules/events/subscribers/epic-assignment-notifier.subscriber.js.map +1 -1
- package/dist/server/modules/events/subscribers/review-comment-notifier.subscriber.js +12 -5
- package/dist/server/modules/events/subscribers/review-comment-notifier.subscriber.js.map +1 -1
- package/dist/server/modules/mcp/services/mcp.service.js +16 -2
- package/dist/server/modules/mcp/services/mcp.service.js.map +1 -1
- package/dist/server/modules/mcp/services/terminal-activity.service.d.ts +1 -1
- package/dist/server/modules/mcp/services/terminal-activity.service.js +22 -2
- package/dist/server/modules/mcp/services/terminal-activity.service.js.map +1 -1
- package/dist/server/modules/profiles/controllers/profiles.controller.d.ts +11 -8
- package/dist/server/modules/profiles/controllers/profiles.controller.js +88 -14
- package/dist/server/modules/profiles/controllers/profiles.controller.js.map +1 -1
- package/dist/server/modules/profiles/controllers/provider-configs.controller.d.ts +9 -0
- package/dist/server/modules/profiles/controllers/provider-configs.controller.js +94 -0
- package/dist/server/modules/profiles/controllers/provider-configs.controller.js.map +1 -0
- package/dist/server/modules/profiles/dto.d.ts +81 -6
- package/dist/server/modules/profiles/dto.js +45 -3
- package/dist/server/modules/profiles/dto.js.map +1 -1
- package/dist/server/modules/profiles/profiles.module.js +2 -1
- package/dist/server/modules/profiles/profiles.module.js.map +1 -1
- package/dist/server/modules/projects/controllers/projects.controller.d.ts +78 -19
- package/dist/server/modules/projects/controllers/projects.controller.js +243 -17
- package/dist/server/modules/projects/controllers/projects.controller.js.map +1 -1
- package/dist/server/modules/projects/dtos/export.dto.d.ts +44 -0
- package/dist/server/modules/projects/dtos/export.dto.js +10 -0
- package/dist/server/modules/projects/dtos/export.dto.js.map +1 -1
- package/dist/server/modules/projects/services/projects.service.d.ts +48 -11
- package/dist/server/modules/projects/services/projects.service.js +359 -27
- package/dist/server/modules/projects/services/projects.service.js.map +1 -1
- package/dist/server/modules/providers/controllers/providers.controller.js +12 -7
- package/dist/server/modules/providers/controllers/providers.controller.js.map +1 -1
- package/dist/server/modules/registry/controllers/templates.controller.d.ts +2 -2
- package/dist/server/modules/registry/services/registry-orchestration.service.js +11 -0
- package/dist/server/modules/registry/services/registry-orchestration.service.js.map +1 -1
- package/dist/server/modules/registry/services/template-upgrade.service.js +6 -0
- package/dist/server/modules/registry/services/template-upgrade.service.js.map +1 -1
- package/dist/server/modules/registry/services/unified-template.service.d.ts +2 -1
- package/dist/server/modules/registry/services/unified-template.service.js +61 -0
- package/dist/server/modules/registry/services/unified-template.service.js.map +1 -1
- package/dist/server/modules/reviews/services/reviews.service.js +8 -0
- package/dist/server/modules/reviews/services/reviews.service.js.map +1 -1
- package/dist/server/modules/sessions/services/activity-tracker.service.d.ts +2 -0
- package/dist/server/modules/sessions/services/activity-tracker.service.js +20 -0
- package/dist/server/modules/sessions/services/activity-tracker.service.js.map +1 -1
- package/dist/server/modules/sessions/services/sessions-message-pool.service.js +2 -2
- package/dist/server/modules/sessions/services/sessions-message-pool.service.js.map +1 -1
- package/dist/server/modules/sessions/services/sessions.service.d.ts +3 -1
- package/dist/server/modules/sessions/services/sessions.service.js +275 -144
- package/dist/server/modules/sessions/services/sessions.service.js.map +1 -1
- package/dist/server/modules/sessions/utils/env-builder.d.ts +8 -0
- package/dist/server/modules/sessions/utils/env-builder.js +62 -0
- package/dist/server/modules/sessions/utils/env-builder.js.map +1 -0
- package/dist/server/modules/settings/dtos/settings.dto.d.ts +84 -8
- package/dist/server/modules/settings/dtos/settings.dto.js +15 -2
- package/dist/server/modules/settings/dtos/settings.dto.js.map +1 -1
- package/dist/server/modules/settings/services/settings.service.d.ts +10 -1
- package/dist/server/modules/settings/services/settings.service.js +275 -0
- package/dist/server/modules/settings/services/settings.service.js.map +1 -1
- package/dist/server/modules/storage/db/db.provider.js +2 -0
- package/dist/server/modules/storage/db/db.provider.js.map +1 -1
- package/dist/server/modules/storage/db/schema.d.ts +185 -28
- package/dist/server/modules/storage/db/schema.js +32 -6
- package/dist/server/modules/storage/db/schema.js.map +1 -1
- package/dist/server/modules/storage/interfaces/storage.interface.d.ts +17 -1
- package/dist/server/modules/storage/interfaces/storage.interface.js.map +1 -1
- package/dist/server/modules/storage/local/local-storage.service.d.ts +15 -1
- package/dist/server/modules/storage/local/local-storage.service.js +352 -21
- package/dist/server/modules/storage/local/local-storage.service.js.map +1 -1
- package/dist/server/modules/storage/models/domain.models.d.ts +26 -7
- package/dist/server/modules/subscribers/actions/restart-agent.action.js +17 -19
- package/dist/server/modules/subscribers/actions/restart-agent.action.js.map +1 -1
- package/dist/server/modules/subscribers/events/event-fields-catalog.js +4 -0
- package/dist/server/modules/subscribers/events/event-fields-catalog.js.map +1 -1
- package/dist/server/modules/terminal/services/pty.service.js +6 -1
- package/dist/server/modules/terminal/services/pty.service.js.map +1 -1
- package/dist/server/modules/watchers/services/watcher-runner.service.js +27 -8
- package/dist/server/modules/watchers/services/watcher-runner.service.js.map +1 -1
- package/dist/{templates/claude-opus.json → server/templates/dev-loop.json} +365 -209
- package/dist/server/tsconfig.tsbuildinfo +1 -1
- package/dist/server/ui/assets/{ReviewDetailPage-I54h-2L-.js → ReviewDetailPage-YlFGGJv7.js} +2 -2
- package/dist/server/ui/assets/ReviewsPage-Diegg4jt.js +19 -0
- package/dist/server/ui/assets/index-DuMIsIyY.css +32 -0
- package/dist/server/ui/assets/index-sEtQpiB4.js +868 -0
- package/dist/server/ui/assets/{useReviewSubscription-C0GEsiRw.js → useReviewSubscription-CMhQ2m0h.js} +22 -22
- package/dist/server/ui/index.html +2 -2
- package/dist/{server/templates/claude-opus.json → templates/dev-loop.json} +365 -209
- package/package.json +9 -4
- package/dist/node_modules/@devchain/shared/schemas/export-schema.spec.d.ts +0 -2
- package/dist/node_modules/@devchain/shared/schemas/export-schema.spec.d.ts.map +0 -1
- package/dist/node_modules/@devchain/shared/schemas/export-schema.spec.js +0 -88
- package/dist/node_modules/@devchain/shared/schemas/export-schema.spec.js.map +0 -1
- package/dist/server/templates/claude-codex-advanced.json +0 -470
- package/dist/server/templates/simple-codex.json +0 -469
- package/dist/server/ui/assets/ReviewsPage-B4ua5hiX.js +0 -19
- package/dist/server/ui/assets/index-CqcmnFBh.css +0 -32
- package/dist/server/ui/assets/index-JbUMpbg7.js +0 -858
- package/dist/templates/claude-codex-advanced.json +0 -470
- package/dist/templates/simple-codex.json +0 -469
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devchain-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "AI driven development platform",
|
|
5
5
|
"homepage": "https://devchain.twitechlab.com/",
|
|
6
6
|
"repository": {
|
|
@@ -8,8 +8,13 @@
|
|
|
8
8
|
"url": "https://github.com/twitech-lab/devchain.git"
|
|
9
9
|
},
|
|
10
10
|
"changelog": {
|
|
11
|
-
"0.
|
|
12
|
-
"
|
|
11
|
+
"0.8.0": [
|
|
12
|
+
"Preset system in templates: switch your favorite AI teams with presets with a single click",
|
|
13
|
+
"Multi-provider support: support GLM models through Claude",
|
|
14
|
+
"Tab-independent project selection with hybrid storage",
|
|
15
|
+
"Activity signal filtering to prevent spurious agent busy states",
|
|
16
|
+
"Session fixes: duplicate agent sessions race condition, nested lock deadlock, timing delays for slower CLI providers",
|
|
17
|
+
"Details: https://devchain.twitechlab.com/releases/0.8.0/"
|
|
13
18
|
],
|
|
14
19
|
"0.7.1": [
|
|
15
20
|
"Template updates for Claude Code v2 compatibility"
|
|
@@ -186,7 +191,7 @@
|
|
|
186
191
|
"scripts": {
|
|
187
192
|
"start": "node dist/cli.js start",
|
|
188
193
|
"stop": "node scripts/cli.js stop",
|
|
189
|
-
"dev": "node scripts/cli.js start --dev",
|
|
194
|
+
"dev": "pnpm --filter shared build && node scripts/cli.js start --dev",
|
|
190
195
|
"dev:pure": "pnpm --filter local-app dev",
|
|
191
196
|
"dev:ui": "pnpm --filter local-app dev:ui",
|
|
192
197
|
"dev:api": "pnpm --filter remote-api dev",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"export-schema.spec.d.ts","sourceRoot":"","sources":["../../src/schemas/export-schema.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { ExportSchema } from './export-schema';
|
|
2
|
-
describe('ExportSchema', () => {
|
|
3
|
-
describe('profiles.familySlug', () => {
|
|
4
|
-
const baseProfile = {
|
|
5
|
-
name: 'Test Profile',
|
|
6
|
-
provider: { id: 'provider-1', name: 'claude' },
|
|
7
|
-
options: null,
|
|
8
|
-
instructions: null,
|
|
9
|
-
temperature: null,
|
|
10
|
-
maxTokens: null,
|
|
11
|
-
};
|
|
12
|
-
const baseTemplate = {
|
|
13
|
-
version: 1,
|
|
14
|
-
exportedAt: '2024-01-01T00:00:00Z',
|
|
15
|
-
prompts: [],
|
|
16
|
-
profiles: [baseProfile],
|
|
17
|
-
agents: [],
|
|
18
|
-
statuses: [],
|
|
19
|
-
};
|
|
20
|
-
it('should accept profile without familySlug (backward compatibility)', () => {
|
|
21
|
-
const result = ExportSchema.safeParse(baseTemplate);
|
|
22
|
-
expect(result.success).toBe(true);
|
|
23
|
-
});
|
|
24
|
-
it('should accept profile with familySlug as string', () => {
|
|
25
|
-
const template = {
|
|
26
|
-
...baseTemplate,
|
|
27
|
-
profiles: [{ ...baseProfile, familySlug: 'coder' }],
|
|
28
|
-
};
|
|
29
|
-
const result = ExportSchema.safeParse(template);
|
|
30
|
-
expect(result.success).toBe(true);
|
|
31
|
-
if (result.success) {
|
|
32
|
-
expect(result.data.profiles[0].familySlug).toBe('coder');
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
it('should accept profile with familySlug as null', () => {
|
|
36
|
-
const template = {
|
|
37
|
-
...baseTemplate,
|
|
38
|
-
profiles: [{ ...baseProfile, familySlug: null }],
|
|
39
|
-
};
|
|
40
|
-
const result = ExportSchema.safeParse(template);
|
|
41
|
-
expect(result.success).toBe(true);
|
|
42
|
-
if (result.success) {
|
|
43
|
-
expect(result.data.profiles[0].familySlug).toBeNull();
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
it('should reject profile with familySlug as non-string', () => {
|
|
47
|
-
const template = {
|
|
48
|
-
...baseTemplate,
|
|
49
|
-
profiles: [{ ...baseProfile, familySlug: 123 }],
|
|
50
|
-
};
|
|
51
|
-
const result = ExportSchema.safeParse(template);
|
|
52
|
-
expect(result.success).toBe(false);
|
|
53
|
-
});
|
|
54
|
-
it('should allow multiple profiles with same familySlug', () => {
|
|
55
|
-
const template = {
|
|
56
|
-
...baseTemplate,
|
|
57
|
-
profiles: [
|
|
58
|
-
{ ...baseProfile, name: 'CodeOpus', familySlug: 'coder' },
|
|
59
|
-
{ ...baseProfile, name: 'CodeGPT', familySlug: 'coder' },
|
|
60
|
-
],
|
|
61
|
-
};
|
|
62
|
-
const result = ExportSchema.safeParse(template);
|
|
63
|
-
expect(result.success).toBe(true);
|
|
64
|
-
if (result.success) {
|
|
65
|
-
expect(result.data.profiles[0].familySlug).toBe('coder');
|
|
66
|
-
expect(result.data.profiles[1].familySlug).toBe('coder');
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
it('should accept mixed profiles with and without familySlug', () => {
|
|
70
|
-
const template = {
|
|
71
|
-
...baseTemplate,
|
|
72
|
-
profiles: [
|
|
73
|
-
{ ...baseProfile, name: 'WithFamily', familySlug: 'coder' },
|
|
74
|
-
{ ...baseProfile, name: 'WithoutFamily' },
|
|
75
|
-
{ ...baseProfile, name: 'WithNull', familySlug: null },
|
|
76
|
-
],
|
|
77
|
-
};
|
|
78
|
-
const result = ExportSchema.safeParse(template);
|
|
79
|
-
expect(result.success).toBe(true);
|
|
80
|
-
if (result.success) {
|
|
81
|
-
expect(result.data.profiles[0].familySlug).toBe('coder');
|
|
82
|
-
expect(result.data.profiles[1].familySlug).toBeUndefined();
|
|
83
|
-
expect(result.data.profiles[2].familySlug).toBeNull();
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
//# sourceMappingURL=export-schema.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"export-schema.spec.js","sourceRoot":"","sources":["../../src/schemas/export-schema.spec.ts"],"names":[],"mappings":"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"}
|