The 4-step wizard is now fully live — nothing faked.
Backend (core + main):
- GiteaClient.createLabel (POST /labels).
- core/gitea/bootstrap.ts: SCHEMA_LABELS (the full est/p/deadline vocabulary with
colors+descriptions), applySchemaLabels (idempotent — creates only missing),
repoExists + ensurePmStateRepo (token-scoped, org vs personal endpoint). 7 tests.
- config:bootstrap IPC handler + preload bridge + BootstrapResult type.
Wizard:
- Connect step → live config.discover ('connected · N repos visible' is real).
- Repo step → owner dropdown + repo radios from the discovered repos.
- Bootstrap step → real: applies the label schema + ensures the pm-state sidecar,
shows the actual outcome (created vs already-present), then saves config.
- Gate: first run (no config) → wizard; reconnect (existing) → the compact card.
Removed the dead 'firstrun' dev view.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
140 lines
4.3 KiB
TypeScript
140 lines
4.3 KiB
TypeScript
export {
|
|
ESTIMATE_LABELS,
|
|
PRIORITY_LABELS,
|
|
HARD_DEADLINE_LABEL,
|
|
extractLabelFacts,
|
|
isCommiteaLabel,
|
|
parseEstimateLabel,
|
|
parsePriorityLabel,
|
|
} from './labels/label-schema.js'
|
|
export type { EstimateLabel, LabelFacts, PriorityLabel } from './labels/label-schema.js'
|
|
|
|
export { createGiteaClient, normalizeIssue, normalizeMilestone, normalizeTimeline } from './gitea/client.js'
|
|
export type { GiteaClient, ListIssuesOptions } from './gitea/client.js'
|
|
export { discoverRepos } from './gitea/discover.js'
|
|
export type { DiscoveredRepos } from './gitea/discover.js'
|
|
export { applySchemaLabels, ensurePmStateRepo, repoExists, SCHEMA_LABELS } from './gitea/bootstrap.js'
|
|
export type { LabelSyncResult, SchemaLabelDef } from './gitea/bootstrap.js'
|
|
export { GiteaApiError } from './gitea/types.js'
|
|
export type {
|
|
FetchLike,
|
|
GiteaConfig,
|
|
GiteaHttpResponse,
|
|
GiteaIssue,
|
|
GiteaLabel,
|
|
GiteaMilestone,
|
|
GiteaMilestoneRef,
|
|
GiteaRequestInit,
|
|
} from './gitea/types.js'
|
|
|
|
export { CACHE_SCHEMA, initCache, readIssue, upsertIssue } from './cache/cache-v0.js'
|
|
export type { CacheDriver } from './cache/cache-v0.js'
|
|
export { affectedIssues, coalesceKey, enqueueWrite, pendingWrites, replayQueue } from './queue/write-queue-v0.js'
|
|
export type { QueuedWrite } from './queue/write-queue-v0.js'
|
|
export { describeChange, isLabelChange, planIssueChange, proposalsFor, summarizeChange } from './changes/apply-changes-v0.js'
|
|
export type {
|
|
ChangeProposal,
|
|
IssueChange,
|
|
LabelChange,
|
|
LabelPlan,
|
|
ProposalContext,
|
|
ProposeChangeArgs,
|
|
} from './changes/apply-changes-v0.js'
|
|
|
|
export {
|
|
inferColumnV0,
|
|
inferLifecycle,
|
|
LIFECYCLE_COLUMNS,
|
|
workingDaysBetween,
|
|
} from './lifecycle/lifecycle-v0.js'
|
|
export type {
|
|
LifecycleColumn,
|
|
LifecycleEvent,
|
|
LifecycleEventType,
|
|
LifecycleInference,
|
|
LifecycleStages,
|
|
} from './lifecycle/lifecycle-v0.js'
|
|
|
|
export { DEFAULT_ESTIMATE_DAYS, schedule, selectFocus } from './scheduler/scheduler-v0.js'
|
|
export type {
|
|
DependencyEdge,
|
|
Focus,
|
|
SchedulableIssue,
|
|
ScheduledItem,
|
|
SchedulePlan,
|
|
} from './scheduler/scheduler-v0.js'
|
|
|
|
export { makespan, scheduleWithCapacity } from './scheduler/scheduler-capacity-v0.js'
|
|
export type { Worker } from './scheduler/scheduler-capacity-v0.js'
|
|
|
|
export { capacityPerWorkday, parseCapacityConfig } from './capacity/capacity-v0.js'
|
|
export type { CapacityMember } from './capacity/capacity-v0.js'
|
|
|
|
export {
|
|
COLD_START_PRIORS,
|
|
durationParams,
|
|
forecast,
|
|
nearestBucket,
|
|
PRIOR_BUCKETS,
|
|
priorForEstimate,
|
|
} from './forecast/forecast-v0.js'
|
|
export type {
|
|
BurnUpPoint,
|
|
DurationModel,
|
|
Forecast,
|
|
ForecastOptions,
|
|
LognormalPrior,
|
|
} from './forecast/forecast-v0.js'
|
|
|
|
export {
|
|
CALIBRATION_BUCKET_FLOOR,
|
|
calibrationCoverage,
|
|
calibrationSamples,
|
|
COLD_START_THRESHOLD,
|
|
fitCalibration,
|
|
toDurationModel,
|
|
} from './calibration/calibration-v0.js'
|
|
export type {
|
|
BucketFit,
|
|
CalibrationCoverage,
|
|
CalibrationModel,
|
|
CalibrationSample,
|
|
PersonBias,
|
|
} from './calibration/calibration-v0.js'
|
|
|
|
export { createChatClient } from './agent/chat-client.js'
|
|
export type { ChatClient, ChatMessage, CompletionResult, ModelConfig, OnToken, ToolCall, ToolDecl } from './agent/chat-client.js'
|
|
export { pickModel } from './agent/model-router.js'
|
|
export type { ModelRouter, TaskKind } from './agent/model-router.js'
|
|
export { runAgentTurn } from './agent/agent-loop.js'
|
|
export type { AgentStep, AgentTurn, ToolExecutor } from './agent/agent-loop.js'
|
|
export {
|
|
PROPOSE_CHANGE_TOOL,
|
|
QUERY_PROJECT_TOOL,
|
|
RECORD_DIRECTIVE_TOOL,
|
|
REGINALD_SYSTEM,
|
|
REGINALD_TOOLS,
|
|
} from './agent/agent-tools.js'
|
|
export { buildProjectView } from './agent/query-project.js'
|
|
export type { ProjectSnapshot, ProjectView, QueryFilters } from './agent/query-project.js'
|
|
export { activeDirectives, assembleHotContext, estimateTokens, HOT_CONTEXT_BUDGET_TOKENS } from './agent/memory-v0.js'
|
|
export type { HotContextInputs } from './agent/memory-v0.js'
|
|
export { CAPTURE_SYSTEM, captureWork, parseCaptureArgs, PROPOSE_ISSUES_TOOL } from './agent/capture-work.js'
|
|
export type { CaptureProposal, ProposedIssue } from './agent/capture-work.js'
|
|
|
|
export {
|
|
appendDirective,
|
|
makeDirectiveEntry,
|
|
parseDirectiveLog,
|
|
serializeDirective,
|
|
toDirectiveInput,
|
|
} from './directives/record-directive-v0.js'
|
|
export type {
|
|
DirectiveEntry,
|
|
DirectiveInput,
|
|
DirectiveKind,
|
|
DirectiveRecord,
|
|
DirectiveStatus,
|
|
DirectiveTarget,
|
|
} from './directives/record-directive-v0.js'
|