@agent-workspace/cli 0.2.0 → 0.4.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.
Files changed (78) hide show
  1. package/README.md +100 -0
  2. package/dist/commands/artifact.d.ts +1 -0
  3. package/dist/commands/artifact.d.ts.map +1 -1
  4. package/dist/commands/artifact.js +76 -15
  5. package/dist/commands/artifact.js.map +1 -1
  6. package/dist/commands/contract.d.ts +32 -0
  7. package/dist/commands/contract.d.ts.map +1 -0
  8. package/dist/commands/contract.js +237 -0
  9. package/dist/commands/contract.js.map +1 -0
  10. package/dist/commands/identity.d.ts.map +1 -1
  11. package/dist/commands/identity.js +3 -2
  12. package/dist/commands/identity.js.map +1 -1
  13. package/dist/commands/init.d.ts.map +1 -1
  14. package/dist/commands/init.js +6 -0
  15. package/dist/commands/init.js.map +1 -1
  16. package/dist/commands/inspect.d.ts.map +1 -1
  17. package/dist/commands/inspect.js +30 -0
  18. package/dist/commands/inspect.js.map +1 -1
  19. package/dist/commands/memory.d.ts +12 -1
  20. package/dist/commands/memory.d.ts.map +1 -1
  21. package/dist/commands/memory.js +72 -18
  22. package/dist/commands/memory.js.map +1 -1
  23. package/dist/commands/project.d.ts +23 -0
  24. package/dist/commands/project.d.ts.map +1 -0
  25. package/dist/commands/project.js +181 -0
  26. package/dist/commands/project.js.map +1 -0
  27. package/dist/commands/reputation.d.ts +25 -0
  28. package/dist/commands/reputation.d.ts.map +1 -0
  29. package/dist/commands/reputation.js +227 -0
  30. package/dist/commands/reputation.js.map +1 -0
  31. package/dist/commands/status.d.ts +5 -0
  32. package/dist/commands/status.d.ts.map +1 -0
  33. package/dist/commands/status.js +182 -0
  34. package/dist/commands/status.js.map +1 -0
  35. package/dist/commands/task.d.ts +33 -0
  36. package/dist/commands/task.d.ts.map +1 -0
  37. package/dist/commands/task.js +282 -0
  38. package/dist/commands/task.js.map +1 -0
  39. package/dist/commands/validate.d.ts +3 -1
  40. package/dist/commands/validate.d.ts.map +1 -1
  41. package/dist/commands/validate.js +101 -3
  42. package/dist/commands/validate.js.map +1 -1
  43. package/dist/index.js +146 -20
  44. package/dist/index.js.map +1 -1
  45. package/dist/lib/artifact.d.ts.map +1 -1
  46. package/dist/lib/artifact.js.map +1 -1
  47. package/dist/lib/artifact.test.d.ts +2 -0
  48. package/dist/lib/artifact.test.d.ts.map +1 -0
  49. package/dist/lib/artifact.test.js +41 -0
  50. package/dist/lib/artifact.test.js.map +1 -0
  51. package/dist/lib/contract.d.ts +27 -0
  52. package/dist/lib/contract.d.ts.map +1 -0
  53. package/dist/lib/contract.js +83 -0
  54. package/dist/lib/contract.js.map +1 -0
  55. package/dist/lib/project.d.ts +54 -0
  56. package/dist/lib/project.d.ts.map +1 -0
  57. package/dist/lib/project.js +153 -0
  58. package/dist/lib/project.js.map +1 -0
  59. package/dist/lib/reputation.d.ts +36 -0
  60. package/dist/lib/reputation.d.ts.map +1 -0
  61. package/dist/lib/reputation.js +101 -0
  62. package/dist/lib/reputation.js.map +1 -0
  63. package/dist/lib/reputation.test.d.ts +2 -0
  64. package/dist/lib/reputation.test.d.ts.map +1 -0
  65. package/dist/lib/reputation.test.js +112 -0
  66. package/dist/lib/reputation.test.js.map +1 -0
  67. package/dist/lib/schema.d.ts.map +1 -1
  68. package/dist/lib/schema.js +9 -5
  69. package/dist/lib/schema.js.map +1 -1
  70. package/dist/lib/workspace.d.ts +1 -1
  71. package/dist/lib/workspace.d.ts.map +1 -1
  72. package/dist/lib/workspace.js +1 -1
  73. package/dist/lib/workspace.js.map +1 -1
  74. package/dist/lib/workspace.test.d.ts +2 -0
  75. package/dist/lib/workspace.test.d.ts.map +1 -0
  76. package/dist/lib/workspace.test.js +36 -0
  77. package/dist/lib/workspace.test.js.map +1 -0
  78. package/package.json +7 -2
