atris 3.15.0 → 3.15.11

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/bin/atris.js CHANGED
@@ -90,9 +90,21 @@ if (!skipUpdateCheck && (!process.argv[2] || (process.argv[2] && !['version', 'u
90
90
  }
91
91
 
92
92
  const command = process.argv[2];
93
+ const commandArgs = process.argv.slice(3);
94
+ const firstCommandArg = process.argv[3];
95
+ const isBusinessSyncSafetyCommand = command === 'sync'
96
+ && (
97
+ commandArgs.includes('--status')
98
+ || commandArgs.includes('--review')
99
+ || commandArgs.includes('--resolve')
100
+ || firstCommandArg === 'status'
101
+ || firstCommandArg === 'doctor'
102
+ || firstCommandArg === 'review'
103
+ || firstCommandArg === 'resolve'
104
+ );
93
105
 
94
106
  // Auto-sync skills only for commands that modify workspace state
95
- if (['init', 'update', 'sync', 'upgrade'].includes(command)) {
107
+ if (['init', 'update', 'upgrade'].includes(command) || (command === 'sync' && !isBusinessSyncSafetyCommand)) {
96
108
  try {
97
109
  const { syncSkills } = require('../commands/sync');
98
110
  const skillsUpdated = syncSkills({ silent: true });
@@ -238,6 +250,7 @@ function showHelp() {
238
250
  console.log('');
239
251
  console.log('Context & tracking:');
240
252
  console.log(' log - Add ideas to inbox');
253
+ console.log(' now - Show atris/now.md, the current operating truth');
241
254
  console.log(' activate - Load Atris context');
242
255
  console.log(' status - See local work and completions (`atris status <business>` for remote)');
243
256
  console.log(' analytics - Show recent productivity from journals');
@@ -247,6 +260,7 @@ function showHelp() {
247
260
  console.log(' task - Local agent task plane (atomic claims, TODO import)');
248
261
  console.log(' release - Tag release, bump version, create GitHub release, draft /launch');
249
262
  console.log(' learn - Project learnings (patterns, pitfalls, preferences)');
263
+ console.log(' brain - Compile MAP/TODO/wiki/state into a loadable agent brain');
250
264
  console.log(' ingest - Local-first wiki ingest into atris/wiki/');
251
265
  console.log(' query - Local-first wiki query against atris/wiki/');
252
266
  console.log(' lint - Local-first wiki lint for atris/wiki/');
@@ -319,6 +333,7 @@ function showHelp() {
319
333
  console.log(' calendar - Calendar commands (today, week)');
320
334
  console.log(' twitter - Twitter commands (post)');
321
335
  console.log(' slack - Slack commands (channels)');
336
+ console.log(' imessage - Local Mac iMessage commands (doctor, recent)');
322
337
  console.log(' integrations - Show integration status');
323
338
  console.log('');
324
339
  console.log('Skills:');
@@ -443,11 +458,11 @@ const { planAtris: planCmd, doAtris: doCmd, reviewAtris: reviewCmd } = require('
443
458
  // All other commands are lazy-loaded inline (require() only when invoked)
444
459
 
445
460
  // Check if this is a known command or natural language input
446
- const knownCommands = ['init', 'log', 'status', 'analytics', 'visualize', 'brainstorm', 'autopilot', 'run', 'plan', 'do', 'review', 'release',
461
+ const knownCommands = ['init', 'log', 'now', 'status', 'analytics', 'visualize', 'brain', 'brainstorm', 'autopilot', 'run', 'plan', 'do', 'review', 'release',
447
462
  'activate', '_activate', 'agent', 'chat', 'console', 'login', 'logout', 'whoami', 'switch', 'use', 'accounts', '_resolve', '_profile-email', '_switch-session', 'shell-init', 'update', 'upgrade', 'version', 'help', 'next', 'atris',
448
463
  'clean', 'verify', 'search', 'skill', 'member', 'app', 'learn', 'plugin', 'experiments', 'receipt', 'proof', 'openclaw', 'pull', 'push', 'live', 'align', 'terminal', 'computer', 'diff', 'business', 'sync',
449
464
  'ingest', 'query', 'lint', 'loop', 'task', 'aeo',
450
- 'gmail', 'calendar', 'twitter', 'slack', 'integrations', 'setup', 'clean-workspace', 'cw',
465
+ 'gmail', 'calendar', 'twitter', 'slack', 'imessage', 'integrations', 'setup', 'clean-workspace', 'cw',
451
466
  'fork', 'browse', 'publish', 'sleep', 'wake', 'feedback', 'errors', 'wiki', 'code-review', 'cr', 'soul', 'fleet'];
452
467
 
453
468
  // Check if command is an atris.md spec file - triggers welcome visualization
@@ -802,6 +817,10 @@ if (command === 'init') {
802
817
  Promise.resolve(require('../commands/aeo').run(process.argv.slice(3)))
803
818
  .then(() => process.exit(0))
804
819
  .catch((err) => { console.error(`\n✗ Error: ${err.message || err}`); process.exit(1); });
820
+ } else if (command === 'brain') {
821
+ Promise.resolve(require('../commands/brain').brainCommand(process.argv.slice(3)))
822
+ .then(() => process.exit(0))
823
+ .catch((err) => { console.error(`\n✗ Error: ${err.message || err}`); process.exit(1); });
805
824
  } else if (command === 'agent') {
806
825
  agentAtris().then(() => process.exit(0)).catch((err) => { console.error(`\n✗ Error: ${err.message || err}`); process.exit(1); });
807
826
  } else if (command === 'log') {
@@ -821,10 +840,24 @@ if (command === 'init') {
821
840
  } else {
822
841
  logCmd();
823
842
  }
843
+ } else if (command === 'now') {
844
+ require('../commands/now').nowAtris(process.argv.slice(3));
824
845
  } else if (command === 'activate') {
825
846
  activateCmd();
826
847
  } else if (command === 'update' || command === 'sync') {
827
- if (process.argv.includes('--all')) {
848
+ const firstSyncArg = process.argv[3];
849
+ const isBusinessSync = command === 'sync'
850
+ && (
851
+ fs.existsSync(path.join(process.cwd(), '.atris', 'business.json'))
852
+ || isBusinessSyncSafetyCommand
853
+ || (firstSyncArg && !firstSyncArg.startsWith('-'))
854
+ )
855
+ && firstSyncArg !== 'all';
856
+ if (isBusinessSync) {
857
+ Promise.resolve(require('../commands/business-sync').businessSync(process.argv.slice(3)))
858
+ .then(() => process.exit(0))
859
+ .catch((err) => { console.error(`\n✗ Error: ${err.message || err}`); process.exit(1); });
860
+ } else if (process.argv.includes('--all')) {
828
861
  const dryRun = process.argv.includes('--dry-run');
829
862
  const force = process.argv.includes('--force') || process.argv.includes('--yes') || process.argv.includes('-y');
830
863
  Promise.resolve(syncAllCmd({ dryRun, force }))
@@ -1081,6 +1114,13 @@ if (command === 'init') {
1081
1114
  slackCommand(subcommand, ...args)
1082
1115
  .then(() => process.exit(0))
1083
1116
  .catch((err) => { console.error(`✗ Error: ${err.message || err}`); process.exit(1); });
1117
+ } else if (command === 'imessage') {
1118
+ const { imessageCommand } = require('../commands/integrations');
1119
+ const subcommand = process.argv[3];
1120
+ const args = process.argv.slice(4);
1121
+ imessageCommand(subcommand, ...args)
1122
+ .then(() => process.exit(0))
1123
+ .catch((err) => { console.error(`✗ Error: ${err.message || err}`); process.exit(1); });
1084
1124
  } else if (command === 'integrations') {
1085
1125
  const { integrationsStatus } = require('../commands/integrations');
1086
1126
  integrationsStatus()
package/commands/align.js CHANGED
@@ -473,7 +473,7 @@ async function alignHardLocalToCloud(token, biz, localDir) {
473
473
  console.log(` Manifest NOT updated. Re-run \`atris align ${resolvedSlug} --fix --hard\` to retry.`);
474
474
  process.exit(1);
475
475
  }
476
- saveManifest(resolvedSlug, buildManifest(localFiles, null));
476
+ saveManifest(resolvedSlug, buildManifest(localFiles, null, { workspaceRoot: localDir }));
477
477
  console.log(` Force-push complete: ${written}/${fileObjs.length} pushed, ${toDelete.length} cloud-only entries deleted.`);
478
478
  console.log(` ${businessName} is now mirrored from local.`);
479
479
  }