atris 3.38.0 → 3.40.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 (77) hide show
  1. package/AGENTS.md +25 -6
  2. package/atris/PERSONA.md +8 -4
  3. package/atris.md +7 -0
  4. package/ax +2 -1
  5. package/bin/atris.js +30 -5
  6. package/commands/agent-spawn.js +13 -11
  7. package/commands/autoland.js +28 -77
  8. package/commands/bench.js +10 -12
  9. package/commands/business.js +345 -0
  10. package/commands/chat-scan.js +5 -7
  11. package/commands/codex-goal.js +8 -10
  12. package/commands/console.js +19 -3
  13. package/commands/decide.js +166 -0
  14. package/commands/deck.js +1 -4
  15. package/commands/drill.js +14 -24
  16. package/commands/engine.js +196 -8
  17. package/commands/gm.js +8 -6
  18. package/commands/harvest.js +1 -4
  19. package/commands/init.js +23 -3
  20. package/commands/land.js +8 -14
  21. package/commands/launchpad.js +1 -14
  22. package/commands/lifecycle.js +5 -5
  23. package/commands/log.js +55 -5
  24. package/commands/member.js +558 -574
  25. package/commands/mission.js +456 -237
  26. package/commands/pack.js +2746 -164
  27. package/commands/play.js +6 -4
  28. package/commands/probe.js +2 -2
  29. package/commands/pulse.js +15 -16
  30. package/commands/release.js +10 -9
  31. package/commands/router.js +5 -4
  32. package/commands/site-deploy.js +870 -0
  33. package/commands/site.js +11 -2
  34. package/commands/slop.js +14 -2
  35. package/commands/stream.js +4 -18
  36. package/commands/task.js +880 -558
  37. package/commands/taste.js +101 -0
  38. package/commands/team.js +83 -3
  39. package/commands/vercel.js +4 -2
  40. package/commands/voice.js +195 -0
  41. package/commands/watch.js +1 -22
  42. package/commands/wiki.js +1 -4
  43. package/commands/workflow.js +2 -2
  44. package/commands/worktree.js +1 -14
  45. package/commands/xp.js +27 -24
  46. package/lib/accept-verify-gate.js +5 -1
  47. package/lib/arg-parser.js +41 -0
  48. package/lib/auto-accept-certified.js +116 -1
  49. package/lib/autoland.js +66 -0
  50. package/lib/bench/runner.js +19 -1
  51. package/lib/context-gatherer.js +7 -1
  52. package/lib/engine-registry.js +141 -20
  53. package/lib/falsifier-probe.js +84 -0
  54. package/lib/fleet.js +65 -15
  55. package/lib/git-spawn.js +15 -0
  56. package/lib/json-file.js +37 -0
  57. package/lib/known-commands.js +2 -2
  58. package/lib/lesson-preflight.js +146 -0
  59. package/lib/loop-doctor.js +0 -2
  60. package/lib/mission-human-asks.js +28 -0
  61. package/lib/mission-protected-lane.js +4 -1
  62. package/lib/official-cli-integration.js +47 -2
  63. package/lib/orb-context.js +8 -1
  64. package/lib/pack-capabilities.js +685 -0
  65. package/lib/router-brain.js +51 -1
  66. package/lib/runner-command.js +0 -6
  67. package/lib/self-drive.js +44 -13
  68. package/lib/task-db.js +137 -3
  69. package/lib/task-decision.js +50 -0
  70. package/lib/taste-lessons.js +153 -0
  71. package/lib/tool-result-encode.js +17 -1
  72. package/lib/voice-gate.js +66 -0
  73. package/lib/wish-audit.js +1 -1
  74. package/lib/wish-delegate.js +1 -1
  75. package/lib/zip.js +95 -7
  76. package/package.json +2 -1
  77. package/templates/business-starter/persona.md +9 -0
package/commands/log.js CHANGED
@@ -97,6 +97,56 @@ function readDigestSection(root, title, relativePath, maxLines = null) {
97
97
  };
98
98
  }
99
99
 
100
+ // Splits a journal body into its ## groups so the digest can show
101
+ // completed / inbox / notes as short labeled blocks instead of a raw dump.
102
+ function journalGroups(lines) {
103
+ const groups = [];
104
+ let current = null;
105
+ for (const line of lines) {
106
+ const heading = line.match(/^##\s+(.+?)\s*$/);
107
+ if (heading) {
108
+ current = { heading: heading[1], lines: [] };
109
+ groups.push(current);
110
+ } else if (current) {
111
+ current.lines.push(line);
112
+ }
113
+ }
114
+ return groups;
115
+ }
116
+
117
+ function bulletCount(group) {
118
+ return group.lines.filter((line) => /^\s*-\s+/.test(line)).length;
119
+ }
120
+
121
+ function digestSummaryLine(date, sections) {
122
+ let completed = 0;
123
+ let inbox = 0;
124
+ for (const section of sections) {
125
+ for (const group of journalGroups(section.lines)) {
126
+ if (/^completed/i.test(group.heading)) completed += bulletCount(group);
127
+ else if (/^inbox/i.test(group.heading)) inbox += bulletCount(group);
128
+ }
129
+ }
130
+ const parts = [`${sections.length} log${sections.length === 1 ? '' : 's'}`];
131
+ if (completed) parts.push(`${completed} completed`);
132
+ if (inbox) parts.push(`${inbox} inbox`);
133
+ return `${date}: ${parts.join(', ')}`;
134
+ }
135
+
136
+ function renderDigestSection(section) {
137
+ const groups = journalGroups(section.lines);
138
+ if (!groups.length) {
139
+ return [`=== ${section.title} ===`, section.path, ...section.lines].join('\n');
140
+ }
141
+ const out = [`=== ${section.title} ===`, section.path];
142
+ for (const group of groups) {
143
+ const body = group.lines.filter((line) => line.trim() && line.trim() !== '---');
144
+ if (!body.length) continue;
145
+ out.push('', `${group.heading.toLowerCase()} (${bulletCount(group)})`, ...body);
146
+ }
147
+ return out.join('\n');
148
+ }
149
+
100
150
  function logsDigest(args = [], options = {}) {
101
151
  const root = options.cwd || process.cwd();
102
152
  const date = digestDate(args);
@@ -125,11 +175,11 @@ function logsDigest(args = [], options = {}) {
125
175
  } else if (sections.length === 0) {
126
176
  console.log(`No logs for ${date} yet.`);
127
177
  } else {
128
- console.log(sections.map((section) => [
129
- `=== ${section.title} ===`,
130
- section.path,
131
- ...section.lines,
132
- ].join('\n')).join('\n\n'));
178
+ console.log([
179
+ digestSummaryLine(date, sections),
180
+ '',
181
+ ...sections.map(renderDigestSection),
182
+ ].join('\n'));
133
183
  }
134
184
 
135
185
  return payload;