@bradygaster/squad-sdk 0.9.1 → 0.9.2-insider.1
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 +340 -296
- package/dist/agents/history-shadow.d.ts +7 -5
- package/dist/agents/history-shadow.d.ts.map +1 -1
- package/dist/agents/history-shadow.js +69 -78
- package/dist/agents/history-shadow.js.map +1 -1
- package/dist/agents/index.d.ts +12 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +62 -9
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/lifecycle.d.ts +4 -0
- package/dist/agents/lifecycle.d.ts.map +1 -1
- package/dist/agents/lifecycle.js +6 -7
- package/dist/agents/lifecycle.js.map +1 -1
- package/dist/agents/onboarding.d.ts +4 -2
- package/dist/agents/onboarding.d.ts.map +1 -1
- package/dist/agents/onboarding.js +26 -16
- package/dist/agents/onboarding.js.map +1 -1
- package/dist/agents/personal.d.ts +2 -1
- package/dist/agents/personal.d.ts.map +1 -1
- package/dist/agents/personal.js +11 -12
- package/dist/agents/personal.js.map +1 -1
- package/dist/build/bundle.d.ts.map +1 -1
- package/dist/build/bundle.js +6 -6
- package/dist/build/bundle.js.map +1 -1
- package/dist/build/github-dist.js +42 -42
- package/dist/build/release.d.ts.map +1 -1
- package/dist/build/release.js +7 -5
- package/dist/build/release.js.map +1 -1
- package/dist/casting/index.d.ts.map +1 -1
- package/dist/casting/index.js +4 -3
- package/dist/casting/index.js.map +1 -1
- package/dist/config/agent-source.d.ts +5 -1
- package/dist/config/agent-source.d.ts.map +1 -1
- package/dist/config/agent-source.js +85 -41
- package/dist/config/agent-source.js.map +1 -1
- package/dist/config/init.d.ts +4 -3
- package/dist/config/init.d.ts.map +1 -1
- package/dist/config/init.js +257 -236
- package/dist/config/init.js.map +1 -1
- package/dist/config/legacy-fallback.d.ts +3 -2
- package/dist/config/legacy-fallback.d.ts.map +1 -1
- package/dist/config/legacy-fallback.js +16 -14
- package/dist/config/legacy-fallback.js.map +1 -1
- package/dist/config/models.d.ts +9 -6
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +35 -25
- package/dist/config/models.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -1
- package/dist/index.js.map +1 -1
- package/dist/marketplace/packaging.d.ts.map +1 -1
- package/dist/marketplace/packaging.js +18 -16
- package/dist/marketplace/packaging.js.map +1 -1
- package/dist/multi-squad.d.ts.map +1 -1
- package/dist/multi-squad.js +10 -9
- package/dist/multi-squad.js.map +1 -1
- package/dist/platform/comms-file-log.d.ts.map +1 -1
- package/dist/platform/comms-file-log.js +7 -6
- package/dist/platform/comms-file-log.js.map +1 -1
- package/dist/platform/comms.d.ts.map +1 -1
- package/dist/platform/comms.js +6 -5
- package/dist/platform/comms.js.map +1 -1
- package/dist/platform/index.d.ts.map +1 -1
- package/dist/platform/index.js +4 -3
- package/dist/platform/index.js.map +1 -1
- package/dist/ralph/capabilities.d.ts +30 -1
- package/dist/ralph/capabilities.d.ts.map +1 -1
- package/dist/ralph/capabilities.js +51 -6
- package/dist/ralph/capabilities.js.map +1 -1
- package/dist/ralph/index.d.ts +1 -1
- package/dist/ralph/index.d.ts.map +1 -1
- package/dist/ralph/index.js +4 -3
- package/dist/ralph/index.js.map +1 -1
- package/dist/ralph/rate-limiting.d.ts.map +1 -1
- package/dist/ralph/rate-limiting.js +4 -4
- package/dist/ralph/rate-limiting.js.map +1 -1
- package/dist/remote/bridge.d.ts.map +1 -1
- package/dist/remote/bridge.js +2 -2
- package/dist/remote/bridge.js.map +1 -1
- package/dist/resolution.d.ts +9 -0
- package/dist/resolution.d.ts.map +1 -1
- package/dist/resolution.js +39 -16
- package/dist/resolution.js.map +1 -1
- package/dist/roles/catalog.d.ts +1 -1
- package/dist/runtime/config.d.ts.map +1 -1
- package/dist/runtime/config.js +8 -7
- package/dist/runtime/config.js.map +1 -1
- package/dist/runtime/cross-squad.d.ts.map +1 -1
- package/dist/runtime/cross-squad.js +8 -7
- package/dist/runtime/cross-squad.js.map +1 -1
- package/dist/runtime/scheduler.d.ts.map +1 -1
- package/dist/runtime/scheduler.js +8 -8
- package/dist/runtime/scheduler.js.map +1 -1
- package/dist/runtime/squad-observer.d.ts.map +1 -1
- package/dist/runtime/squad-observer.js +7 -4
- package/dist/runtime/squad-observer.js.map +1 -1
- package/dist/sharing/consult.d.ts +1 -1
- package/dist/sharing/consult.d.ts.map +1 -1
- package/dist/sharing/consult.js +144 -142
- package/dist/sharing/consult.js.map +1 -1
- package/dist/sharing/export.d.ts.map +1 -1
- package/dist/sharing/export.js +16 -16
- package/dist/sharing/export.js.map +1 -1
- package/dist/sharing/import.d.ts.map +1 -1
- package/dist/sharing/import.js +13 -12
- package/dist/sharing/import.js.map +1 -1
- package/dist/skills/skill-loader.d.ts.map +1 -1
- package/dist/skills/skill-loader.js +10 -9
- package/dist/skills/skill-loader.js.map +1 -1
- package/dist/skills/skill-script-loader.d.ts.map +1 -1
- package/dist/skills/skill-script-loader.js +6 -4
- package/dist/skills/skill-script-loader.js.map +1 -1
- package/dist/skills/skill-source.d.ts +3 -1
- package/dist/skills/skill-source.d.ts.map +1 -1
- package/dist/skills/skill-source.js +18 -16
- package/dist/skills/skill-source.js.map +1 -1
- package/dist/state/collection-map.d.ts +43 -0
- package/dist/state/collection-map.d.ts.map +1 -0
- package/dist/state/collection-map.js +9 -0
- package/dist/state/collection-map.js.map +1 -0
- package/dist/state/collections.d.ts +102 -0
- package/dist/state/collections.d.ts.map +1 -0
- package/dist/state/collections.js +317 -0
- package/dist/state/collections.js.map +1 -0
- package/dist/state/domain-types.d.ts +122 -0
- package/dist/state/domain-types.d.ts.map +1 -0
- package/dist/state/domain-types.js +54 -0
- package/dist/state/domain-types.js.map +1 -0
- package/dist/state/handles.d.ts +16 -0
- package/dist/state/handles.d.ts.map +1 -0
- package/dist/state/handles.js +161 -0
- package/dist/state/handles.js.map +1 -0
- package/dist/state/index.d.ts +17 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +15 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/io/charter-io.d.ts +28 -0
- package/dist/state/io/charter-io.d.ts.map +1 -0
- package/dist/state/io/charter-io.js +94 -0
- package/dist/state/io/charter-io.js.map +1 -0
- package/dist/state/io/decisions-io.d.ts +42 -0
- package/dist/state/io/decisions-io.d.ts.map +1 -0
- package/dist/state/io/decisions-io.js +66 -0
- package/dist/state/io/decisions-io.js.map +1 -0
- package/dist/state/io/history-io.d.ts +37 -0
- package/dist/state/io/history-io.d.ts.map +1 -0
- package/dist/state/io/history-io.js +102 -0
- package/dist/state/io/history-io.js.map +1 -0
- package/dist/state/io/index.d.ts +19 -0
- package/dist/state/io/index.d.ts.map +1 -0
- package/dist/state/io/index.js +19 -0
- package/dist/state/io/index.js.map +1 -0
- package/dist/state/io/routing-io.d.ts +37 -0
- package/dist/state/io/routing-io.d.ts.map +1 -0
- package/dist/state/io/routing-io.js +99 -0
- package/dist/state/io/routing-io.js.map +1 -0
- package/dist/state/io/team-io.d.ts +46 -0
- package/dist/state/io/team-io.d.ts.map +1 -0
- package/dist/state/io/team-io.js +82 -0
- package/dist/state/io/team-io.js.map +1 -0
- package/dist/state/schema.d.ts +24 -0
- package/dist/state/schema.d.ts.map +1 -0
- package/dist/state/schema.js +41 -0
- package/dist/state/schema.js.map +1 -0
- package/dist/state/squad-state.d.ts +42 -0
- package/dist/state/squad-state.d.ts.map +1 -0
- package/dist/state/squad-state.js +68 -0
- package/dist/state/squad-state.js.map +1 -0
- package/dist/storage/fs-storage-provider.d.ts +60 -0
- package/dist/storage/fs-storage-provider.d.ts.map +1 -0
- package/dist/storage/fs-storage-provider.js +377 -0
- package/dist/storage/fs-storage-provider.js.map +1 -0
- package/dist/storage/in-memory-storage-provider.d.ts +46 -0
- package/dist/storage/in-memory-storage-provider.d.ts.map +1 -0
- package/dist/storage/in-memory-storage-provider.js +264 -0
- package/dist/storage/in-memory-storage-provider.js.map +1 -0
- package/dist/storage/index.d.ts +6 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +5 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/sqlite-storage-provider.d.ts +95 -0
- package/dist/storage/sqlite-storage-provider.d.ts.map +1 -0
- package/dist/storage/sqlite-storage-provider.js +383 -0
- package/dist/storage/sqlite-storage-provider.js.map +1 -0
- package/dist/storage/storage-error.d.ts +28 -0
- package/dist/storage/storage-error.d.ts.map +1 -0
- package/dist/storage/storage-error.js +35 -0
- package/dist/storage/storage-error.js.map +1 -0
- package/dist/storage/storage-provider.d.ts +161 -0
- package/dist/storage/storage-provider.d.ts.map +1 -0
- package/dist/storage/storage-provider.js +18 -0
- package/dist/storage/storage-provider.js.map +1 -0
- package/dist/streams/resolver.d.ts.map +1 -1
- package/dist/streams/resolver.js +6 -5
- package/dist/streams/resolver.js.map +1 -1
- package/dist/tools/index.d.ts +5 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +54 -15
- package/dist/tools/index.js.map +1 -1
- package/dist/upstream/resolver.d.ts +3 -2
- package/dist/upstream/resolver.d.ts.map +1 -1
- package/dist/upstream/resolver.js +33 -32
- package/dist/upstream/resolver.js.map +1 -1
- package/package.json +33 -1
- package/templates/casting/Futurama.json +9 -9
- package/templates/casting-history.json +4 -4
- package/templates/casting-policy.json +37 -37
- package/templates/casting-reference.md +104 -104
- package/templates/casting-registry.json +3 -3
- package/templates/ceremonies.md +41 -41
- package/templates/charter.md +53 -53
- package/templates/constraint-tracking.md +38 -38
- package/templates/cooperative-rate-limiting.md +229 -229
- package/templates/copilot-instructions.md +46 -46
- package/templates/history.md +10 -10
- package/templates/identity/now.md +9 -9
- package/templates/identity/wisdom.md +15 -15
- package/templates/issue-lifecycle.md +412 -412
- package/templates/keda-scaler.md +164 -164
- package/templates/machine-capabilities.md +74 -74
- package/templates/mcp-config.md +90 -90
- package/templates/multi-agent-format.md +28 -28
- package/templates/plugin-marketplace.md +49 -49
- package/templates/ralph-circuit-breaker.md +313 -313
- package/templates/raw-agent-output.md +37 -37
- package/templates/roster.md +60 -60
- package/templates/routing.md +39 -39
- package/templates/run-output.md +50 -50
- package/templates/schedule.json +19 -19
- package/templates/scribe-charter.md +123 -119
- package/templates/skill.md +24 -24
- package/templates/skills/agent-collaboration/SKILL.md +42 -42
- package/templates/skills/agent-conduct/SKILL.md +24 -24
- package/templates/skills/architectural-proposals/SKILL.md +151 -151
- package/templates/skills/ci-validation-gates/SKILL.md +84 -84
- package/templates/skills/cli-wiring/SKILL.md +47 -47
- package/templates/skills/client-compatibility/SKILL.md +89 -89
- package/templates/skills/cross-machine-coordination/SKILL.md +434 -0
- package/templates/skills/cross-squad/SKILL.md +114 -114
- package/templates/skills/distributed-mesh/SKILL.md +287 -287
- package/templates/skills/distributed-mesh/mesh.json.example +30 -30
- package/templates/skills/distributed-mesh/sync-mesh.ps1 +111 -111
- package/templates/skills/distributed-mesh/sync-mesh.sh +104 -104
- package/templates/skills/docs-standards/SKILL.md +71 -71
- package/templates/skills/economy-mode/SKILL.md +114 -114
- package/templates/skills/error-recovery/SKILL.md +99 -0
- package/templates/skills/external-comms/SKILL.md +329 -329
- package/templates/skills/gh-auth-isolation/SKILL.md +183 -183
- package/templates/skills/git-workflow/SKILL.md +204 -204
- package/templates/skills/github-multi-account/SKILL.md +95 -95
- package/templates/skills/history-hygiene/SKILL.md +36 -36
- package/templates/skills/humanizer/SKILL.md +105 -105
- package/templates/skills/init-mode/SKILL.md +102 -102
- package/templates/skills/iterative-retrieval/SKILL.md +165 -0
- package/templates/skills/model-selection/SKILL.md +117 -117
- package/templates/skills/nap/SKILL.md +24 -24
- package/templates/skills/notification-routing/SKILL.md +105 -0
- package/templates/skills/personal-squad/SKILL.md +57 -57
- package/templates/skills/pr-screenshots/SKILL.md +149 -0
- package/templates/skills/project-conventions/SKILL.md +56 -56
- package/templates/skills/ralph-two-pass-scan/SKILL.md +35 -0
- package/templates/skills/reflect/SKILL.md +229 -0
- package/templates/skills/release-process/SKILL.md +131 -423
- package/templates/skills/reskill/SKILL.md +92 -92
- package/templates/skills/retro-enforcement/SKILL.md +148 -0
- package/templates/skills/reviewer-protocol/SKILL.md +79 -79
- package/templates/skills/secret-handling/SKILL.md +200 -200
- package/templates/skills/session-recovery/SKILL.md +155 -155
- package/templates/skills/squad-conventions/SKILL.md +69 -69
- package/templates/skills/test-discipline/SKILL.md +37 -37
- package/templates/skills/tiered-memory/SKILL.md +234 -0
- package/templates/skills/windows-compatibility/SKILL.md +98 -74
- package/templates/{squad.agent.md → squad.agent.md.template} +57 -28
- package/templates/workflows/squad-ci.yml +24 -24
- package/templates/workflows/squad-docs.yml +54 -54
- package/templates/workflows/squad-heartbeat.yml +167 -171
- package/templates/workflows/squad-insider-release.yml +61 -61
- package/templates/workflows/squad-issue-assign.yml +161 -161
- package/templates/workflows/squad-label-enforce.yml +181 -181
- package/templates/workflows/squad-preview.yml +55 -55
- package/templates/workflows/squad-promote.yml +120 -120
- package/templates/workflows/squad-release.yml +77 -77
- package/templates/workflows/squad-triage.yml +260 -260
- package/templates/workflows/sync-squad-labels.yml +169 -169
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Module — Canonical Domain Types
|
|
3
|
+
*
|
|
4
|
+
* Phase 2 of StorageProvider PRD (#481).
|
|
5
|
+
* Types that already exist elsewhere are re-exported here as the
|
|
6
|
+
* canonical import point for the state layer. New domain types are
|
|
7
|
+
* defined inline.
|
|
8
|
+
*/
|
|
9
|
+
export type { AgentStatus } from '../agents/lifecycle.js';
|
|
10
|
+
export type { HistorySection } from '../agents/history-shadow.js';
|
|
11
|
+
export type { ModelTier, WorkType, RoutingRule } from '../runtime/config.js';
|
|
12
|
+
export type { SkillDefinition } from '../skills/skill-loader.js';
|
|
13
|
+
export type { StorageProvider } from '../storage/storage-provider.js';
|
|
14
|
+
import type { HistorySection } from '../agents/history-shadow.js';
|
|
15
|
+
import type { ModelTier } from '../runtime/config.js';
|
|
16
|
+
import type { StorageProvider } from '../storage/storage-provider.js';
|
|
17
|
+
/** Full agent entity persisted under `.squad/agents/<name>/`. */
|
|
18
|
+
export interface Agent {
|
|
19
|
+
readonly name: string;
|
|
20
|
+
readonly role: string;
|
|
21
|
+
readonly emoji?: string;
|
|
22
|
+
readonly status: string;
|
|
23
|
+
readonly charterPath: string;
|
|
24
|
+
readonly modelPreference?: ModelTier;
|
|
25
|
+
readonly modelFallback?: string;
|
|
26
|
+
readonly skills: readonly string[];
|
|
27
|
+
readonly aliases: readonly string[];
|
|
28
|
+
readonly autoAssign: boolean;
|
|
29
|
+
}
|
|
30
|
+
/** Structured decision entry parsed from `decisions.md`. */
|
|
31
|
+
export interface Decision {
|
|
32
|
+
readonly date: string;
|
|
33
|
+
readonly title: string;
|
|
34
|
+
readonly author: string;
|
|
35
|
+
readonly body: string;
|
|
36
|
+
readonly configRelevant: boolean;
|
|
37
|
+
}
|
|
38
|
+
/** Timestamped history entry within an agent's `history.md`. */
|
|
39
|
+
export interface HistoryEntry {
|
|
40
|
+
readonly section: HistorySection;
|
|
41
|
+
readonly content: string;
|
|
42
|
+
readonly timestamp: string;
|
|
43
|
+
}
|
|
44
|
+
/** Parsed `team.md` structure. */
|
|
45
|
+
export interface TeamConfig {
|
|
46
|
+
readonly projectContext: string;
|
|
47
|
+
readonly members: readonly TeamMember[];
|
|
48
|
+
}
|
|
49
|
+
/** A single row from the team.md members table. */
|
|
50
|
+
export interface TeamMember {
|
|
51
|
+
readonly name: string;
|
|
52
|
+
readonly role: string;
|
|
53
|
+
readonly emoji?: string;
|
|
54
|
+
readonly status?: string;
|
|
55
|
+
}
|
|
56
|
+
/** Parsed `routing.md` structure. */
|
|
57
|
+
export interface RoutingConfig {
|
|
58
|
+
readonly rules: readonly RoutingConfigRule[];
|
|
59
|
+
readonly moduleOwnership: ReadonlyMap<string, string>;
|
|
60
|
+
readonly principles: readonly string[];
|
|
61
|
+
}
|
|
62
|
+
/** A single routing rule within RoutingConfig. */
|
|
63
|
+
export interface RoutingConfigRule {
|
|
64
|
+
readonly workType: string;
|
|
65
|
+
readonly agents: readonly string[];
|
|
66
|
+
readonly examples: readonly string[];
|
|
67
|
+
}
|
|
68
|
+
/** Template file content from `.squad/templates/`. */
|
|
69
|
+
export type Template = {
|
|
70
|
+
readonly id: string;
|
|
71
|
+
readonly name: string;
|
|
72
|
+
readonly content: string;
|
|
73
|
+
};
|
|
74
|
+
/** Log entry for orchestration / session logging. */
|
|
75
|
+
export interface LogEntry {
|
|
76
|
+
readonly timestamp: string;
|
|
77
|
+
readonly level: 'info' | 'warn' | 'error' | 'debug';
|
|
78
|
+
readonly message: string;
|
|
79
|
+
readonly agent?: string;
|
|
80
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
81
|
+
}
|
|
82
|
+
/** Options for SquadState initialization. */
|
|
83
|
+
export interface SquadStateConfig {
|
|
84
|
+
readonly provider: StorageProvider;
|
|
85
|
+
readonly rootDir: string;
|
|
86
|
+
readonly cacheEnabled?: boolean;
|
|
87
|
+
readonly cacheTtlMs?: number;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Discriminant for state-layer storage errors.
|
|
91
|
+
* Distinct from the low-level `StorageError` in `storage/storage-error.ts`
|
|
92
|
+
* which wraps Node.js `ErrnoException`.
|
|
93
|
+
*/
|
|
94
|
+
export type StateErrorKind = 'not-found' | 'parse-error' | 'write-conflict' | 'provider-error';
|
|
95
|
+
/**
|
|
96
|
+
* Base error class for the state layer.
|
|
97
|
+
*
|
|
98
|
+
* Named `StateError` (not `StorageError`) to avoid collision with the
|
|
99
|
+
* low-level FS error wrapper in `storage/storage-error.ts`. Uses a
|
|
100
|
+
* `kind` discriminant so callers can switch on error type.
|
|
101
|
+
*/
|
|
102
|
+
export declare class StateError extends Error {
|
|
103
|
+
readonly kind: StateErrorKind;
|
|
104
|
+
constructor(kind: StateErrorKind, message: string, options?: ErrorOptions);
|
|
105
|
+
}
|
|
106
|
+
/** Thrown when a requested entity or path does not exist. */
|
|
107
|
+
export declare class NotFoundError extends StateError {
|
|
108
|
+
constructor(collection: string, id?: string, options?: ErrorOptions);
|
|
109
|
+
}
|
|
110
|
+
/** Thrown when file content cannot be parsed into the expected type. */
|
|
111
|
+
export declare class ParseError extends StateError {
|
|
112
|
+
constructor(collection: string, detail: string, options?: ErrorOptions);
|
|
113
|
+
}
|
|
114
|
+
/** Thrown on concurrent write conflicts (future optimistic locking). */
|
|
115
|
+
export declare class WriteConflictError extends StateError {
|
|
116
|
+
constructor(collection: string, id?: string, options?: ErrorOptions);
|
|
117
|
+
}
|
|
118
|
+
/** Thrown when the underlying StorageProvider operation fails. */
|
|
119
|
+
export declare class ProviderError extends StateError {
|
|
120
|
+
constructor(operation: string, detail: string, options?: ErrorOptions);
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=domain-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-types.d.ts","sourceRoot":"","sources":["../../src/state/domain-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Module — Canonical Domain Types
|
|
3
|
+
*
|
|
4
|
+
* Phase 2 of StorageProvider PRD (#481).
|
|
5
|
+
* Types that already exist elsewhere are re-exported here as the
|
|
6
|
+
* canonical import point for the state layer. New domain types are
|
|
7
|
+
* defined inline.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Base error class for the state layer.
|
|
11
|
+
*
|
|
12
|
+
* Named `StateError` (not `StorageError`) to avoid collision with the
|
|
13
|
+
* low-level FS error wrapper in `storage/storage-error.ts`. Uses a
|
|
14
|
+
* `kind` discriminant so callers can switch on error type.
|
|
15
|
+
*/
|
|
16
|
+
export class StateError extends Error {
|
|
17
|
+
kind;
|
|
18
|
+
constructor(kind, message, options) {
|
|
19
|
+
super(message, options);
|
|
20
|
+
this.name = 'StateError';
|
|
21
|
+
this.kind = kind;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/** Thrown when a requested entity or path does not exist. */
|
|
25
|
+
export class NotFoundError extends StateError {
|
|
26
|
+
constructor(collection, id, options) {
|
|
27
|
+
const target = id ? `${collection}/${id}` : collection;
|
|
28
|
+
super('not-found', `Not found: ${target}`, options);
|
|
29
|
+
this.name = 'NotFoundError';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** Thrown when file content cannot be parsed into the expected type. */
|
|
33
|
+
export class ParseError extends StateError {
|
|
34
|
+
constructor(collection, detail, options) {
|
|
35
|
+
super('parse-error', `Parse error in ${collection}: ${detail}`, options);
|
|
36
|
+
this.name = 'ParseError';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** Thrown on concurrent write conflicts (future optimistic locking). */
|
|
40
|
+
export class WriteConflictError extends StateError {
|
|
41
|
+
constructor(collection, id, options) {
|
|
42
|
+
const target = id ? `${collection}/${id}` : collection;
|
|
43
|
+
super('write-conflict', `Write conflict: ${target}`, options);
|
|
44
|
+
this.name = 'WriteConflictError';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** Thrown when the underlying StorageProvider operation fails. */
|
|
48
|
+
export class ProviderError extends StateError {
|
|
49
|
+
constructor(operation, detail, options) {
|
|
50
|
+
super('provider-error', `Provider ${operation} failed: ${detail}`, options);
|
|
51
|
+
this.name = 'ProviderError';
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=domain-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-types.js","sourceRoot":"","sources":["../../src/state/domain-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsGH;;;;;;GAMG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,CAAiB;IAE9B,YAAY,IAAoB,EAAE,OAAe,EAAE,OAAsB;QACvE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,6DAA6D;AAC7D,MAAM,OAAO,aAAc,SAAQ,UAAU;IAC3C,YAAY,UAAkB,EAAE,EAAW,EAAE,OAAsB;QACjE,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QACvD,KAAK,CAAC,WAAW,EAAE,cAAc,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,wEAAwE;AACxE,MAAM,OAAO,UAAW,SAAQ,UAAU;IACxC,YAAY,UAAkB,EAAE,MAAc,EAAE,OAAsB;QACpE,KAAK,CAAC,aAAa,EAAE,kBAAkB,UAAU,KAAK,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED,wEAAwE;AACxE,MAAM,OAAO,kBAAmB,SAAQ,UAAU;IAChD,YAAY,UAAkB,EAAE,EAAW,EAAE,OAAsB;QACjE,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QACvD,KAAK,CAAC,gBAAgB,EAAE,mBAAmB,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,kEAAkE;AAClE,MAAM,OAAO,aAAc,SAAQ,UAAU;IAC3C,YAAY,SAAiB,EAAE,MAAc,EAAE,OAAsB;QACnE,KAAK,CAAC,gBAAgB,EAAE,YAAY,SAAS,YAAY,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;QAC5E,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Module — Agent Handle Implementation
|
|
3
|
+
*
|
|
4
|
+
* Concrete implementation of the `AgentHandle` interface from collection-map.ts.
|
|
5
|
+
* Wires up to StorageProvider + IO layer for reading/writing agent state.
|
|
6
|
+
*
|
|
7
|
+
* @module state/handles
|
|
8
|
+
*/
|
|
9
|
+
import type { StorageProvider } from '../storage/storage-provider.js';
|
|
10
|
+
import type { AgentHandle } from './collection-map.js';
|
|
11
|
+
/**
|
|
12
|
+
* Create a concrete AgentHandle bound to a specific agent, storage provider,
|
|
13
|
+
* and root directory.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createAgentHandle(name: string, storage: StorageProvider, rootDir: string): AgentHandle;
|
|
16
|
+
//# sourceMappingURL=handles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handles.d.ts","sourceRoot":"","sources":["../../src/state/handles.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAsEvD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,MAAM,GACd,WAAW,CA0Gb"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Module — Agent Handle Implementation
|
|
3
|
+
*
|
|
4
|
+
* Concrete implementation of the `AgentHandle` interface from collection-map.ts.
|
|
5
|
+
* Wires up to StorageProvider + IO layer for reading/writing agent state.
|
|
6
|
+
*
|
|
7
|
+
* @module state/handles
|
|
8
|
+
*/
|
|
9
|
+
import { parseHistory, serializeHistoryAppend } from './io/history-io.js';
|
|
10
|
+
import { parseTeam, serializeTeam } from './io/team-io.js';
|
|
11
|
+
import { NotFoundError, ParseError } from './domain-types.js';
|
|
12
|
+
import { resolveCollectionPath } from './schema.js';
|
|
13
|
+
// ── History Section Mapping ────────────────────────────────────────────────
|
|
14
|
+
const SECTION_KEYS = [
|
|
15
|
+
{ section: 'Context', key: 'context' },
|
|
16
|
+
{ section: 'Learnings', key: 'learnings' },
|
|
17
|
+
{ section: 'Decisions', key: 'decisions' },
|
|
18
|
+
{ section: 'Patterns', key: 'patterns' },
|
|
19
|
+
{ section: 'Issues', key: 'issues' },
|
|
20
|
+
{ section: 'References', key: 'references' },
|
|
21
|
+
];
|
|
22
|
+
/**
|
|
23
|
+
* Convert a ParsedHistory into an array of HistoryEntry objects.
|
|
24
|
+
*
|
|
25
|
+
* Splits each section's content by `### date/title` sub-headers into
|
|
26
|
+
* individual entries with extracted timestamps.
|
|
27
|
+
*/
|
|
28
|
+
function parsedHistoryToEntries(parsed, filterSection) {
|
|
29
|
+
const entries = [];
|
|
30
|
+
const sections = filterSection
|
|
31
|
+
? SECTION_KEYS.filter((s) => s.section === filterSection)
|
|
32
|
+
: SECTION_KEYS;
|
|
33
|
+
for (const { section, key } of sections) {
|
|
34
|
+
const content = parsed[key];
|
|
35
|
+
if (!content)
|
|
36
|
+
continue;
|
|
37
|
+
const subHeaderRegex = /^###\s+(.+)$/gm;
|
|
38
|
+
const subHeaders = [];
|
|
39
|
+
let m;
|
|
40
|
+
while ((m = subHeaderRegex.exec(content)) !== null) {
|
|
41
|
+
subHeaders.push({
|
|
42
|
+
title: m[1],
|
|
43
|
+
start: m.index,
|
|
44
|
+
contentStart: m.index + m[0].length,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
if (subHeaders.length === 0) {
|
|
48
|
+
entries.push({ section, content: content.trim(), timestamp: '' });
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
for (let i = 0; i < subHeaders.length; i++) {
|
|
52
|
+
const hdr = subHeaders[i];
|
|
53
|
+
const nextHdr = subHeaders[i + 1];
|
|
54
|
+
const start = hdr.contentStart;
|
|
55
|
+
const end = nextHdr ? nextHdr.start : content.length;
|
|
56
|
+
const entryContent = content.substring(start, end).trim();
|
|
57
|
+
const dateMatch = hdr.title.match(/(\d{4}-\d{2}-\d{2})/);
|
|
58
|
+
const timestamp = dateMatch?.[1] ?? '';
|
|
59
|
+
entries.push({ section, content: entryContent, timestamp });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return entries;
|
|
64
|
+
}
|
|
65
|
+
// ── Factory ────────────────────────────────────────────────────────────────
|
|
66
|
+
/**
|
|
67
|
+
* Create a concrete AgentHandle bound to a specific agent, storage provider,
|
|
68
|
+
* and root directory.
|
|
69
|
+
*/
|
|
70
|
+
export function createAgentHandle(name, storage, rootDir) {
|
|
71
|
+
const agentDir = `${rootDir}/.squad/agents/${name}`;
|
|
72
|
+
const charterPath = `${agentDir}/charter.md`;
|
|
73
|
+
const historyPath = `${agentDir}/history.md`;
|
|
74
|
+
const teamPath = `${rootDir}/${resolveCollectionPath('team')}`;
|
|
75
|
+
const handle = {
|
|
76
|
+
name,
|
|
77
|
+
async charter() {
|
|
78
|
+
const content = await storage.read(charterPath);
|
|
79
|
+
if (content === undefined) {
|
|
80
|
+
throw new NotFoundError('agents', name);
|
|
81
|
+
}
|
|
82
|
+
return content;
|
|
83
|
+
},
|
|
84
|
+
history(section) {
|
|
85
|
+
return (async () => {
|
|
86
|
+
const content = await storage.read(historyPath);
|
|
87
|
+
if (content === undefined) {
|
|
88
|
+
return [];
|
|
89
|
+
}
|
|
90
|
+
let parsed;
|
|
91
|
+
try {
|
|
92
|
+
parsed = parseHistory(content);
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
throw new ParseError('history', err instanceof Error ? err.message : String(err), { cause: err });
|
|
96
|
+
}
|
|
97
|
+
return parsedHistoryToEntries(parsed, section);
|
|
98
|
+
})();
|
|
99
|
+
},
|
|
100
|
+
async appendHistory(section, entry) {
|
|
101
|
+
const content = await storage.read(historyPath);
|
|
102
|
+
const fragment = serializeHistoryAppend(section, entry.content, entry.timestamp || undefined);
|
|
103
|
+
if (content === undefined) {
|
|
104
|
+
const newContent = `# ${name}\n\n## ${section}\n\n${fragment}`;
|
|
105
|
+
await storage.write(historyPath, newContent);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const sectionRegex = new RegExp(`^## ${section}\\s*$`, 'm');
|
|
109
|
+
const sectionMatch = sectionRegex.exec(content);
|
|
110
|
+
if (sectionMatch) {
|
|
111
|
+
// Find next ## header after this section to determine insertion point
|
|
112
|
+
const afterHeader = sectionMatch.index + sectionMatch[0].length;
|
|
113
|
+
const rest = content.substring(afterHeader);
|
|
114
|
+
const nextSectionMatch = /^## /m.exec(rest.length > 1 ? rest.substring(1) : '');
|
|
115
|
+
const insertPos = nextSectionMatch
|
|
116
|
+
? afterHeader + 1 + nextSectionMatch.index
|
|
117
|
+
: content.length;
|
|
118
|
+
const before = content.substring(0, insertPos).trimEnd();
|
|
119
|
+
const after = content.substring(insertPos);
|
|
120
|
+
const newContent = before + '\n\n' + fragment + (after.trim() ? '\n' + after.trimStart() : '');
|
|
121
|
+
await storage.write(historyPath, newContent.trimEnd() + '\n');
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
// Section doesn't exist yet — append at end
|
|
125
|
+
const newContent = content.trimEnd() + `\n\n## ${section}\n\n${fragment}`;
|
|
126
|
+
await storage.write(historyPath, newContent.trimEnd() + '\n');
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
async update(updates) {
|
|
130
|
+
const teamContent = await storage.read(teamPath);
|
|
131
|
+
if (teamContent === undefined) {
|
|
132
|
+
throw new NotFoundError('team');
|
|
133
|
+
}
|
|
134
|
+
let agents;
|
|
135
|
+
try {
|
|
136
|
+
agents = parseTeam(teamContent).agents;
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
throw new ParseError('team', err instanceof Error ? err.message : String(err), { cause: err });
|
|
140
|
+
}
|
|
141
|
+
const lowerName = name.toLowerCase();
|
|
142
|
+
const idx = agents.findIndex((a) => a.name.toLowerCase() === lowerName);
|
|
143
|
+
if (idx === -1) {
|
|
144
|
+
throw new NotFoundError('agents', name);
|
|
145
|
+
}
|
|
146
|
+
const current = agents[idx];
|
|
147
|
+
const updated = {
|
|
148
|
+
name: updates.name ?? current.name,
|
|
149
|
+
role: updates.role ?? current.role,
|
|
150
|
+
skills: updates.skills ? [...updates.skills] : current.skills,
|
|
151
|
+
model: updates.modelPreference ?? current.model,
|
|
152
|
+
status: updates.status !== undefined ? String(updates.status) : current.status,
|
|
153
|
+
};
|
|
154
|
+
agents[idx] = updated;
|
|
155
|
+
const serialized = serializeTeam(agents);
|
|
156
|
+
await storage.write(teamPath, serialized);
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
return handle;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=handles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handles.js","sourceRoot":"","sources":["../../src/state/handles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Module — Barrel Export
|
|
3
|
+
*
|
|
4
|
+
* Phase 2 of StorageProvider PRD (#481).
|
|
5
|
+
* Typed facade layer over `.squad/` file-based state.
|
|
6
|
+
*/
|
|
7
|
+
export type { Agent, Decision, HistoryEntry, HistorySection, LogEntry, ModelTier, RoutingConfig, RoutingConfigRule, RoutingRule, SkillDefinition, SquadStateConfig, StateErrorKind, StorageProvider, TeamConfig, TeamMember, Template, WorkType, } from './domain-types.js';
|
|
8
|
+
export type { AgentStatus } from './domain-types.js';
|
|
9
|
+
export { StateError, NotFoundError, ParseError, WriteConflictError, ProviderError, } from './domain-types.js';
|
|
10
|
+
export type { CollectionEntityMap, CollectionName, AgentHandle, } from './collection-map.js';
|
|
11
|
+
export type { CollectionPathResolver } from './schema.js';
|
|
12
|
+
export { COLLECTION_PATHS, resolveCollectionPath } from './schema.js';
|
|
13
|
+
export { createAgentHandle } from './handles.js';
|
|
14
|
+
export { AgentsCollection, ConfigCollection, DecisionsCollection, LogCollection, RoutingCollection, SkillsCollection, TeamCollection, TemplatesCollection, } from './collections.js';
|
|
15
|
+
export type { ConfigFileData } from './collections.js';
|
|
16
|
+
export { SquadState } from './squad-state.js';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,UAAU,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EACL,UAAU,EACV,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,aAAa,GACd,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Module — Barrel Export
|
|
3
|
+
*
|
|
4
|
+
* Phase 2 of StorageProvider PRD (#481).
|
|
5
|
+
* Typed facade layer over `.squad/` file-based state.
|
|
6
|
+
*/
|
|
7
|
+
export { StateError, NotFoundError, ParseError, WriteConflictError, ProviderError, } from './domain-types.js';
|
|
8
|
+
export { COLLECTION_PATHS, resolveCollectionPath } from './schema.js';
|
|
9
|
+
// Agent handle factory
|
|
10
|
+
export { createAgentHandle } from './handles.js';
|
|
11
|
+
// Collection facades
|
|
12
|
+
export { AgentsCollection, ConfigCollection, DecisionsCollection, LogCollection, RoutingCollection, SkillsCollection, TeamCollection, TemplatesCollection, } from './collections.js';
|
|
13
|
+
// SquadState facade
|
|
14
|
+
export { SquadState } from './squad-state.js';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAyBH,OAAO,EACL,UAAU,EACV,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,aAAa,GACd,MAAM,mBAAmB,CAAC;AAW3B,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEtE,uBAAuB;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,qBAAqB;AACrB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAI1B,oBAAoB;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Charter Markdown I/O — parse and serialize charter.md files.
|
|
3
|
+
*
|
|
4
|
+
* Wraps the existing `parseCharterMarkdown()` from charter-compiler.ts
|
|
5
|
+
* and adds serialization for round-trip support.
|
|
6
|
+
*
|
|
7
|
+
* @module state/io/charter-io
|
|
8
|
+
*/
|
|
9
|
+
import { type ParsedCharter } from '../../agents/charter-compiler.js';
|
|
10
|
+
export type { ParsedCharter };
|
|
11
|
+
/**
|
|
12
|
+
* Parse charter markdown into a typed structure.
|
|
13
|
+
* Delegates to the existing `parseCharterMarkdown()`.
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseCharter(markdown: string): ParsedCharter;
|
|
16
|
+
/**
|
|
17
|
+
* Serialize a ParsedCharter back to markdown.
|
|
18
|
+
*
|
|
19
|
+
* Produces the canonical charter.md format:
|
|
20
|
+
* ```
|
|
21
|
+
* # {Name} — {Role}
|
|
22
|
+
* > {style quote}
|
|
23
|
+
* ## Identity
|
|
24
|
+
* ...
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function serializeCharter(charter: ParsedCharter): string;
|
|
28
|
+
//# sourceMappingURL=charter-io.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charter-io.d.ts","sourceRoot":"","sources":["../../../src/state/io/charter-io.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAE5F,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAE5D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAyE/D"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Charter Markdown I/O — parse and serialize charter.md files.
|
|
3
|
+
*
|
|
4
|
+
* Wraps the existing `parseCharterMarkdown()` from charter-compiler.ts
|
|
5
|
+
* and adds serialization for round-trip support.
|
|
6
|
+
*
|
|
7
|
+
* @module state/io/charter-io
|
|
8
|
+
*/
|
|
9
|
+
import { parseCharterMarkdown } from '../../agents/charter-compiler.js';
|
|
10
|
+
/**
|
|
11
|
+
* Parse charter markdown into a typed structure.
|
|
12
|
+
* Delegates to the existing `parseCharterMarkdown()`.
|
|
13
|
+
*/
|
|
14
|
+
export function parseCharter(markdown) {
|
|
15
|
+
return parseCharterMarkdown(markdown);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Serialize a ParsedCharter back to markdown.
|
|
19
|
+
*
|
|
20
|
+
* Produces the canonical charter.md format:
|
|
21
|
+
* ```
|
|
22
|
+
* # {Name} — {Role}
|
|
23
|
+
* > {style quote}
|
|
24
|
+
* ## Identity
|
|
25
|
+
* ...
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export function serializeCharter(charter) {
|
|
29
|
+
const lines = [];
|
|
30
|
+
// Title line
|
|
31
|
+
const name = charter.identity.name ?? 'Agent';
|
|
32
|
+
const role = charter.identity.role ?? 'Developer';
|
|
33
|
+
lines.push(`# ${name} — ${role}`);
|
|
34
|
+
lines.push('');
|
|
35
|
+
// Style quote
|
|
36
|
+
if (charter.identity.style) {
|
|
37
|
+
lines.push(`> ${charter.identity.style}`);
|
|
38
|
+
lines.push('');
|
|
39
|
+
}
|
|
40
|
+
// Identity section
|
|
41
|
+
lines.push('## Identity');
|
|
42
|
+
lines.push('');
|
|
43
|
+
if (charter.identity.name) {
|
|
44
|
+
lines.push(`- **Name:** ${charter.identity.name}`);
|
|
45
|
+
}
|
|
46
|
+
if (charter.identity.role) {
|
|
47
|
+
lines.push(`- **Role:** ${charter.identity.role}`);
|
|
48
|
+
}
|
|
49
|
+
if (charter.identity.expertise && charter.identity.expertise.length > 0) {
|
|
50
|
+
lines.push(`- **Expertise:** ${charter.identity.expertise.join(', ')}`);
|
|
51
|
+
}
|
|
52
|
+
if (charter.identity.style) {
|
|
53
|
+
lines.push(`- **Style:** ${charter.identity.style}`);
|
|
54
|
+
}
|
|
55
|
+
lines.push('');
|
|
56
|
+
// What I Own section
|
|
57
|
+
if (charter.ownership !== undefined) {
|
|
58
|
+
lines.push('## What I Own');
|
|
59
|
+
lines.push('');
|
|
60
|
+
lines.push(charter.ownership);
|
|
61
|
+
lines.push('');
|
|
62
|
+
}
|
|
63
|
+
// Boundaries section
|
|
64
|
+
if (charter.boundaries !== undefined) {
|
|
65
|
+
lines.push('## Boundaries');
|
|
66
|
+
lines.push('');
|
|
67
|
+
lines.push(charter.boundaries);
|
|
68
|
+
lines.push('');
|
|
69
|
+
}
|
|
70
|
+
// Model section
|
|
71
|
+
if (charter.modelPreference || charter.modelRationale || charter.modelFallback) {
|
|
72
|
+
lines.push('## Model');
|
|
73
|
+
lines.push('');
|
|
74
|
+
if (charter.modelPreference) {
|
|
75
|
+
lines.push(`**Preferred:** ${charter.modelPreference}`);
|
|
76
|
+
}
|
|
77
|
+
if (charter.modelRationale) {
|
|
78
|
+
lines.push(`**Rationale:** ${charter.modelRationale}`);
|
|
79
|
+
}
|
|
80
|
+
if (charter.modelFallback) {
|
|
81
|
+
lines.push(`**Fallback:** ${charter.modelFallback}`);
|
|
82
|
+
}
|
|
83
|
+
lines.push('');
|
|
84
|
+
}
|
|
85
|
+
// Collaboration section
|
|
86
|
+
if (charter.collaboration !== undefined) {
|
|
87
|
+
lines.push('## Collaboration');
|
|
88
|
+
lines.push('');
|
|
89
|
+
lines.push(charter.collaboration);
|
|
90
|
+
lines.push('');
|
|
91
|
+
}
|
|
92
|
+
return lines.join('\n').trimEnd() + '\n';
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=charter-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charter-io.js","sourceRoot":"","sources":["../../../src/state/io/charter-io.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decisions Markdown I/O — parse and serialize decisions.md files.
|
|
3
|
+
*
|
|
4
|
+
* Wraps the existing `parseDecisionsMarkdown()` from markdown-migration.ts
|
|
5
|
+
* and adds serialization for round-trip support.
|
|
6
|
+
*
|
|
7
|
+
* @module state/io/decisions-io
|
|
8
|
+
*/
|
|
9
|
+
import { type ParsedDecision } from '../../config/markdown-migration.js';
|
|
10
|
+
export type { ParsedDecision };
|
|
11
|
+
/**
|
|
12
|
+
* Parse decisions markdown into typed decision entries.
|
|
13
|
+
* Delegates to the existing `parseDecisionsMarkdown()`.
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseDecisions(markdown: string): ParsedDecision[];
|
|
16
|
+
/**
|
|
17
|
+
* Serialize a single decision entry to markdown.
|
|
18
|
+
*
|
|
19
|
+
* Format:
|
|
20
|
+
* ```
|
|
21
|
+
* ### YYYY-MM-DD: Title
|
|
22
|
+
* **By:** author
|
|
23
|
+
* body content
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function serializeDecision(decision: ParsedDecision): string;
|
|
27
|
+
/**
|
|
28
|
+
* Serialize an array of decisions to a full decisions.md file.
|
|
29
|
+
*
|
|
30
|
+
* Produces:
|
|
31
|
+
* ```
|
|
32
|
+
* # Decisions
|
|
33
|
+
*
|
|
34
|
+
* ### 2026-01-15: First Decision
|
|
35
|
+
* ...
|
|
36
|
+
*
|
|
37
|
+
* ### 2026-02-01: Second Decision
|
|
38
|
+
* ...
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare function serializeDecisions(decisions: ParsedDecision[]): string;
|
|
42
|
+
//# sourceMappingURL=decisions-io.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decisions-io.d.ts","sourceRoot":"","sources":["../../../src/state/io/decisions-io.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEjG,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAGjE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAmBlE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,MAAM,CAMtE"}
|