package/dist/index.js CHANGED
@@ -4,14 +4,16 @@ import { AWP_VERSION } from "@agent-workspace/core";
4
4
  import { initCommand } from "./commands/init.js";
5
5
  import { validateCommand } from "./commands/validate.js";
6
6
  import { inspectCommand } from "./commands/inspect.js";
7
- import { identityGenerateCommand, identityExportCommand, } from "./commands/identity.js";
7
+ import { identityGenerateCommand, identityExportCommand } from "./commands/identity.js";
8
8
  import { memoryLogCommand, memorySearchCommand } from "./commands/memory.js";
9
9
  import { artifactCreateCommand, artifactCommitCommand, artifactLogCommand, artifactListCommand, artifactSearchCommand, artifactMergeCommand, } from "./commands/artifact.js";
10
+ import { reputationQueryCommand, reputationSignalCommand, reputationListCommand, } from "./commands/reputation.js";
11
+ import { contractCreateCommand, contractListCommand, contractShowCommand, contractEvaluateCommand, } from "./commands/contract.js";
12
+ import { projectCreateCommand, projectListCommand, projectShowCommand, projectCloseCommand, } from "./commands/project.js";
13
+ import { taskCreateCommand, taskListCommand, taskUpdateCommand, taskShowCommand, } from "./commands/task.js";
14
+ import { statusCommand } from "./commands/status.js";
10
15
  const program = new Command();
11
- program
12
- .name("awp")
13
- .description("Agent Workspace Protocol — CLI tool")
14
- .version(AWP_VERSION);
16
+ program.name("awp").description("Agent Workspace Protocol — CLI tool").version(AWP_VERSION);
15
17
  // awp init [dir]
16
18
  program
17
19
  .command("init")
@@ -23,16 +25,12 @@ program
23
25
  program
24
26
  .command("validate")
25
27
  .description("Validate the current AWP workspace")
28
+ .option("--quick", "Only validate core files (skip content directories)")
26
29
  .action(validateCommand);
27
30
  // awp inspect
28
- program
29
- .command("inspect")
30
- .description("Show workspace summary")
31
- .action(inspectCommand);
31
+ program.command("inspect").description("Show workspace summary").action(inspectCommand);
32
32
  // awp identity
33
- const identity = program
34
- .command("identity")
35
- .description("Agent identity operations");
33
+ const identity = program.command("identity").description("Agent identity operations");
36
34
  identity
37
35
  .command("generate")
38
36
  .description("Generate a DID for this agent")
@@ -43,9 +41,7 @@ identity
43
41
  .option("-f, --format <format>", "Output format (json)", "json")
44
42
  .action(identityExportCommand);
45
43
  // awp memory
46
- const memory = program
47
- .command("memory")
48
- .description("Memory operations");
44
+ const memory = program.command("memory").description("Memory operations");
49
45
  memory
50
46
  .command("log")
51
47
  .description("Append an entry to today's memory log")
@@ -54,13 +50,16 @@ memory
54
50
  .action(memoryLogCommand);
55
51
  memory
56
52
  .command("search")
57
- .description("Search memory entries")
53
+ .description("Search memory entries with optional fuzzy matching and date filters")
58
54
  .argument("<query>", "Search query")
55
+ .option("--from <date>", "Start date (YYYY-MM-DD)")
56
+ .option("--to <date>", "End date (YYYY-MM-DD)")
57
+ .option("--tag <tag>", "Filter by tag")
58
+ .option("--fuzzy", "Enable fuzzy matching")
59
+ .option("--limit <n>", "Limit number of results")
59
60
  .action(memorySearchCommand);
