atris 3.1.0 → 3.5.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 (54) hide show
  1. package/GETTING_STARTED.md +65 -131
  2. package/README.md +29 -4
  3. package/atris/GETTING_STARTED.md +65 -131
  4. package/atris/PERSONA.md +5 -1
  5. package/atris/atris.md +122 -153
  6. package/atris/skills/aeo/SKILL.md +117 -0
  7. package/atris/skills/atris/SKILL.md +49 -25
  8. package/atris/skills/create-member/SKILL.md +29 -9
  9. package/atris/skills/endgame/SKILL.md +9 -0
  10. package/atris/skills/improve/SKILL.md +2 -2
  11. package/atris/skills/research-search/SKILL.md +167 -0
  12. package/atris/skills/research-search/arxiv_search.py +157 -0
  13. package/atris/skills/research-search/program.md +48 -0
  14. package/atris/skills/research-search/results.tsv +6 -0
  15. package/atris/skills/research-search/scholar_search.py +154 -0
  16. package/atris/skills/tidy/SKILL.md +36 -21
  17. package/atris/team/_template/MEMBER.md +2 -0
  18. package/atris/team/validator/MEMBER.md +35 -1
  19. package/atris.md +118 -178
  20. package/bin/atris.js +37 -6
  21. package/cli/__pycache__/atris_code.cpython-314.pyc +0 -0
  22. package/cli/__pycache__/runtime_guard.cpython-312.pyc +0 -0
  23. package/cli/__pycache__/runtime_guard.cpython-314.pyc +0 -0
  24. package/cli/atris_code.py +889 -0
  25. package/cli/runtime_guard.py +693 -0
  26. package/commands/align.js +15 -0
  27. package/commands/app.js +316 -0
  28. package/commands/autopilot.js +948 -42
  29. package/commands/business.js +691 -11
  30. package/commands/computer.js +1979 -43
  31. package/commands/context-sync.js +5 -0
  32. package/commands/experiments.js +1 -1
  33. package/commands/lifecycle.js +12 -0
  34. package/commands/plugin.js +24 -0
  35. package/commands/pull.js +40 -1
  36. package/commands/push.js +44 -0
  37. package/commands/release.js +183 -0
  38. package/commands/research.js +52 -0
  39. package/commands/serve.js +1 -0
  40. package/commands/sync.js +372 -87
  41. package/commands/verify.js +53 -4
  42. package/commands/wiki.js +71 -26
  43. package/lib/file-ops.js +13 -1
  44. package/lib/journal.js +23 -0
  45. package/lib/reward-config.js +24 -0
  46. package/lib/scorecard.js +58 -6
  47. package/lib/sync-telemetry.js +59 -0
  48. package/lib/todo.js +6 -0
  49. package/lib/wiki.js +235 -60
  50. package/package.json +4 -2
  51. package/utils/api.js +19 -0
  52. package/utils/auth.js +25 -1
  53. package/utils/config.js +24 -0
  54. package/utils/update-check.js +16 -0
