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/AGENTS.md +24 -4
- package/README.md +3 -3
- package/atris/atris.md +38 -13
- package/atris/features/company-brain-sync/build.md +140 -0
- package/atris/features/company-brain-sync/idea.md +52 -0
- package/atris/features/company-brain-sync/validate.md +229 -0
- package/atris/skills/imessage/SKILL.md +44 -0
- package/bin/atris.js +44 -4
- package/commands/align.js +1 -1
- package/commands/brain.js +840 -0
- package/commands/business-sync.js +716 -0
- package/commands/init.js +15 -3
- package/commands/integrations.js +128 -0
- package/commands/live.js +28 -6
- package/commands/now.js +263 -0
- package/commands/pull.js +121 -6
- package/commands/push.js +146 -48
- package/commands/task.js +1658 -18
- package/lib/company-brain-sync.js +178 -0
- package/lib/manifest.js +2 -1
- package/lib/task-db.js +271 -4
- package/package.json +12 -2
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', '
|
|
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
|
-
|
|
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
|
}
|