60
61
  // awp artifact
61
- const artifact = program
62
- .command("artifact")
63
- .description("Knowledge artifact operations (SMP)");
62
+ const artifact = program.command("artifact").description("Knowledge artifact operations (SMP)");
64
63
  artifact
65
64
  .command("create")
66
65
  .description("Create a new knowledge artifact")
@@ -93,10 +92,137 @@ artifact
93
92
  .action(artifactSearchCommand);
94
93
  artifact
95
94
  .command("merge")
96
- .description("Merge source artifact into target (additive)")
95
+ .description("Merge source artifact into target")
97
96
  .argument("<target>", "Target artifact slug")
98
97
  .argument("<source>", "Source artifact slug")
99
98
  .option("-m, --message <message>", "Merge message")
99
+ .option("-s, --strategy <strategy>", "Merge strategy (additive, authority)", "additive")
100
100
  .action(artifactMergeCommand);
101
+ // awp reputation
102
+ const reputation = program
103
+ .command("reputation")
104
+ .description("Reputation tracking operations (RDP)");
105
+ reputation
106
+ .command("query")
107
+ .description("Query an agent's reputation profile")
108
+ .argument("[slug]", "Agent reputation slug (omit to list all)")
109
+ .option("-d, --dimension <dim>", "Filter by dimension")
110
+ .option("--domain <domain>", "Filter by domain competence")
111
+ .option("--raw", "Show raw scores without decay")
112
+ .action(reputationQueryCommand);
113
+ reputation
114
+ .command("signal")
115
+ .description("Log a reputation signal for an agent")
116
+ .argument("<slug>", "Agent reputation slug")
117
+ .requiredOption("--dimension <dim>", "Dimension (reliability, epistemic-hygiene, coordination, domain-competence)")
118
+ .requiredOption("--score <n>", "Score (0.0-1.0)")
119
+ .option("--domain <domain>", "Domain (required for domain-competence)")
120
+ .option("--evidence <ref>", "Evidence reference (e.g., contract:slug, artifact:slug)")
121
+ .option("--message <msg>", "Human-readable note")
122
+ .option("--agent-did <did>", "Agent DID (required for first signal)")
123
+ .option("--agent-name <name>", "Agent name (required for first signal)")
124
+ .action(reputationSignalCommand);
125
+ reputation.command("list").description("List all tracked agents").action(reputationListCommand);
126
+ // awp contract
127
+ const contract = program.command("contract").description("Delegation contract operations (RDP)");
128
+ contract
129
+ .command("create")
130
+ .description("Create a new delegation contract")
131
+ .argument("<slug>", "Contract slug")
132
+ .requiredOption("--delegate <did>", "Delegate agent DID")
133
+ .requiredOption("--delegate-slug <slug>", "Delegate reputation profile slug")
134
+ .requiredOption("--description <text>", "Task description")
135
+ .option("--delegator <did>", "Delegator DID (defaults to workspace agent)")
136
+ .option("--deadline <date>", "Deadline (ISO 8601)")
137
+ .option("--output-format <type>", "Expected output type")
138
+ .option("--output-slug <slug>", "Expected output artifact slug")
139
+ .action(contractCreateCommand);
140
+ contract
141
+ .command("list")
142
+ .description("List all contracts")
143
+ .option("--status <state>", "Filter by status (draft, active, completed, evaluated)")
144
+ .action(contractListCommand);
145
+ contract
146
+ .command("show")
147
+ .description("Show contract details")
148
+ .argument("<slug>", "Contract slug")
149
+ .action(contractShowCommand);
150
+ contract
151
+ .command("evaluate")
152
+ .description("Evaluate a contract and generate reputation signals")
153
+ .argument("<slug>", "Contract slug")
154
+ .option("--completeness <n>", "Completeness score (0.0-1.0)")
155
+ .option("--accuracy <n>", "Accuracy score (0.0-1.0)")
156
+ .option("--clarity <n>", "Clarity score (0.0-1.0)")
157
+ .option("--timeliness <n>", "Timeliness score (0.0-1.0)")
158
+ .action(contractEvaluateCommand);
159
+ // awp project
160
+ const project = program.command("project").description("Project coordination operations (CDP)");
161
+ project
162
+ .command("create")
163
+ .description("Create a new project")
164
+ .argument("<slug>", "Project slug (e.g., q3-product-launch)")
165
+ .option("-t, --title <title>", "Project title")
166
+ .option("--deadline <date>", "Deadline (ISO 8601 date or YYYY-MM-DD)")
167
+ .option("--tags <tags>", "Comma-separated tags")
168
+ .action(projectCreateCommand);
169
+ project
170
+ .command("list")
171
+ .description("List all projects")
172
+ .option("--status <state>", "Filter by status (draft, active, paused, completed, archived)")
173
+ .action(projectListCommand);
174
+ project
175
+ .command("show")
176
+ .description("Show project details with task summary")
177
+ .argument("<slug>", "Project slug")
178
+ .action(projectShowCommand);
179
+ project
180
+ .command("close")
181
+ .description("Mark a project as completed")
182
+ .argument("<slug>", "Project slug")
183
+ .action(projectCloseCommand);
184
+ // awp task
185
+ const task = program.command("task").description("Task management operations (CDP)");
186
+ task
187
+ .command("create")
188
+ .description("Create a task within a project")
189
+ .argument("<project>", "Project slug")
190
+ .argument("<slug>", "Task slug")
191
+ .option("-t, --title <title>", "Task title")
192
+ .option("--assignee <did>", "Assignee agent DID")
193
+ .option("--assignee-slug <slug>", "Assignee reputation profile slug")
194
+ .option("--priority <level>", "Priority (low, medium, high, critical)", "medium")
195
+ .option("--deadline <date>", "Deadline (ISO 8601 date or YYYY-MM-DD)")
196
+ .option("--blocked-by <ids>", "Comma-separated task IDs that block this task")
197
+ .option("--output-artifact <slug>", "Output artifact slug")
198
+ .option("--contract <slug>", "Associated contract slug")
199
+ .action(taskCreateCommand);
200
+ task
201
+ .command("list")
202
+ .description("List tasks for a project")
203
+ .argument("<project>", "Project slug")
204
+ .option("--status <state>", "Filter by status")
205
+ .option("--assignee <slug>", "Filter by assignee slug")
206
+ .action(taskListCommand);
207
+ task
208
+ .command("update")
209
+ .description("Update a task's status or assignee")
210
+ .argument("<project>", "Project slug")
211
+ .argument("<slug>", "Task slug")
212
+ .option("--status <state>", "New status (pending, in-progress, blocked, review, completed, cancelled)")
213
+ .option("--assignee <did>", "New assignee DID")
214
+ .option("--assignee-slug <slug>", "New assignee reputation profile slug")
215
+ .action(taskUpdateCommand);
216
+ task
217
+ .command("show")
218
+ .description("Show task details")
219
+ .argument("<project>", "Project slug")
220
+ .argument("<slug>", "Task slug")
221
+ .action(taskShowCommand);
222
+ // awp status
223
+ program
224
+ .command("status")
225
+ .description("Rich workspace overview — projects, tasks, reputation, health")
226
+ .action(statusCommand);
101
227
  program.parse();