package/bin/atris.js CHANGED
@@ -199,7 +199,7 @@ function consoleCmd() {
199
199
  function showHelp() {
200
200
  console.log('');
201
201
  console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
202
- console.log('atrisDevThe new way to build with AI');
202
+ console.log('atrisan operating system for intelligence');
203
203
  console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
204
204
  console.log('');
205
205
  console.log('Quick Start:');
@@ -237,6 +237,7 @@ function showHelp() {
237
237
  console.log(' search - Search journal history (atris search <keyword>)');
238
238
  console.log(' clean - Housekeeping (stale tasks, archive journals, broken refs)');
239
239
  console.log(' verify - Validate work is done (tests, MAP.md, changes)');
240
+ console.log(' release - Tag release, bump version, create GitHub release, draft /launch');
240
241
  console.log(' learn - Project learnings (patterns, pitfalls, preferences)');
241
242
  console.log(' ingest - Local-first wiki ingest into atris/wiki/');
242
243
  console.log(' query - Local-first wiki query against atris/wiki/');
@@ -272,6 +273,7 @@ function showHelp() {
272
273
  console.log('');
273
274
  console.log('Business:');
274
275
  console.log(' business init <name> - Create canonical business workspace (cloud + local)');
276
+ console.log(' business onboard - Onboard from sparse input (--name, --website, --contact)');
275
277
  console.log(' business add <slug> - Connect a business');
276
278
  console.log(' business list - Show connected businesses');
277
279
  console.log(' business remove <slug> - Disconnect a business');
@@ -288,6 +290,7 @@ function showHelp() {
288
290
  console.log(' cr --all - Audit all backend services');
289
291
  console.log('');
290
292
  console.log('Cloud & agents:');
293
+ console.log(' computer - Talk directly to the AI computer (bash or agent exec)');
291
294
  console.log(' console - Start/attach always-on coding console (tmux daemon)');
292
295
  console.log(' agent - Select which Atris agent to use');
293
296
  console.log(' chat - Chat with the selected Atris agent');
@@ -415,7 +418,7 @@ if (command === 'help' || command === '--help' || command === '-h') {
415
418
 
416
419
  // Core command handlers — loaded eagerly (used by interactiveEntry default path)
417
420
  const { initAtris: initCmd } = require('../commands/init');
418
- const { syncAtris: syncCmd } = require('../commands/sync');
421
+ const { syncAtris: syncCmd, syncAtrisAll: syncAllCmd } = require('../commands/sync');
419
422
  const { logAtris: logCmd } = require('../commands/log');
420
423
  const { activateAtris: activateCmd } = require('../commands/activate');
421
424
  const { statusAtris: statusCmd } = require('../commands/status');
@@ -424,9 +427,9 @@ const { planAtris: planCmd, doAtris: doCmd, reviewAtris: reviewCmd } = require('
424
427
  // All other commands are lazy-loaded inline (require() only when invoked)
425
428
 
426
429
  // Check if this is a known command or natural language input
427
- const knownCommands = ['init', 'log', 'status', 'analytics', 'visualize', 'brainstorm', 'autopilot', 'run', 'plan', 'do', 'review',
430
+ const knownCommands = ['init', 'log', 'status', 'analytics', 'visualize', 'brainstorm', 'autopilot', 'run', 'plan', 'do', 'review', 'release',
428
431
  'activate', '_activate', 'agent', 'chat', 'console', 'login', 'logout', 'whoami', 'switch', 'use', 'accounts', '_resolve', '_profile-email', '_switch-session', 'shell-init', 'update', 'upgrade', 'version', 'help', 'next', 'atris',
429
- 'clean', 'verify', 'search', 'skill', 'member', 'learn', 'plugin', 'experiments', 'pull', 'push', 'align', 'terminal', 'diff', 'business', 'sync',
432
+ 'clean', 'verify', 'search', 'skill', 'member', 'app', 'learn', 'plugin', 'experiments', 'pull', 'push', 'align', 'terminal', 'computer', 'diff', 'business', 'sync',
430
433
  'ingest', 'query', 'lint', 'loop',
431
434
  'gmail', 'calendar', 'twitter', 'slack', 'integrations', 'setup', 'clean-workspace', 'cw',
432
435
  'fork', 'browse', 'publish', 'sleep', 'wake', 'feedback', 'wiki', 'code-review', 'cr', 'soul', 'fleet'];
@@ -795,7 +798,15 @@ if (command === 'init') {
795
798
  } else if (command === 'activate') {
796
799
  activateCmd();
797
800
  } else if (command === 'update' || command === 'sync') {
798
- syncCmd();
801
+ if (process.argv.includes('--all')) {
802
+ const dryRun = process.argv.includes('--dry-run');
803
+ const force = process.argv.includes('--force') || process.argv.includes('--yes') || process.argv.includes('-y');
804
+ Promise.resolve(syncAllCmd({ dryRun, force }))
805
+ .then(() => process.exit(0))
806
+ .catch((err) => { console.error(`\n✗ Error: ${err.message || err}`); process.exit(1); });
807
+ } else {
808
+ syncCmd();
809
+ }
799
810
  } else if (command === 'upgrade') {
800
811
  upgradeAtris().then(() => process.exit(0)).catch((err) => { console.error(`\n✗ Error: ${err.message || err}`); process.exit(1); });
801
812
  } else if (command === 'chat') {
@@ -1000,8 +1011,20 @@ if (command === 'init') {
1000
1011
  const dryRun = process.argv.includes('--dry-run') || process.argv.includes('-n');
1001
1012
  require('../commands/clean').cleanAtris({ dryRun });
1002
1013
  } else if (command === 'verify') {
1014
+ const sectionIdx = process.argv.indexOf('--section');
1015
+ if (sectionIdx > 0 && process.argv[sectionIdx + 1]) {
1016
+ const slug = process.argv[3] && !process.argv[3].startsWith('--') ? process.argv[3] : null;
1017
+ const section = process.argv[sectionIdx + 1];
1018
+ const code = require('../commands/verify').verifyRubric(slug, section);
1019
+ process.exit(code);
1020
+ }
1003
1021
  const taskId = process.argv[3] || null;
1004
1022
  require('../commands/verify').verifyAtris(taskId);
1023
+ } else if (command === 'release') {
1024
+ const dryRun = process.argv.includes('--dry-run');
1025
+ require('../commands/release').releaseAtris({ dryRun })
1026
+ .then(() => process.exit(0))
1027
+ .catch((err) => { console.error(`\n✗ Error: ${err.message || err}`); process.exit(1); });
1005
1028
  } else if (command === 'search') {
1006
1029
  const keyword = process.argv.slice(3).join(' ');
1007
1030
  searchJournal(keyword);
@@ -1050,6 +1073,10 @@ if (command === 'init') {
1050
1073
  const subcommand = process.argv[3];
1051
1074
  const args = process.argv.slice(4);
1052
1075
  require('../commands/member').memberCommand(subcommand, ...args);
1076
+ } else if (command === 'app') {
1077
+ const subcommand = process.argv[3];
1078
+ const args = process.argv.slice(4);
1079
+ require('../commands/app').appCommand(subcommand, ...args);
1053
1080
  } else if (command === 'pull') {
1054
1081
  require('../commands/pull').pullAtris()
1055
1082
  .then(() => process.exit(0))
@@ -1066,6 +1093,10 @@ if (command === 'init') {
1066
1093
  require('../commands/terminal').terminalAtris()
1067
1094
  .then(() => process.exit(0))
1068
1095
  .catch((err) => { console.error(`\n✗ Error: ${err.message || err}`); process.exit(1); });
1096
+ } else if (command === 'computer') {
1097
+ require('../commands/computer').runComputer()
1098
+ .then(() => process.exit(0))
1099
+ .catch((err) => { console.error(`\n✗ Error: ${err.message || err}`); process.exit(1); });
1069
1100
  } else if (command === 'diff') {
1070
1101
  let diffSlug = process.argv[3];
1071
1102
  if (!diffSlug || diffSlug.startsWith('-')) {
@@ -1536,7 +1567,7 @@ async function atrisDevEntry(userInput = null) {
1536
1567
  }
1537
1568
 
1538
1569
  console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
1539
- console.log('🤖 atrisDev Protocol Navigator Agent');
1570
+ console.log('atrisnavigator agent');
1540
1571
  console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
1541
1572
  console.log('');
1542
1573