@atlasnomos/atlas 1.1.8 → 1.1.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlasnomos/atlas",
3
- "version": "1.1.8",
3
+ "version": "1.1.10",
4
4
  "description": "Production-grade AI governance kernel for autonomous agents with fail-closed security and cryptographic audit trails",
5
5
  "main": "atlas.js",
6
6
  "bin": {
@@ -47,6 +47,7 @@ class InitCommand {
47
47
 
48
48
  // 2. Save .env
49
49
  let envContent = '# ATLAS Environment Configuration\n';
50
+ envContent += 'ATLAS_DEV_BYPASS=true\n'; // Enable seamless local development
50
51
  for (const [k, v] of Object.entries(keys)) {
51
52
  if (v) envContent += `${k}=${v}\n`;
52
53
  }
@@ -69,13 +70,13 @@ class InitCommand {
69
70
  "default_provider": keys.OPENROUTER_API_KEY ? "openrouter" : "anthropic",
70
71
  "roles": {
71
72
  "planner": {
72
- "model": "anthropic/claude-3-sonnet",
73
+ "model": "anthropic/claude-3.5-sonnet",
73
74
  "temperature": 0.1,
74
75
  "max_tokens": 4096,
75
76
  "risk_limit": 1
76
77
  },
77
78
  "generator": {
78
- "model": "anthropic/claude-3-sonnet",
79
+ "model": "anthropic/claude-3.5-sonnet",
79
80
  "temperature": 0.2,
80
81
  "max_tokens": 4096,
81
82
  "risk_limit": 2
@@ -87,7 +88,7 @@ class InitCommand {
87
88
  "risk_limit": 1
88
89
  },
89
90
  "fixer": {
90
- "model": "anthropic/claude-3-sonnet",
91
+ "model": "anthropic/claude-3.5-sonnet",
91
92
  "temperature": 0.1,
92
93
  "max_tokens": 4096,
93
94
  "risk_limit": 1
@@ -99,7 +100,31 @@ class InitCommand {
99
100
  };
100
101
 
101
102
  if (fs.existsSync(modelsPath)) {
102
- console.log(' ⚠ atlas.models.json already exists. Merge not supported yet. skipping.');
103
+ console.log(' ⚠ atlas.models.json already exists. Checking for missing mandatory roles...');
104
+ try {
105
+ const existingContent = JSON.parse(fs.readFileSync(modelsPath, 'utf8'));
106
+ let updated = false;
107
+
108
+ if (!existingContent.roles) existingContent.roles = {};
109
+
110
+ const mandatoryRoles = ['planner', 'generator', 'reviewer', 'fixer'];
111
+ for (const role of mandatoryRoles) {
112
+ if (!existingContent.roles[role]) {
113
+ console.log(` + Adding missing mandatory role: ${role}`);
114
+ existingContent.roles[role] = template.roles[role];
115
+ updated = true;
116
+ }
117
+ }
118
+
119
+ if (updated) {
120
+ fs.writeFileSync(modelsPath, JSON.stringify(existingContent, null, 4), 'utf8');
121
+ console.log(' ✓ Healed atlas.models.json with missing roles.');
122
+ } else {
123
+ console.log(' ✓ All mandatory roles are present.');
124
+ }
125
+ } catch (e) {
126
+ console.error(` ⛔ Failed to parse or update existing atlas.models.json: ${e.message}`);
127
+ }
103
128
  } else {
104
129
  fs.writeFileSync(modelsPath, JSON.stringify(template, null, 4), 'utf8');
105
130
  console.log(' ✓ Created atlas.models.json');
@@ -361,9 +361,11 @@ class KernelBootstrap {
361
361
  const { getInstance: getSentinel } = require('../constitution/SentinelInterface');
362
362
  const sentinel = getSentinel();
363
363
 
364
- if (!IS_LGM) {
364
+ if (!IS_LGM && this.tierManager.requiresSentinel()) {
365
365
  await mcp.authorize(sentinel);
366
366
  console.log(' ✓ MCP: Authorized and Locked');
367
+ } else if (!IS_LGM) {
368
+ console.log(' ⚠ MCP: Authorized via Local Bypass (DEV Tier)');
367
369
  } else {
368
370
  console.log(' ⚠ MCP: Local Authorization (LGM Enabled)');
369
371
  }
@@ -465,12 +465,15 @@ class SentinelInterface {
465
465
  const options = {
466
466
  method,
467
467
  headers: {
468
- 'Content-Type': 'application/json',
469
- 'X-API-Key': this.apiKey
468
+ 'Content-Type': 'application/json'
470
469
  },
471
470
  timeout: timeoutMs
472
471
  };
473
472
 
473
+ if (this.apiKey) {
474
+ options.headers['X-API-Key'] = this.apiKey;
475
+ }
476
+
474
477
  const req = transport.request(`${baseUrl}${urlPath}`, options, (res) => {
475
478
  let responseData = '';
476
479
  res.on('data', chunk => responseData += chunk);