devcouncil 0.2.0 → 0.2.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.
- package/README.md +144 -308
- package/bin/devcouncil.js +130 -32
- package/package.json +22 -19
- package/pyproject.toml +0 -66
- package/src/devcouncil/__init__.py +0 -0
- package/src/devcouncil/__main__.py +0 -4
- package/src/devcouncil/app/__init__.py +0 -28
- package/src/devcouncil/app/config.py +0 -320
- package/src/devcouncil/app/errors.py +0 -23
- package/src/devcouncil/app/events.py +0 -44
- package/src/devcouncil/app/orchestrator.py +0 -92
- package/src/devcouncil/app/project_status.py +0 -29
- package/src/devcouncil/app/run_context.py +0 -39
- package/src/devcouncil/app/state_machine.py +0 -108
- package/src/devcouncil/artifacts/__init__.py +0 -1
- package/src/devcouncil/artifacts/coverage.py +0 -96
- package/src/devcouncil/artifacts/graph.py +0 -163
- package/src/devcouncil/artifacts/migrations.py +0 -20
- package/src/devcouncil/artifacts/schemas.py +0 -23
- package/src/devcouncil/artifacts/serializer.py +0 -21
- package/src/devcouncil/artifacts/validators.py +0 -27
- package/src/devcouncil/assets/__init__.py +0 -1
- package/src/devcouncil/assets/devcouncil-logo.svg +0 -60
- package/src/devcouncil/assets/devcouncil_logo_premium.png +0 -0
- package/src/devcouncil/cli/__init__.py +0 -0
- package/src/devcouncil/cli/commands/__init__.py +0 -0
- package/src/devcouncil/cli/commands/agents.py +0 -292
- package/src/devcouncil/cli/commands/artifacts.py +0 -54
- package/src/devcouncil/cli/commands/ast.py +0 -22
- package/src/devcouncil/cli/commands/baseline.py +0 -35
- package/src/devcouncil/cli/commands/check.py +0 -209
- package/src/devcouncil/cli/commands/config.py +0 -115
- package/src/devcouncil/cli/commands/cost.py +0 -57
- package/src/devcouncil/cli/commands/dashboard.py +0 -31
- package/src/devcouncil/cli/commands/doctor.py +0 -340
- package/src/devcouncil/cli/commands/evidence.py +0 -48
- package/src/devcouncil/cli/commands/go.py +0 -656
- package/src/devcouncil/cli/commands/handoff.py +0 -69
- package/src/devcouncil/cli/commands/hook.py +0 -237
- package/src/devcouncil/cli/commands/init.py +0 -289
- package/src/devcouncil/cli/commands/integrate.py +0 -1515
- package/src/devcouncil/cli/commands/lsp.py +0 -20
- package/src/devcouncil/cli/commands/map.py +0 -112
- package/src/devcouncil/cli/commands/mcp_server.py +0 -18
- package/src/devcouncil/cli/commands/plan.py +0 -488
- package/src/devcouncil/cli/commands/prompt.py +0 -61
- package/src/devcouncil/cli/commands/repair.py +0 -89
- package/src/devcouncil/cli/commands/report.py +0 -137
- package/src/devcouncil/cli/commands/reset_demo_state.py +0 -33
- package/src/devcouncil/cli/commands/rollback.py +0 -59
- package/src/devcouncil/cli/commands/run.py +0 -289
- package/src/devcouncil/cli/commands/runs.py +0 -223
- package/src/devcouncil/cli/commands/scaffold.py +0 -32
- package/src/devcouncil/cli/commands/semantic.py +0 -47
- package/src/devcouncil/cli/commands/setup.py +0 -362
- package/src/devcouncil/cli/commands/shell.py +0 -73
- package/src/devcouncil/cli/commands/show.py +0 -76
- package/src/devcouncil/cli/commands/skills.py +0 -88
- package/src/devcouncil/cli/commands/status.py +0 -141
- package/src/devcouncil/cli/commands/tasks.py +0 -55
- package/src/devcouncil/cli/commands/trace.py +0 -88
- package/src/devcouncil/cli/commands/verify.py +0 -328
- package/src/devcouncil/cli/commands/version.py +0 -20
- package/src/devcouncil/cli/commands/watch.py +0 -574
- package/src/devcouncil/cli/commands/watch_fs.py +0 -40
- package/src/devcouncil/cli/main.py +0 -137
- package/src/devcouncil/council/__init__.py +0 -0
- package/src/devcouncil/council/prompts/__init__.py +0 -0
- package/src/devcouncil/council/prompts/arbiter.md +0 -19
- package/src/devcouncil/council/prompts/critic_a.md +0 -10
- package/src/devcouncil/council/prompts/critic_b.md +0 -10
- package/src/devcouncil/council/prompts/implementation_reviewer.md +0 -16
- package/src/devcouncil/council/prompts/planner_a.md +0 -16
- package/src/devcouncil/council/prompts/planner_b.md +0 -16
- package/src/devcouncil/council/prompts/rebuttal.md +0 -10
- package/src/devcouncil/council/prompts/spec_writer.md +0 -12
- package/src/devcouncil/domain/__init__.py +0 -0
- package/src/devcouncil/domain/assumption.py +0 -17
- package/src/devcouncil/domain/critique.py +0 -32
- package/src/devcouncil/domain/evidence.py +0 -47
- package/src/devcouncil/domain/gap.py +0 -52
- package/src/devcouncil/domain/requirement.py +0 -22
- package/src/devcouncil/domain/task.py +0 -55
- package/src/devcouncil/execution/__init__.py +0 -1
- package/src/devcouncil/execution/checkpoints.py +0 -246
- package/src/devcouncil/execution/context_builder.py +0 -60
- package/src/devcouncil/execution/executor.py +0 -15
- package/src/devcouncil/execution/fs_watcher.py +0 -180
- package/src/devcouncil/execution/handoff.py +0 -102
- package/src/devcouncil/execution/hook_policy.py +0 -253
- package/src/devcouncil/execution/patch.py +0 -77
- package/src/devcouncil/execution/paths.py +0 -14
- package/src/devcouncil/execution/permissions.py +0 -85
- package/src/devcouncil/execution/policy_engine.py +0 -343
- package/src/devcouncil/execution/prompt_builder.py +0 -671
- package/src/devcouncil/execution/shell_session.py +0 -225
- package/src/devcouncil/execution/task_runner.py +0 -170
- package/src/devcouncil/executors/__init__.py +0 -1
- package/src/devcouncil/executors/agent_registry.py +0 -575
- package/src/devcouncil/executors/coding_cli.py +0 -736
- package/src/devcouncil/executors/mini_swe.py +0 -73
- package/src/devcouncil/executors/native/__init__.py +0 -0
- package/src/devcouncil/executors/native/agent.py +0 -208
- package/src/devcouncil/executors/openhands.py +0 -71
- package/src/devcouncil/gating/__init__.py +0 -1
- package/src/devcouncil/gating/checks/__init__.py +0 -0
- package/src/devcouncil/gating/checks/clean_git.py +0 -52
- package/src/devcouncil/gating/checks/planned_files_check.py +0 -32
- package/src/devcouncil/gating/checks/requirement_coverage.py +0 -26
- package/src/devcouncil/gating/checks/secret_scan_check.py +0 -53
- package/src/devcouncil/gating/policy.py +0 -338
- package/src/devcouncil/hardware.py +0 -184
- package/src/devcouncil/indexing/__init__.py +0 -1
- package/src/devcouncil/indexing/ast_matcher.py +0 -168
- package/src/devcouncil/indexing/graph_index.py +0 -48
- package/src/devcouncil/indexing/lsp.py +0 -161
- package/src/devcouncil/indexing/repo_mapper.py +0 -1455
- package/src/devcouncil/indexing/semantic_index.py +0 -205
- package/src/devcouncil/integrations/actions.py +0 -146
- package/src/devcouncil/integrations/check.py +0 -423
- package/src/devcouncil/integrations/code_review_graph.py +0 -163
- package/src/devcouncil/integrations/github.py +0 -39
- package/src/devcouncil/integrations/github_intent.py +0 -142
- package/src/devcouncil/integrations/gitnexus.py +0 -62
- package/src/devcouncil/integrations/graphify.py +0 -34
- package/src/devcouncil/integrations/mcp/__init__.py +0 -0
- package/src/devcouncil/integrations/mcp/server.py +0 -2122
- package/src/devcouncil/integrations/opencode_devcouncil_plugin.mjs +0 -24
- package/src/devcouncil/integrations/pr_comments.py +0 -62
- package/src/devcouncil/live/__init__.py +0 -2
- package/src/devcouncil/live/cards.py +0 -349
- package/src/devcouncil/live/models.py +0 -63
- package/src/devcouncil/live/repair_prompt.py +0 -83
- package/src/devcouncil/live/reviewer.py +0 -70
- package/src/devcouncil/live/signals.py +0 -135
- package/src/devcouncil/live/summary.py +0 -34
- package/src/devcouncil/live/tasks.py +0 -18
- package/src/devcouncil/live/transcripts.py +0 -141
- package/src/devcouncil/llm/__init__.py +0 -1
- package/src/devcouncil/llm/cache.py +0 -42
- package/src/devcouncil/llm/model_defaults.yaml +0 -44
- package/src/devcouncil/llm/provider.py +0 -627
- package/src/devcouncil/llm/router.py +0 -310
- package/src/devcouncil/optimization/__init__.py +0 -1
- package/src/devcouncil/optimization/gepa_agent.py +0 -318
- package/src/devcouncil/planning/__init__.py +0 -1
- package/src/devcouncil/planning/arbiter_service.py +0 -57
- package/src/devcouncil/planning/correction_manifest.py +0 -303
- package/src/devcouncil/planning/critique_service.py +0 -71
- package/src/devcouncil/planning/plan_service.py +0 -60
- package/src/devcouncil/planning/prompt_enhancer_service.py +0 -167
- package/src/devcouncil/planning/repair_service.py +0 -39
- package/src/devcouncil/planning/spec_service.py +0 -70
- package/src/devcouncil/repo/__init__.py +0 -0
- package/src/devcouncil/repo/ci_scaffold.py +0 -157
- package/src/devcouncil/repo/gitignore.py +0 -123
- package/src/devcouncil/repo/sca.py +0 -374
- package/src/devcouncil/reporting/__init__.py +0 -0
- package/src/devcouncil/reporting/github_check.py +0 -32
- package/src/devcouncil/reporting/json_report.py +0 -30
- package/src/devcouncil/reporting/markdown_report.py +0 -83
- package/src/devcouncil/reporting/report_builder.py +0 -14
- package/src/devcouncil/skills/__init__.py +0 -19
- package/src/devcouncil/skills/library/README.md +0 -46
- package/src/devcouncil/skills/library/ai-training.md +0 -50
- package/src/devcouncil/skills/library/android.md +0 -50
- package/src/devcouncil/skills/library/backend.md +0 -52
- package/src/devcouncil/skills/library/core-engineering.md +0 -95
- package/src/devcouncil/skills/library/data-engineering.md +0 -47
- package/src/devcouncil/skills/library/desktop.md +0 -46
- package/src/devcouncil/skills/library/devops.md +0 -48
- package/src/devcouncil/skills/library/game-dev.md +0 -46
- package/src/devcouncil/skills/library/ios.md +0 -48
- package/src/devcouncil/skills/library/mobile-cross-platform.md +0 -46
- package/src/devcouncil/skills/library/security.md +0 -48
- package/src/devcouncil/skills/library/systems.md +0 -48
- package/src/devcouncil/skills/library/web.md +0 -47
- package/src/devcouncil/skills/library/windows.md +0 -47
- package/src/devcouncil/skills/registry.py +0 -330
- package/src/devcouncil/storage/__init__.py +0 -0
- package/src/devcouncil/storage/db.py +0 -147
- package/src/devcouncil/storage/models.py +0 -204
- package/src/devcouncil/storage/native.py +0 -557
- package/src/devcouncil/storage/repositories.py +0 -485
- package/src/devcouncil/telemetry/__init__.py +0 -0
- package/src/devcouncil/telemetry/cost.py +0 -140
- package/src/devcouncil/telemetry/model_pricing.yaml +0 -48
- package/src/devcouncil/telemetry/pricing.py +0 -28
- package/src/devcouncil/telemetry/traces.py +0 -146
- package/src/devcouncil/telemetry/tracker.py +0 -52
- package/src/devcouncil/ui/__init__.py +0 -1
- package/src/devcouncil/ui/dashboard.py +0 -423
- package/src/devcouncil/utils/__init__.py +0 -1
- package/src/devcouncil/utils/redaction.py +0 -147
- package/src/devcouncil/utils/subprocess_env.py +0 -69
- package/src/devcouncil/verification/__init__.py +0 -1
- package/src/devcouncil/verification/acceptance_compiler.py +0 -125
- package/src/devcouncil/verification/ad_hoc_check.py +0 -129
- package/src/devcouncil/verification/diff_coverage.py +0 -353
- package/src/devcouncil/verification/implementation_reviewer.py +0 -55
- package/src/devcouncil/verification/next_actions.py +0 -189
- package/src/devcouncil/verification/sandbox.py +0 -178
- package/src/devcouncil/verification/test_resolver.py +0 -91
- package/src/devcouncil/verification/verifier.py +0 -1548
- package/uv.lock +0 -1226
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
from sqlmodel import SQLModel, Field
|
|
2
|
-
from sqlalchemy import Index, text
|
|
3
|
-
from typing import Optional
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class SchemaVersionModel(SQLModel, table=True):
|
|
7
|
-
__tablename__ = "schema_version"
|
|
8
|
-
id: str = Field(primary_key=True, default="singleton")
|
|
9
|
-
version: int
|
|
10
|
-
|
|
11
|
-
class RequirementModel(SQLModel, table=True):
|
|
12
|
-
__tablename__ = "requirements"
|
|
13
|
-
id: str = Field(primary_key=True)
|
|
14
|
-
title: str
|
|
15
|
-
description: str
|
|
16
|
-
priority: str
|
|
17
|
-
source: str
|
|
18
|
-
# Store complex lists as JSON strings for simplicity in SQLite
|
|
19
|
-
acceptance_criteria_json: str = Field(default="[]")
|
|
20
|
-
|
|
21
|
-
class AssumptionModel(SQLModel, table=True):
|
|
22
|
-
__tablename__ = "assumptions"
|
|
23
|
-
id: str = Field(primary_key=True)
|
|
24
|
-
statement: str
|
|
25
|
-
confidence: str
|
|
26
|
-
impact: str
|
|
27
|
-
reversible: bool
|
|
28
|
-
requires_user_confirmation: bool
|
|
29
|
-
linked_requirement_ids_json: str = Field(default="[]")
|
|
30
|
-
status: str = "open"
|
|
31
|
-
|
|
32
|
-
class TaskModel(SQLModel, table=True):
|
|
33
|
-
__tablename__ = "tasks"
|
|
34
|
-
id: str = Field(primary_key=True)
|
|
35
|
-
title: str
|
|
36
|
-
description: str
|
|
37
|
-
requirement_ids_json: str = Field(default="[]")
|
|
38
|
-
acceptance_criterion_ids_json: str = Field(default="[]")
|
|
39
|
-
planned_files_json: str = Field(default="[]")
|
|
40
|
-
expected_tests_json: str = Field(default="[]")
|
|
41
|
-
allowed_commands_json: str = Field(default="[]")
|
|
42
|
-
forbidden_changes_json: str = Field(default="[]")
|
|
43
|
-
status: str = "planned"
|
|
44
|
-
|
|
45
|
-
class EvidenceModel(SQLModel, table=True):
|
|
46
|
-
__tablename__ = "evidence"
|
|
47
|
-
id: Optional[int] = Field(default=None, primary_key=True)
|
|
48
|
-
type: str # "command", "diff", "test"
|
|
49
|
-
task_id: Optional[str] = None
|
|
50
|
-
requirement_id: Optional[str] = None
|
|
51
|
-
acceptance_criterion_id: Optional[str] = None
|
|
52
|
-
data_json: str
|
|
53
|
-
|
|
54
|
-
class GapModel(SQLModel, table=True):
|
|
55
|
-
__tablename__ = "gaps"
|
|
56
|
-
id: str = Field(primary_key=True)
|
|
57
|
-
severity: str
|
|
58
|
-
gap_type: str
|
|
59
|
-
requirement_id: Optional[str] = None
|
|
60
|
-
task_id: Optional[str] = None
|
|
61
|
-
description: str
|
|
62
|
-
evidence_json: str = Field(default="[]")
|
|
63
|
-
recommended_fix: str
|
|
64
|
-
blocking: bool
|
|
65
|
-
# Machine-routable repair hints. Persisted (v4) so the typed next-actions
|
|
66
|
-
# contract survives a reload — a reconnecting/crashed agent can read outstanding
|
|
67
|
-
# gaps without the heuristic reconstruction the loader used to fall back to.
|
|
68
|
-
file: Optional[str] = None
|
|
69
|
-
line: Optional[int] = None
|
|
70
|
-
suggested_command: Optional[str] = None
|
|
71
|
-
acceptance_criterion_id: Optional[str] = None
|
|
72
|
-
|
|
73
|
-
class CritiqueFindingModel(SQLModel, table=True):
|
|
74
|
-
__tablename__ = "critique_findings"
|
|
75
|
-
id: str = Field(primary_key=True)
|
|
76
|
-
source_agent: str
|
|
77
|
-
target_plan_id: str
|
|
78
|
-
severity: str
|
|
79
|
-
finding_type: str
|
|
80
|
-
claim: str
|
|
81
|
-
linked_requirement_id: Optional[str] = None
|
|
82
|
-
suggested_requirement: Optional[str] = None
|
|
83
|
-
suggested_task: Optional[str] = None
|
|
84
|
-
falsifiable_check: str
|
|
85
|
-
status: str = "open"
|
|
86
|
-
|
|
87
|
-
class ProjectStateModel(SQLModel, table=True):
|
|
88
|
-
__tablename__ = "project_state"
|
|
89
|
-
id: str = Field(primary_key=True, default="singleton")
|
|
90
|
-
current_phase: str
|
|
91
|
-
history_json: str = Field(default="[]")
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
class TaskLeaseModel(SQLModel, table=True):
|
|
95
|
-
__tablename__ = "task_leases"
|
|
96
|
-
# Enforce the single-writer guarantee at the DB level: at most one ACTIVE lease per
|
|
97
|
-
# task. A partial unique index turns a concurrent double-checkout race into an
|
|
98
|
-
# IntegrityError (surfaced as lease_conflict) instead of two live leases.
|
|
99
|
-
__table_args__ = (
|
|
100
|
-
Index(
|
|
101
|
-
"ux_task_leases_active",
|
|
102
|
-
"task_id",
|
|
103
|
-
unique=True,
|
|
104
|
-
sqlite_where=text("status = 'active'"),
|
|
105
|
-
),
|
|
106
|
-
)
|
|
107
|
-
id: str = Field(primary_key=True)
|
|
108
|
-
task_id: str = Field(index=True)
|
|
109
|
-
owner: str
|
|
110
|
-
agent: Optional[str] = None
|
|
111
|
-
client_id: Optional[str] = None
|
|
112
|
-
run_id: Optional[str] = None
|
|
113
|
-
branch: Optional[str] = None
|
|
114
|
-
lease_token: str
|
|
115
|
-
status: str = Field(default="active", index=True)
|
|
116
|
-
created_at: str
|
|
117
|
-
expires_at: Optional[str] = None
|
|
118
|
-
released_at: Optional[str] = None
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
class ShellSessionModel(SQLModel, table=True):
|
|
122
|
-
__tablename__ = "shell_sessions"
|
|
123
|
-
id: str = Field(primary_key=True)
|
|
124
|
-
task_id: str = Field(index=True)
|
|
125
|
-
lease_id: Optional[str] = None
|
|
126
|
-
shell: str
|
|
127
|
-
cwd: str
|
|
128
|
-
status: str
|
|
129
|
-
started_at: str
|
|
130
|
-
ended_at: Optional[str] = None
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
class ShellCommandEventModel(SQLModel, table=True):
|
|
134
|
-
__tablename__ = "shell_command_events"
|
|
135
|
-
id: Optional[int] = Field(default=None, primary_key=True)
|
|
136
|
-
task_id: str = Field(index=True)
|
|
137
|
-
session_id: Optional[str] = None
|
|
138
|
-
command: str
|
|
139
|
-
status: str
|
|
140
|
-
exit_code: Optional[int] = None
|
|
141
|
-
reason: str = ""
|
|
142
|
-
stdout_path: str = ""
|
|
143
|
-
stderr_path: str = ""
|
|
144
|
-
created_at: str
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
class FileChangeEventModel(SQLModel, table=True):
|
|
148
|
-
__tablename__ = "file_change_events"
|
|
149
|
-
id: Optional[int] = Field(default=None, primary_key=True)
|
|
150
|
-
task_id: Optional[str] = Field(default=None, index=True)
|
|
151
|
-
lease_id: Optional[str] = None
|
|
152
|
-
session_id: Optional[str] = None
|
|
153
|
-
path: str
|
|
154
|
-
operation: str
|
|
155
|
-
allowed: bool
|
|
156
|
-
reason: str = ""
|
|
157
|
-
created_at: str
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
class SemanticDiffModel(SQLModel, table=True):
|
|
161
|
-
__tablename__ = "semantic_diffs"
|
|
162
|
-
id: Optional[int] = Field(default=None, primary_key=True)
|
|
163
|
-
task_id: str = Field(index=True)
|
|
164
|
-
before_snapshot_path: str
|
|
165
|
-
after_snapshot_path: str
|
|
166
|
-
classifications_json: str = "[]"
|
|
167
|
-
summary: str = ""
|
|
168
|
-
created_at: str
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
class AgentHandoffModel(SQLModel, table=True):
|
|
172
|
-
__tablename__ = "agent_handoffs"
|
|
173
|
-
id: str = Field(primary_key=True)
|
|
174
|
-
task_id: str = Field(index=True)
|
|
175
|
-
from_agent: str
|
|
176
|
-
to_agent: str
|
|
177
|
-
run_id: str
|
|
178
|
-
manifest_path: str
|
|
179
|
-
status: str
|
|
180
|
-
created_at: str
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
class CorrectionManifestModel(SQLModel, table=True):
|
|
184
|
-
__tablename__ = "correction_manifests"
|
|
185
|
-
id: str = Field(primary_key=True)
|
|
186
|
-
task_id: str = Field(index=True)
|
|
187
|
-
run_id: Optional[str] = None
|
|
188
|
-
manifest_path: str
|
|
189
|
-
retry_budget: int = 3
|
|
190
|
-
attempt: int = 0
|
|
191
|
-
status: str
|
|
192
|
-
created_at: str
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
class VerificationRunModel(SQLModel, table=True):
|
|
196
|
-
__tablename__ = "verification_runs"
|
|
197
|
-
id: str = Field(primary_key=True)
|
|
198
|
-
task_id: str = Field(index=True)
|
|
199
|
-
sandbox: str
|
|
200
|
-
environment_json: str = "{}"
|
|
201
|
-
commands_json: str = "[]"
|
|
202
|
-
status: str
|
|
203
|
-
started_at: str
|
|
204
|
-
finished_at: Optional[str] = None
|