@lovelybunch/core 1.0.75-alpha.1 → 1.0.75-alpha.10

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 (43) hide show
  1. package/dist/agent-instructions.d.ts +17 -0
  2. package/dist/agent-instructions.d.ts.map +1 -0
  3. package/dist/agent-instructions.js +160 -0
  4. package/dist/agent-instructions.js.map +1 -0
  5. package/dist/context.d.ts +8 -8
  6. package/dist/index.d.ts +2 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +2 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/knowledge.d.ts +40 -40
  11. package/dist/knowledge.js +1 -1
  12. package/dist/knowledge.js.map +1 -1
  13. package/dist/logging/index.d.ts +5 -5
  14. package/dist/logging/index.d.ts.map +1 -1
  15. package/dist/logging/index.js +5 -5
  16. package/dist/logging/index.js.map +1 -1
  17. package/dist/logging/kinds.d.ts +24 -24
  18. package/dist/logging/kinds.d.ts.map +1 -1
  19. package/dist/logging/kinds.js +24 -24
  20. package/dist/logging/kinds.js.map +1 -1
  21. package/dist/markdown-storage.d.ts +12 -11
  22. package/dist/markdown-storage.d.ts.map +1 -1
  23. package/dist/markdown-storage.js +213 -143
  24. package/dist/markdown-storage.js.map +1 -1
  25. package/dist/proposals.d.ts +136 -136
  26. package/dist/skill-instructions.d.ts +19 -0
  27. package/dist/skill-instructions.d.ts.map +1 -0
  28. package/dist/skill-instructions.js +165 -0
  29. package/dist/skill-instructions.js.map +1 -0
  30. package/dist/storage.d.ts +21 -24
  31. package/dist/storage.d.ts.map +1 -1
  32. package/dist/storage.js +155 -181
  33. package/dist/storage.js.map +1 -1
  34. package/dist/system-prompts/coconut-assistant.md +40 -6
  35. package/dist/system-prompts/schema/agent.schema.md +1 -1
  36. package/dist/system-prompts/schema/knowledge.schema.md +2 -2
  37. package/dist/system-prompts/schema/skill.schema.md +73 -0
  38. package/dist/system-prompts/schema/{proposal.schema.md → task.schema.md} +2 -2
  39. package/dist/tasks.d.ts +764 -0
  40. package/dist/tasks.d.ts.map +1 -0
  41. package/dist/tasks.js +483 -0
  42. package/dist/tasks.js.map +1 -0
  43. package/package.json +2 -2
package/dist/storage.js CHANGED
@@ -6,20 +6,20 @@ import { MarkdownStorageAdapter } from './markdown-storage.js';
6
6
  import { schemaTemplates } from './schema-templates.js';