102
228
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../../src/lib/artifact.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK3D;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAG7C;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC,CA0B/C;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOxE"}
1
+ {"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../../src/lib/artifact.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK3D;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAG7C;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAwB/C;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/lib/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAE5C;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,YAAY,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,OAAO,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,aAAqB,EAAE,IAAY;IAC5D,OAAO,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,aAAqB,EACrB,IAAY;IAEZ,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,kBAAkB,CAAsB,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,aAAqB;IAErB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACxD,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,MAAM,SAAS,GAAyC,EAAE,CAAC;IAE3D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CACtB,CAAC;YACF,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBACrD,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,aAAqB;IACrD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,WAAW,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/lib/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAE5C;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,YAAY,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,OAAO,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,aAAqB,EAAE,IAAY;IAC5D,OAAO,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,aAAqB,EACrB,IAAY;IAEZ,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,kBAAkB,CAAsB,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,aAAqB;IAErB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACxD,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,MAAM,SAAS,GAAyC,EAAE,CAAC;IAE3D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAsB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;YACpF,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBACrD,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,aAAqB;IACrD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,WAAW,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=artifact.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact.test.d.ts","sourceRoot":"","sources":["../../src/lib/artifact.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { validateSlug, idFromSlug, slugFromId, slugToPath } from "./artifact.js";
3
+ describe("artifact utilities", () => {
4
+ describe("validateSlug", () => {
5
+ it("accepts valid lowercase alphanumeric slugs", () => {
6
+ expect(validateSlug("my-artifact")).toBe(true);
7
+ expect(validateSlug("artifact123")).toBe(true);
8
+ expect(validateSlug("a")).toBe(true);
9
+ expect(validateSlug("test-slug-name")).toBe(true);
10
+ });
11
+ it("rejects invalid slugs", () => {
12
+ expect(validateSlug("")).toBe(false);
13
+ expect(validateSlug("MyArtifact")).toBe(false);
14
+ expect(validateSlug("my_artifact")).toBe(false);
15
+ expect(validateSlug("-starts-with-hyphen")).toBe(false);
16
+ expect(validateSlug("has spaces")).toBe(false);
17
+ expect(validateSlug("special!chars")).toBe(false);
18
+ });
19
+ });
20
+ describe("idFromSlug", () => {
21
+ it("converts slug to artifact ID", () => {
22
+ expect(idFromSlug("my-artifact")).toBe("artifact:my-artifact");
23
+ expect(idFromSlug("test")).toBe("artifact:test");
24
+ });
25
+ });
26
+ describe("slugFromId", () => {
27
+ it("extracts slug from artifact ID", () => {
28
+ expect(slugFromId("artifact:my-artifact")).toBe("my-artifact");
29
+ expect(slugFromId("artifact:test")).toBe("test");
30
+ });
31
+ it("handles IDs without prefix", () => {
32
+ expect(slugFromId("plain-slug")).toBe("plain-slug");
33
+ });
34
+ });
35
+ describe("slugToPath", () => {
36
+ it("generates correct file path", () => {
37
+ expect(slugToPath("/workspace", "my-artifact")).toBe("/workspace/artifacts/my-artifact.md");
38
+ });
39
+ });
40
+ });
41
+ //# sourceMappingURL=artifact.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact.test.js","sourceRoot":"","sources":["../../src/lib/artifact.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEjF,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC/D,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/D,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { DelegationContractFrontmatter, ReputationSignal } from "@agent-workspace/core";
2
+ import type { WorkspaceFile } from "@agent-workspace/core";
3
+ /**
4
+ * Validate a contract slug
5
+ */
6
+ export declare function validateSlug(slug: string): boolean;
7
+ /**
8
+ * Get the file path for a contract slug
9
+ */
10
+ export declare function slugToContractPath(workspaceRoot: string, slug: string): string;
11
+ /**
12
+ * Load a contract by slug
13
+ */
14
+ export declare function loadContract(workspaceRoot: string, slug: string): Promise<WorkspaceFile<DelegationContractFrontmatter>>;
15
+ /**
16
+ * List all contracts in the workspace
17
+ */
18
+ export declare function listContracts(workspaceRoot: string): Promise<WorkspaceFile<DelegationContractFrontmatter>[]>;
19
+ /**
20
+ * Evaluate a contract: compute weighted score and generate reputation signals.
21
+ * Returns the weighted score and the generated signals.
22
+ */
23
+ export declare function evaluateContract(contract: DelegationContractFrontmatter, scores: Record<string, number>, evaluatorDid: string, now?: Date): {
24
+ weightedScore: number;
25
+ signals: ReputationSignal[];
26
+ };
27
+ //# sourceMappingURL=contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/lib/contract.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,6BAA6B,EAC7B,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAI3D;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GACX,MAAM,CAER;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC,CAGvD;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,6BAA6B,CAAC,EAAE,CAAC,CA2BzD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,6BAA6B,EACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,YAAY,EAAE,MAAM,EACpB,GAAG,GAAE,IAAiB,GACrB;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,EAAE,CAAA;CAAE,CA8BxD"}
@@ -0,0 +1,83 @@
1
+ import { readdir } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { CONTRACTS_DIR } from "@agent-workspace/core";
4
+ import { parseWorkspaceFile } from "./frontmatter.js";
5
+ const SLUG_PATTERN = /^[a-z0-9][a-z0-9-]*$/;
6
+ /**
7
+ * Validate a contract slug
8
+ */
9
+ export function validateSlug(slug) {
10
+ return SLUG_PATTERN.test(slug);
11
+ }
12
+ /**
13
+ * Get the file path for a contract slug
14
+ */
15
+ export function slugToContractPath(workspaceRoot, slug) {
16
+ return join(workspaceRoot, CONTRACTS_DIR, `${slug}.md`);
17
+ }
18
+ /**
19
+ * Load a contract by slug
20
+ */
21
+ export async function loadContract(workspaceRoot, slug) {
22
+ const filePath = slugToContractPath(workspaceRoot, slug);
23
+ return parseWorkspaceFile(filePath);
24
+ }
25
+ /**
26
+ * List all contracts in the workspace
27
+ */
28
+ export async function listContracts(workspaceRoot) {
29
+ const contractsDir = join(workspaceRoot, CONTRACTS_DIR);
30
+ let files;
31
+ try {
32
+ files = await readdir(contractsDir);
33
+ }
34
+ catch {
35
+ return [];
36
+ }
37
+ const mdFiles = files.filter((f) => f.endsWith(".md")).sort();
38
+ const contracts = [];
39
+ for (const f of mdFiles) {
40
+ try {
41
+ const parsed = await parseWorkspaceFile(join(contractsDir, f));
42
+ if (parsed.frontmatter.type === "delegation-contract") {
43
+ contracts.push(parsed);
44
+ }
45
+ }
46
+ catch {
47
+ // Skip unparseable files
48
+ }
49
+ }
50
+ return contracts;
51
+ }
52
+ /**
53
+ * Evaluate a contract: compute weighted score and generate reputation signals.
54
+ * Returns the weighted score and the generated signals.
55
+ */
56
+ export function evaluateContract(contract, scores, evaluatorDid, now = new Date()) {
57
+ const { criteria } = contract.evaluation;
58
+ // Compute weighted score
59
+ let weightedScore = 0;
60
+ for (const [criterion, weight] of Object.entries(criteria)) {
61
+ const score = scores[criterion];
62
+ if (score === undefined) {
63
+ throw new Error(`Missing score for criterion: ${criterion}`);
64
+ }
65
+ weightedScore += weight * score;
66
+ }
67
+ weightedScore = Math.round(weightedScore * 1000) / 1000;
68
+ const timestamp = now.toISOString();
69
+ const evidence = contract.id;
70
+ // Generate reputation signals
71
+ const signals = [
72
+ {
73
+ source: evaluatorDid,
74
+ dimension: "reliability",
75
+ score: weightedScore,
76
+ timestamp,
77
+ evidence,
78
+ message: `Contract evaluation: ${contract.task.description}`,
79
+ },
80
+ ];
81
+ return { weightedScore, signals };
82
+ }
83
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/lib/contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { ProjectFrontmatter, TaskFrontmatter, ProjectMember, ReputationDimension } from "@agent-workspace/core";
2
+ import type { WorkspaceFile } from "@agent-workspace/core";
3
+ /**
4
+ * Validate a slug
5
+ */
6
+ export declare function validateSlug(slug: string): boolean;
7
+ /**
8
+ * Get the file path for a project slug
9
+ */
10
+ export declare function slugToProjectPath(workspaceRoot: string, slug: string): string;
11
+ /**
12
+ * Get the tasks directory for a project slug
13
+ */
14
+ export declare function slugToTaskDir(workspaceRoot: string, projectSlug: string): string;
15
+ /**
16
+ * Get the file path for a task within a project
17
+ */
18
+ export declare function slugToTaskPath(workspaceRoot: string, projectSlug: string, taskSlug: string): string;
19
+ /**
20
+ * Load a project by slug
21
+ */
22
+ export declare function loadProject(workspaceRoot: string, slug: string): Promise<WorkspaceFile<ProjectFrontmatter>>;
23
+ /**
24
+ * List all projects in the workspace
25
+ */
26
+ export declare function listProjects(workspaceRoot: string): Promise<WorkspaceFile<ProjectFrontmatter>[]>;
27
+ /**
28
+ * Load a task by project slug and task slug
29
+ */
30
+ export declare function loadTask(workspaceRoot: string, projectSlug: string, taskSlug: string): Promise<WorkspaceFile<TaskFrontmatter>>;
31
+ /**
32
+ * List all tasks for a project
33
+ */
34
+ export declare function listTasks(workspaceRoot: string, projectSlug: string): Promise<WorkspaceFile<TaskFrontmatter>[]>;
35
+ /**
36
+ * Ensure the tasks directory exists for a project
37
+ */
38
+ export declare function ensureTaskDir(workspaceRoot: string, projectSlug: string): Promise<void>;
39
+ /**
40
+ * Recalculate taskCount and completedCount for a project from its tasks.
41
+ */
42
+ export declare function computeProjectCounts(workspaceRoot: string, projectSlug: string): Promise<{
43
+ taskCount: number;
44
+ completedCount: number;
45
+ }>;
46
+ /**
47
+ * Check reputation gates for a project member.
48
+ * Returns warnings for any scores below the threshold.
49
+ */
50
+ export declare function checkReputationGates(member: ProjectMember, dimensions: Record<string, ReputationDimension> | undefined, domainCompetence: Record<string, ReputationDimension> | undefined, now?: Date): {
51
+ passed: boolean;
52
+ warnings: string[];
53
+ };
54
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK3D;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GACX,MAAM,CAER;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,MAAM,CAER;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAG5C;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC,CA0B9C;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAGzC;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC,CA0B3C;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,CAOxD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,SAAS,EAC3D,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,SAAS,EACjE,GAAG,GAAE,IAAiB,GACrB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CA2CzC"}
@@ -0,0 +1,153 @@
1
+ import { readdir, mkdir } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { PROJECTS_DIR } from "@agent-workspace/core";
4
+ import { parseWorkspaceFile } from "./frontmatter.js";
5
+ import { computeDecayedScore } from "./reputation.js";
6
+ const SLUG_PATTERN = /^[a-z0-9][a-z0-9-]*$/;
7
+ /**
8
+ * Validate a slug
9
+ */
10
+ export function validateSlug(slug) {
11
+ return SLUG_PATTERN.test(slug);
12
+ }
13
+ /**
14
+ * Get the file path for a project slug
15
+ */
16
+ export function slugToProjectPath(workspaceRoot, slug) {
17
+ return join(workspaceRoot, PROJECTS_DIR, `${slug}.md`);
18
+ }
19
+ /**
20
+ * Get the tasks directory for a project slug
21
+ */
22
+ export function slugToTaskDir(workspaceRoot, projectSlug) {
23
+ return join(workspaceRoot, PROJECTS_DIR, projectSlug, "tasks");
24
+ }
25
+ /**
26
+ * Get the file path for a task within a project
27
+ */
28
+ export function slugToTaskPath(workspaceRoot, projectSlug, taskSlug) {
29
+ return join(workspaceRoot, PROJECTS_DIR, projectSlug, "tasks", `${taskSlug}.md`);
30
+ }
31
+ /**
32
+ * Load a project by slug
33
+ */
34
+ export async function loadProject(workspaceRoot, slug) {
35
+ const filePath = slugToProjectPath(workspaceRoot, slug);
36
+ return parseWorkspaceFile(filePath);
37
+ }
38
+ /**
39
+ * List all projects in the workspace
40
+ */
41
+ export async function listProjects(workspaceRoot) {
42
+ const projDir = join(workspaceRoot, PROJECTS_DIR);
43
+ let entries;
44
+ try {
45
+ entries = await readdir(projDir);
46
+ }
47
+ catch {
48
+ return [];
49
+ }
50
+ const mdFiles = entries.filter((f) => f.endsWith(".md")).sort();
51
+ const projects = [];
52
+ for (const f of mdFiles) {
53
+ try {
54
+ const parsed = await parseWorkspaceFile(join(projDir, f));
55
+ if (parsed.frontmatter.type === "project") {
56
+ projects.push(parsed);
57
+ }
58
+ }
59
+ catch {
60
+ // Skip unparseable files
61
+ }
62
+ }
63
+ return projects;
64
+ }
65
+ /**
66
+ * Load a task by project slug and task slug
67
+ */
68
+ export async function loadTask(workspaceRoot, projectSlug, taskSlug) {
69
+ const filePath = slugToTaskPath(workspaceRoot, projectSlug, taskSlug);
70
+ return parseWorkspaceFile(filePath);
71
+ }
72
+ /**
73
+ * List all tasks for a project
74
+ */
75
+ export async function listTasks(workspaceRoot, projectSlug) {
76
+ const taskDir = slugToTaskDir(workspaceRoot, projectSlug);
77
+ let entries;
78
+ try {
79
+ entries = await readdir(taskDir);
80
+ }
81
+ catch {
82
+ return [];
83
+ }
84
+ const mdFiles = entries.filter((f) => f.endsWith(".md")).sort();
85
+ const tasks = [];
86
+ for (const f of mdFiles) {
87
+ try {
88
+ const parsed = await parseWorkspaceFile(join(taskDir, f));
89
+ if (parsed.frontmatter.type === "task") {
90
+ tasks.push(parsed);
91
+ }
92
+ }
93
+ catch {
94
+ // Skip unparseable files
95
+ }
96
+ }
97
+ return tasks;
98
+ }
99
+ /**
100
+ * Ensure the tasks directory exists for a project
101
+ */
102
+ export async function ensureTaskDir(workspaceRoot, projectSlug) {
103
+ const taskDir = slugToTaskDir(workspaceRoot, projectSlug);
104
+ await mkdir(taskDir, { recursive: true });
105
+ }
106
+ /**
107
+ * Recalculate taskCount and completedCount for a project from its tasks.
108
+ */
109
+ export async function computeProjectCounts(workspaceRoot, projectSlug) {
110
+ const tasks = await listTasks(workspaceRoot, projectSlug);
111
+ const taskCount = tasks.length;
112
+ const completedCount = tasks.filter((t) => t.frontmatter.status === "completed").length;
113
+ return { taskCount, completedCount };
114
+ }
115
+ /**
116
+ * Check reputation gates for a project member.
117
+ * Returns warnings for any scores below the threshold.
118
+ */
119
+ export function checkReputationGates(member, dimensions, domainCompetence, now = new Date()) {
120
+ const warnings = [];
121
+ if (!member.minReputation) {
122
+ return { passed: true, warnings };
123
+ }
124
+ for (const [gate, minScore] of Object.entries(member.minReputation)) {
125
+ // Handle domain-competence gates (e.g., "domain-competence:ai-research")
126
+ if (gate.startsWith("domain-competence:")) {
127
+ const domain = gate.slice("domain-competence:".length);
128
+ const dim = domainCompetence?.[domain];
129
+ if (!dim) {
130
+ warnings.push(`No domain data for "${domain}" (required: ${minScore})`);
131
+ continue;
132
+ }
133
+ const decayed = computeDecayedScore(dim, now);
134
+ if (decayed < minScore) {
135
+ warnings.push(`${domain} domain score ${decayed.toFixed(2)} < required ${minScore}`);
136
+ }
137
+ }
138
+ else {
139
+ // Standard dimension gate
140
+ const dim = dimensions?.[gate];
141
+ if (!dim) {
142
+ warnings.push(`No data for dimension "${gate}" (required: ${minScore})`);
143
+ continue;
144
+ }
145
+ const decayed = computeDecayedScore(dim, now);
146
+ if (decayed < minScore) {
147
+ warnings.push(`${gate} score ${decayed.toFixed(2)} < required ${minScore}`);
148
+ }
149
+ }
150
+ }
151
+ return { passed: warnings.length === 0, warnings };
152
+ }
153
+ //# sourceMappingURL=project.js.map