7
7
  export class FileStorageAdapter {
8
8
  basePath;
9
- proposalsPath;
9
+ tasksPath;
10
10
  configPath;
11
- agentsPath;
11
+ skillsPath;
12
12
  constructor(basePath = '.nut') {
13
13
  this.basePath = basePath;
14
- this.proposalsPath = path.join(basePath, 'proposals');
14
+ this.tasksPath = path.join(basePath, 'tasks');
15
15
  this.configPath = path.join(basePath, 'config.json');
16
- this.agentsPath = path.join(basePath, 'agents');
16
+ this.skillsPath = path.join(basePath, 'skills');
17
17
  }
18
18
  async init() {
19
19
  // Create .nut directory structure
20
20
  await fs.mkdir(this.basePath, { recursive: true });
21
- await fs.mkdir(this.proposalsPath, { recursive: true });
22
- await fs.mkdir(this.agentsPath, { recursive: true });
21
+ await fs.mkdir(this.tasksPath, { recursive: true });
22
+ await fs.mkdir(this.skillsPath, { recursive: true });
23
23
  // Create additional directories
24
24
  await fs.mkdir(path.join(this.basePath, 'specs'), { recursive: true });
25
25
  await fs.mkdir(path.join(this.basePath, 'flags'), { recursive: true });
@@ -27,7 +27,7 @@ export class FileStorageAdapter {
27
27
  await fs.mkdir(path.join(this.basePath, 'templates'), { recursive: true });
28
28
  await fs.mkdir(path.join(this.basePath, 'context'), { recursive: true });
29
29
  await fs.mkdir(path.join(this.basePath, 'context', 'decisions'), { recursive: true });
30
- await fs.mkdir(path.join(this.basePath, 'context', 'knowledge'), { recursive: true });
30
+ await fs.mkdir(path.join(this.basePath, 'knowledge'), { recursive: true });
31
31
  // Create default config if it doesn't exist
32
32
  const configExists = await this.fileExists(this.configPath);
33
33
  if (!configExists) {
@@ -133,8 +133,8 @@ This project uses Coconut for intent-driven development.
133
133
  ## Getting Started
134
134
 
135
135
  1. Initialize Coconut: \`nut init\`
136
- 2. Create proposals: \`nut propose "Your intent"\`
137
- 3. View proposals: \`nut list\`
136
+ 2. Create tasks: \`nut task create "Your intent"\`
137
+ 3. View tasks: \`nut list\`
138
138
  `;
139
139
  await this.createContextFile('project.md', minimalProject);
140
140
  }
@@ -145,38 +145,38 @@ This project uses Coconut for intent-driven development.
145
145
  await fs.writeFile(filePath, content, 'utf-8');
146
146
  }
147
147
  }
148
- async saveProposal(proposal) {
149
- const filePath = path.join(this.proposalsPath, `${proposal.id}.json`);
150
- const data = JSON.stringify(proposal, null, 2);
148
+ async saveTask(task) {
149
+ const filePath = path.join(this.tasksPath, `${task.id}.json`);
150
+ const data = JSON.stringify(task, null, 2);
151
151
  await fs.writeFile(filePath, data, 'utf-8');
152
152
  }
153
- async loadProposal(id) {
154
- const filePath = path.join(this.proposalsPath, `${id}.json`);
153
+ async loadTask(id) {
154
+ const filePath = path.join(this.tasksPath, `${id}.json`);
155
155
  if (!(await this.fileExists(filePath))) {
156
156
  return null;
157
157
  }
158
158
  const data = await fs.readFile(filePath, 'utf-8');
159
- const proposal = JSON.parse(data);
159
+ const task = JSON.parse(data);
160
160
  // Convert date strings back to Date objects
161
- this.hydrateDates(proposal);
162
- return proposal;
161
+ this.hydrateDates(task);
162
+ return task;
163
163
  }
164
- async loadAllProposals() {
165
- const files = await fs.readdir(this.proposalsPath);
166
- const proposals = [];
164
+ async loadAllTasks() {
165
+ const files = await fs.readdir(this.tasksPath);
166
+ const tasks = [];
167
167
  for (const file of files) {
168
168
  if (file.endsWith('.json')) {
169
- const filePath = path.join(this.proposalsPath, file);
169
+ const filePath = path.join(this.tasksPath, file);
170
170
  const data = await fs.readFile(filePath, 'utf-8');
171
- const proposal = JSON.parse(data);
172
- this.hydrateDates(proposal);
173
- proposals.push(proposal);
171
+ const task = JSON.parse(data);
172
+ this.hydrateDates(task);
173
+ tasks.push(task);
174
174
  }
175
175
  }
176
- return proposals;
176
+ return tasks;
177
177
  }
178
- async deleteProposal(id) {
179
- const filePath = path.join(this.proposalsPath, `${id}.json`);
178
+ async deleteTask(id) {
179
+ const filePath = path.join(this.tasksPath, `${id}.json`);
180
180
  if (!(await this.fileExists(filePath))) {
181
181
  return false;
182
182
  }
@@ -203,29 +203,29 @@ This project uses Coconut for intent-driven development.
203
203
  return false;
204
204
  }
205
205
  }
206
- hydrateDates(proposal) {
206
+ hydrateDates(task) {
207
207
  // Convert date strings back to Date objects
208
- proposal.metadata.createdAt = new Date(proposal.metadata.createdAt);
209
- proposal.metadata.updatedAt = new Date(proposal.metadata.updatedAt);
208
+ task.metadata.createdAt = new Date(task.metadata.createdAt);
209
+ task.metadata.updatedAt = new Date(task.metadata.updatedAt);
210
210
  // Convert other date fields
211
- proposal.planSteps.forEach(step => {
211
+ task.planSteps.forEach(step => {
212
212
  if (step.executedAt) {
213
213
  step.executedAt = new Date(step.executedAt);
214
214
  }
215
215
  });
216
- proposal.evidence.forEach(e => {
216
+ task.evidence.forEach(e => {
217
217
  e.timestamp = new Date(e.timestamp);
218
218
  });
219
- proposal.policies.forEach(p => {
219
+ task.policies.forEach(p => {
220
220
  if (p.checkedAt) {
221
221
  p.checkedAt = new Date(p.checkedAt);
222
222
  }
223
223
  });
224
- proposal.featureFlags.forEach(f => {
224
+ task.featureFlags.forEach(f => {
225
225
  f.createdAt = new Date(f.createdAt);
226
226
  f.updatedAt = new Date(f.updatedAt);
227
227
  });
228
- proposal.experiments.forEach(e => {
228
+ task.experiments.forEach(e => {
229
229
  if (e.startedAt) {
230
230
  e.startedAt = new Date(e.startedAt);
231
231
  }
@@ -233,15 +233,15 @@ This project uses Coconut for intent-driven development.
233
233
  e.endedAt = new Date(e.endedAt);
234
234
  }
235
235
  });
236
- proposal.telemetryContracts.forEach(t => {
236
+ task.telemetryContracts.forEach(t => {
237
237
  t.approvals.forEach(a => {
238
238
  a.approvedAt = new Date(a.approvedAt);
239
239
  });
240
240
  });
241
- if (proposal.releasePlan.schedule) {
242
- proposal.releasePlan.schedule = new Date(proposal.releasePlan.schedule);
241
+ if (task.releasePlan.schedule) {
242
+ task.releasePlan.schedule = new Date(task.releasePlan.schedule);
243
243
  }
244
- proposal.metadata.aiInteractions.forEach(ai => {
244
+ task.metadata.aiInteractions.forEach(ai => {
245
245
  ai.timestamp = new Date(ai.timestamp);
246
246
  });
247
247
  }
@@ -257,173 +257,147 @@ This project uses Coconut for intent-driven development.
257
257
  getBasePath(options) {
258
258
  return options?.absolute ? path.resolve(this.basePath) : this.basePath;
259
259
  }
260
- // Agent Management Methods
261
- async saveAgent(agent) {
262
- const content = this.agentToMarkdown(agent);
263
- // For new agents, save to root directory
264
- // For existing agents, find their current location and save there
265
- let filePath;
266
- const existingPath = await this.findAgentPath(agent.id);
267
- if (existingPath) {
268
- filePath = existingPath;
269
- }
270
- else {
271
- filePath = path.join(this.agentsPath, `${agent.id}.md`);
272
- }
273
- // Ensure directory exists
274
- const dir = path.dirname(filePath);
275
- await fs.mkdir(dir, { recursive: true });
260
+ // Skill Management Methods (Agent Skills spec: https://agentskills.io/specification)
261
+ async saveSkill(skill) {
262
+ // Each skill is a directory containing SKILL.md
263
+ const skillDir = path.join(this.skillsPath, skill.id);
264
+ await fs.mkdir(skillDir, { recursive: true });
265
+ const filePath = path.join(skillDir, 'SKILL.md');
266
+ const content = this.skillToMarkdown(skill);
276
267
  await fs.writeFile(filePath, content, 'utf-8');
277
268
  }
278
- async findAgentPath(id) {
279
- // First try the direct path
280
- const directPath = path.join(this.agentsPath, `${id}.md`);
281
- if (await this.fileExists(directPath)) {
282
- return directPath;
283
- }
284
- // Search in subdirectories
285
- const agentFiles = await this.findAgentFiles(this.agentsPath);
286
- for (const agentPath of agentFiles) {
287
- const relativePath = path.relative(this.agentsPath, agentPath);
288
- const agentId = this.pathToId(relativePath);
289
- if (agentId === id) {
290
- return agentPath;
291
- }
292
- }
293
- return null;
294
- }
295
- pathToId(relativePath) {
296
- return relativePath.replace(/\.md$/, '').replace(/[\/\\]/g, '-');
297
- }
298
- async loadAgent(id) {
299
- // First try the direct path (for backward compatibility)
300
- let filePath = path.join(this.agentsPath, `${id}.md`);
301
- if (await this.fileExists(filePath)) {
302
- const content = await fs.readFile(filePath, 'utf-8');
303
- return this.markdownToAgent(content, id);
304
- }
305
- // If not found directly, search for it in subdirectories
306
- const agentFiles = await this.findAgentFiles(this.agentsPath);
307
- for (const agentPath of agentFiles) {
308
- const relativePath = path.relative(this.agentsPath, agentPath);
309
- const agentId = this.pathToId(relativePath);
310
- if (agentId === id) {
311
- const content = await fs.readFile(agentPath, 'utf-8');
312
- return this.markdownToAgent(content, id);
313
- }
314
- }
315
- return null;
316
- }
317
- async loadAllAgents() {
318
- const agentFiles = await this.findAgentFiles(this.agentsPath);
319
- const agents = [];
320
- for (const filePath of agentFiles) {
321
- const content = await fs.readFile(filePath, 'utf-8');
322
- const relativePath = path.relative(this.agentsPath, filePath);
323
- const id = this.pathToId(relativePath);
324
- const agent = this.markdownToAgent(content, id);
325
- if (agent) {
326
- agents.push(agent);
327
- }
269
+ async loadSkill(id) {
270
+ const skillFile = path.join(this.skillsPath, id, 'SKILL.md');
271
+ if (!(await this.fileExists(skillFile))) {
272
+ return null;
328
273
  }
329
- return agents;
274
+ const content = await fs.readFile(skillFile, 'utf-8');
275
+ return this.markdownToSkill(content, id);
330
276
  }
331
- async findAgentFiles(dir) {
332
- const files = [];
277
+ async loadAllSkills() {
278
+ const skills = [];
333
279
  try {
334
- const entries = await fs.readdir(dir, { withFileTypes: true });
280
+ const entries = await fs.readdir(this.skillsPath, { withFileTypes: true });
335
281
  for (const entry of entries) {
336
- const fullPath = path.join(dir, entry.name);
337
- if (entry.isDirectory()) {
338
- // Recursively search subdirectories
339
- const subFiles = await this.findAgentFiles(fullPath);
340
- files.push(...subFiles);
341
- }
342
- else if (entry.isFile() && entry.name.endsWith('.md')) {
343
- files.push(fullPath);
282
+ if (!entry.isDirectory())
283
+ continue;
284
+ const skillFile = path.join(this.skillsPath, entry.name, 'SKILL.md');
285
+ if (!(await this.fileExists(skillFile)))
286
+ continue;
287
+ const content = await fs.readFile(skillFile, 'utf-8');
288
+ const skill = this.markdownToSkill(content, entry.name);
289
+ if (skill) {
290
+ skills.push(skill);
344
291
  }
345
292
  }
346
293
  }
347
294
  catch (error) {
348
295
  // If directory doesn't exist or can't be read, return empty array
349
- console.warn(`Could not read directory ${dir}:`, error);
296
+ console.warn(`Could not read skills directory ${this.skillsPath}:`, error);
350
297
  }
351
- return files;
298
+ return skills;
352
299
  }
353
- async deleteAgent(id) {
354
- // First try the direct path (for backward compatibility)
355
- let filePath = path.join(this.agentsPath, `${id}.md`);
356
- if (await this.fileExists(filePath)) {
357
- await fs.unlink(filePath);
358
- return true;
359
- }
360
- // If not found directly, search for it in subdirectories
361
- const agentFiles = await this.findAgentFiles(this.agentsPath);
362
- for (const agentPath of agentFiles) {
363
- const relativePath = path.relative(this.agentsPath, agentPath);
364
- const agentId = this.pathToId(relativePath);
365
- if (agentId === id) {
366
- await fs.unlink(agentPath);
367
- return true;
368
- }
300
+ async deleteSkill(id) {
301
+ const skillDir = path.join(this.skillsPath, id);
302
+ if (!(await this.fileExists(path.join(skillDir, 'SKILL.md')))) {
303
+ return false;
369
304
  }
370
- return false;
305
+ // Remove the entire skill directory
306
+ await fs.rm(skillDir, { recursive: true, force: true });
307
+ return true;
371
308
  }
372
- agentToMarkdown(agent) {
309
+ skillToMarkdown(skill) {
373
310
  const frontmatter = {
374
- name: agent.name,
375
- description: agent.description,
376
- ...(agent.tools && agent.tools.length > 0 && { tools: agent.tools }),
377
- ...(agent.metadata && {
378
- createdAt: agent.metadata.createdAt.toISOString(),
379
- updatedAt: agent.metadata.updatedAt.toISOString(),
380
- ...(agent.metadata.version && { version: agent.metadata.version })
381
- })
311
+ name: skill.id, // Per spec, name must match directory name (kebab-case)
312
+ description: skill.description,
382
313
  };
383
- const yamlFrontmatter = Object.entries(frontmatter)
384
- .map(([key, value]) => `${key}: ${typeof value === 'string' && value.includes(':') ? `"${value}"` : value}`)
385
- .join('\n');
386
- return `---\n${yamlFrontmatter}\n---\n\n${agent.content || ''}`;
314
+ if (skill.license) {
315
+ frontmatter.license = skill.license;
316
+ }
317
+ if (skill.compatibility) {
318
+ frontmatter.compatibility = skill.compatibility;
319
+ }
320
+ if (skill.allowedTools) {
321
+ frontmatter['allowed-tools'] = skill.allowedTools;
322
+ }
323
+ // Collect metadata fields
324
+ if (skill.metadata && Object.keys(skill.metadata).length > 0) {
325
+ const meta = {};
326
+ for (const [key, value] of Object.entries(skill.metadata)) {
327
+ if (value === undefined || value === null)
328
+ continue;
329
+ if (value instanceof Date) {
330
+ meta[key] = value.toISOString();
331
+ }
332
+ else {
333
+ meta[key] = value;
334
+ }
335
+ }
336
+ if (Object.keys(meta).length > 0) {
337
+ frontmatter.metadata = meta;
338
+ }
339
+ }
340
+ return matter.stringify(skill.content || '', frontmatter);
387
341
  }
388
- markdownToAgent(content, id) {
342
+ markdownToSkill(content, id) {
389
343
  try {
390
- const { data, content: agentContent } = matter(content);
391
- const tools = Array.isArray(data.tools)
392
- ? data.tools
393
- .filter((tool) => typeof tool === 'string')
394
- .map((tool) => tool.trim())
395
- .filter(Boolean)
396
- : typeof data.tools === 'string'
397
- ? data.tools.split(',').map((tool) => tool.trim()).filter(Boolean)
398
- : undefined;
399
- const createdAtSource = data.createdAt;
400
- const updatedAtSource = data.updatedAt;
401
- const createdAt = createdAtSource instanceof Date
402
- ? createdAtSource
403
- : typeof createdAtSource === 'string'
404
- ? new Date(createdAtSource)
405
- : new Date();
406
- const updatedAt = updatedAtSource instanceof Date
407
- ? updatedAtSource
408
- : typeof updatedAtSource === 'string'
409
- ? new Date(updatedAtSource)
410
- : new Date();
344
+ const { data, content: body } = matter(content);
345
+ // Parse allowed-tools (space-delimited string per spec)
346
+ const rawAllowedTools = data['allowed-tools'] || data.allowedTools;
347
+ const allowedTools = typeof rawAllowedTools === 'string' ? rawAllowedTools : undefined;
348
+ // Parse metadata map
349
+ const rawMeta = typeof data.metadata === 'object' && data.metadata !== null ? data.metadata : {};
350
+ const metadata = {};
351
+ if (rawMeta.color)
352
+ metadata.color = String(rawMeta.color);
353
+ if (rawMeta.author)
354
+ metadata.author = rawMeta.author;
355
+ if (rawMeta.version)
356
+ metadata.version = String(rawMeta.version);
357
+ if (Array.isArray(rawMeta.tags))
358
+ metadata.tags = rawMeta.tags.map(String);
359
+ if (Array.isArray(rawMeta.focusAreas))
360
+ metadata.focusAreas = rawMeta.focusAreas.map(String);
361
+ if (Array.isArray(rawMeta.contextPreferences))
362
+ metadata.contextPreferences = rawMeta.contextPreferences.map(String);
363
+ if (Array.isArray(rawMeta.mcpServers)) {
364
+ metadata.mcpServers = rawMeta.mcpServers.map(String);
365
+ }
366
+ else if (typeof rawMeta.mcpServers === 'string') {
367
+ metadata.mcpServers = rawMeta.mcpServers.split(/\s+/).filter(Boolean);
368
+ }
369
+ else if (typeof rawMeta['mcp-servers'] === 'string') {
370
+ metadata.mcpServers = rawMeta['mcp-servers'].split(/\s+/).filter(Boolean);
371
+ }
372
+ if (rawMeta.registryId)
373
+ metadata.registryId = String(rawMeta.registryId);
374
+ if (rawMeta.registrySource)
375
+ metadata.registrySource = String(rawMeta.registrySource);
376
+ if (rawMeta.registryEndpoint)
377
+ metadata.registryEndpoint = String(rawMeta.registryEndpoint);
378
+ if (rawMeta.createdAt)
379
+ metadata.createdAt = new Date(rawMeta.createdAt);
380
+ if (rawMeta.updatedAt)
381
+ metadata.updatedAt = new Date(rawMeta.updatedAt);
382
+ // Copy any additional unknown keys
383
+ for (const [key, value] of Object.entries(rawMeta)) {
384
+ if (!(key in metadata)) {
385
+ metadata[key] = value;
386
+ }
387
+ }
411
388
  return {
412
389
  id,
413
- name: typeof data.name === 'string' ? data.name : '',
390
+ name: typeof data.name === 'string' ? data.name : id,
414
391
  description: typeof data.description === 'string' ? data.description : '',
415
- tools,
416
- content: agentContent.trim() || undefined,
417
- metadata: {
418
- createdAt,
419
- updatedAt,
420
- author: { type: 'human', id: 'current-user', name: 'Current User' },
421
- version: typeof data.version === 'string' ? data.version : undefined
422
- }
392
+ license: typeof data.license === 'string' ? data.license : undefined,
393
+ compatibility: typeof data.compatibility === 'string' ? data.compatibility : undefined,
394
+ allowedTools,
395
+ metadata: Object.keys(metadata).length > 0 ? metadata : undefined,
396
+ content: body.trim() || undefined,
423
397
  };
424
398
  }
425
399
  catch (error) {
426
- console.warn(`Failed to parse agent markdown for ${id}:`, error instanceof Error ? error.message : error);
400
+ console.warn(`Failed to parse skill markdown for ${id}:`, error instanceof Error ? error.message : error);
427
401
  return null;
428
402
  }
429
403
  }
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
@@ -12,13 +12,15 @@ You are primarily focused on **working with knowledge documents** — synthesizi
12
12
  - Activity events — see what's been happening recently in this Coconut instance
13
13
  - Project context — the core definition of what's being built
14
14
  - Architecture context — the technical foundation and conventions
15
+ - Resources — browse and search existing media assets
15
16
 
16
- ✅ **WRITE to documents and tasks:**
17
+ ✅ **WRITE to documents, tasks, and resources:**
17
18
  - Knowledge documents — create new, update existing
18
19
  - Tasks — create new, update existing (for coding agents to execute)
19
20
  - Project context — define and refine the project definition
20
21
  - Architecture context — document the technical architecture
21
- - **ONE document/task at a time** never batch multiple writes
22
+ - Resources generate images, audio, and video via AI; save files from URLs
23
+ - **ONE document/task/generation at a time** — never batch multiple writes
22
24
 
23
25
  ✅ **Help users:**
24
26
  - Understand and synthesize information
@@ -28,7 +30,7 @@ You are primarily focused on **working with knowledge documents** — synthesizi
28
30
 
29
31
  ### Creating Tasks (Important!)
30
32
 
31
- You can **create tasks directly** using the `change_proposals` tool. Tasks are executed by coding agents like:
33
+ You can **create tasks directly** using the `tasks` tool. Tasks are executed by coding agents like:
32
34
  - **Claude Code** (Anthropic)
33
35
  - **Cursor** (with Claude/GPT)
34
36
  - **GitHub Copilot**
@@ -122,7 +124,7 @@ You can **create tasks directly** using the `change_proposals` tool. Tasks are e
122
124
  |-----------|-------------|---------|
123
125
  | `list` | Search tasks | `{ "operation": "list", "filters": { "search": "keyword" } }` |
124
126
  | `get` | Read a task | `{ "operation": "get", "id": "cp-123456" }` |
125
- | `create` | Create new task | `{ "operation": "create", "proposal": { "intent": "...", "content": "..." } }` |
127
+ | `create` | Create new task | `{ "operation": "create", "task": { "intent": "...", "content": "..." } }` |
126
128
  | `update` | Update existing | `{ "operation": "update", "id": "cp-123456", "updates": { "status": "in-review" } }` |
127
129
 
128
130
  **Creating tasks:**
@@ -143,9 +145,9 @@ You can **create tasks directly** using the `change_proposals` tool. Tasks are e
143
145
  | Operation | Description | Example |
144
146
  |-----------|-------------|---------|
145
147
  | `list` | Get recent events | `{ "operation": "list", "limit": 20 }` |
146
- | `list` with filter | Filter by event type | `{ "operation": "list", "limit": 20, "kind": "proposal" }` |
148
+ | `list` with filter | Filter by event type | `{ "operation": "list", "limit": 20, "kind": "task" }` |
147
149
 
148
- **Event kinds include:** `proposal.*`, `knowledge.*`, `agent.*`, `code.*`, `context.*`, `job.*`, `resource.*`, `auth.*`
150
+ **Event kinds include:** `task.*`, `knowledge.*`, `agent.*`, `code.*`, `context.*`, `job.*`, `resource.*`, `auth.*`
149
151
 
150
152
  **When showing events to users:**
151
153
  - Summarize the activity in a readable way (don't just dump raw data)
@@ -194,6 +196,38 @@ You can **create tasks directly** using the `change_proposals` tool. Tasks are e
194
196
 
195
197
  ---
196
198
 
199
+ ### resources — READ + WRITE
200
+
201
+ **What it can do:** Browse existing media resources, generate images/audio/video via AI, and save files from URLs into the resource library. Generated media is automatically saved with thumbnails and metadata.
202
+
203
+ | Operation | Description | Example |
204
+ |-----------|-------------|---------|
205
+ | `list` | Browse/search resources | `{ "operation": "list", "query": "logo" }` |
206
+ | `list` with type filter | Filter by media type | `{ "operation": "list", "type_filter": "image" }` |
207
+ | `get` | Get resource details | `{ "operation": "get", "resource_id": "res-..." }` |
208
+ | `generate_image` | Generate an image via AI | `{ "operation": "generate_image", "prompt": "A modern logo for..." }` |
209
+ | `generate_audio` | Generate speech audio | `{ "operation": "generate_audio", "text": "Welcome to..." }` |
210
+ | `generate_video` | Generate a video via AI | `{ "operation": "generate_video", "prompt": "Ocean waves at sunset" }` |
211
+ | `add_from_url` | Save a URL as a resource | `{ "operation": "add_from_url", "url": "https://..." }` |
212
+
213
+ **Image generation models:**
214
+ - `nano-banana-pro` (default) — fast, high-quality general purpose
215
+ - `flux-2-dev` — good for creative/artistic styles
216
+ - `flux-2-pro` — higher quality, more control
217
+ - `gpt-image-1.5` — best for transparent backgrounds, limited aspect ratios (1:1, 3:2, 2:3)
218
+
219
+ **Rules for resource generation:**
220
+ - **Always tell the user what you're about to generate** before calling the tool
221
+ - **After generation, always include the resource ID** (e.g. `res-1234567890-abc123def`) in your response so the user sees an inline preview — also mention it's available at `/resources`
222
+ - **Video generation takes 2–5 minutes** — warn the user before starting; suggest image or audio if they need something quick
223
+ - **One generation at a time** — consistent with the write-once rule
224
+ - **Use `list` first** if the user asks about existing resources — don't guess IDs
225
+ - **Default to `nano-banana-pro`** — only use other models if the user asks or the task benefits (e.g., transparent backgrounds → `gpt-image-1.5`)
226
+
227
+ **When the user pastes a URL** to an image, audio, or video file, offer to save it as a resource using `add_from_url`.
228
+
229
+ ---
230
+
197
231
  ## Helping Users Define Their Project & Architecture
198
232
 
199
233
  When users want to define or refine their project or architecture, **guide them through discovery** rather than asking them to write everything at once.
@@ -17,7 +17,7 @@ focusAreas:
17
17
  - Coach contributors on meeting accessibility targets.
18
18
  contextPreferences:
19
19
  - .nut/context/project.md
20
- - .nut/.schema/proposal.schema.md
20
+ - .nut/.schema/task.schema.md
21
21
  ---
22
22
  # Agent Schema Example
23
23
 
@@ -11,7 +11,7 @@ sources:
11
11
  - Customer feedback triage 2025-09-18
12
12
  related:
13
13
  - .nut/context/project.md
14
- - .nut/.schema/proposal.schema.md
14
+ - .nut/.schema/task.schema.md
15
15
  owner:
16
16
  name: Kevin Bluer
17
17
  email: kevin@bluer.com
@@ -30,7 +30,7 @@ List the most important facts, decisions, and rationales.
30
30
 
31
31
  ## References
32
32
 
33
- Link to designs, proposals, experiments, and conversations that informed the knowledge.
33
+ Link to designs, tasks, experiments, and conversations that informed the knowledge.
34
34
 
35
35
  ## Follow-ups
36
36