Ferrell Synthetic Intelligence commited on
Commit ·
06eb337
1
Parent(s): 6f0baaa
Add sovereign community node policy
Browse files- app.js +8 -1
- community/README.md +18 -0
- community/node-manifest.json +23 -0
- index.html +4 -1
app.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
const state = { manifest: null, selected: null, files: {
|
| 2 |
'agent.ts': `import { ChatMessage, ModelAdapter } from './types';
|
| 3 |
import { LocalModelRouter } from './router';
|
| 4 |
|
|
@@ -154,6 +154,13 @@ async function boot() {
|
|
| 154 |
state.manifest = { models: [] };
|
| 155 |
appendLog('BOOT', 'Could not load models/manifest.json.', 'warning');
|
| 156 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 157 |
renderModels();
|
| 158 |
const firstReady = state.manifest.models.find(model => model.status !== 'pending');
|
| 159 |
if (firstReady) selectModel(firstReady);
|
|
|
|
| 1 |
+
const state = { manifest: null, node: null, selected: null, files: {
|
| 2 |
'agent.ts': `import { ChatMessage, ModelAdapter } from './types';
|
| 3 |
import { LocalModelRouter } from './router';
|
| 4 |
|
|
|
|
| 154 |
state.manifest = { models: [] };
|
| 155 |
appendLog('BOOT', 'Could not load models/manifest.json.', 'warning');
|
| 156 |
}
|
| 157 |
+
try {
|
| 158 |
+
const nodeResponse = await fetch('community/node-manifest.json', { cache: 'no-store' });
|
| 159 |
+
state.node = await nodeResponse.json();
|
| 160 |
+
$('#node-status').innerHTML = `<b>LOCAL-FIRST</b><br>Network: ${esc(state.node.network_default)}<br>Private data: ${esc(state.node.replication.private)}<br>Group sync: ${esc(state.node.capabilities.encrypted_group_sync ? 'enabled' : 'disabled')}`;
|
| 161 |
+
} catch (error) {
|
| 162 |
+
$('#node-status').textContent = 'Node policy unavailable.';
|
| 163 |
+
}
|
| 164 |
renderModels();
|
| 165 |
const firstReady = state.manifest.models.find(model => model.status !== 'pending');
|
| 166 |
if (firstReady) selectModel(firstReady);
|
community/README.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# AIDE Sovereign Community Node
|
| 2 |
+
|
| 3 |
+
The community layer is local-first and disabled by default. A user can develop privately without an account, server, relay, payment provider, or network connection.
|
| 4 |
+
|
| 5 |
+
## Boundaries
|
| 6 |
+
|
| 7 |
+
- `private`: local-only repository, prompts, traces, credentials, and drafts.
|
| 8 |
+
- `group`: explicitly invited collaborators; encrypted sync and signed changes are required.
|
| 9 |
+
- `public`: deliberately published repository, discussion, issue, or release artifact.
|
| 10 |
+
- `marketplace`: public artifact plus license, price or bounty terms, checksums, and payout provider disclosure.
|
| 11 |
+
|
| 12 |
+
## Current Status
|
| 13 |
+
|
| 14 |
+
This release contains the policy and node manifest only. Peer sync, relays, payments, and moderation services are not implemented and must not be represented as available. The UI must show those capabilities as disabled until their adapters are installed and audited.
|
| 15 |
+
|
| 16 |
+
## Required Design
|
| 17 |
+
|
| 18 |
+
Use Git for code history, signed commits for authorship, end-to-end encryption for group data, explicit replication scopes, replaceable relays for reachability, and user-controlled payment adapters. Never put payment custody or moderation authority in the IDE core.
|
community/node-manifest.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": "1.0",
|
| 3 |
+
"node_mode": "local-first",
|
| 4 |
+
"node_id": "generated-on-first-run",
|
| 5 |
+
"network_default": "disabled",
|
| 6 |
+
"data_boundaries": ["private", "group", "public", "marketplace"],
|
| 7 |
+
"replication": {
|
| 8 |
+
"private": "never",
|
| 9 |
+
"group": "invitation-and-encryption-required",
|
| 10 |
+
"public": "explicit-publish-only",
|
| 11 |
+
"marketplace": "explicit-publish-and-license-required"
|
| 12 |
+
},
|
| 13 |
+
"capabilities": {
|
| 14 |
+
"local_git": true,
|
| 15 |
+
"encrypted_group_sync": false,
|
| 16 |
+
"direct_peer_discovery": false,
|
| 17 |
+
"relay": false,
|
| 18 |
+
"payments": false,
|
| 19 |
+
"moderation": "local-block-mute-report"
|
| 20 |
+
},
|
| 21 |
+
"policy": "No source, prompts, model traces, credentials, or private project metadata leave this device unless the user changes the boundary and approves the action.",
|
| 22 |
+
"future_adapters": ["encrypted-peer-sync", "user-selected-relay", "payment-provider", "artifact-moderation"]
|
| 23 |
+
}
|
index.html
CHANGED
|
@@ -22,6 +22,7 @@
|
|
| 22 |
<button class="activity-button" title="Source control">GIT</button>
|
| 23 |
<button class="activity-button" title="Run and debug">RUN</button>
|
| 24 |
<button class="activity-button" title="Model lanes">AI</button>
|
|
|
|
| 25 |
<span></span>
|
| 26 |
<button class="activity-button" title="Settings">CFG</button>
|
| 27 |
</nav>
|
|
@@ -45,6 +46,8 @@
|
|
| 45 |
<li>Writes require approval</li>
|
| 46 |
<li>Model output is untrusted</li>
|
| 47 |
</ul>
|
|
|
|
|
|
|
| 48 |
</aside>
|
| 49 |
|
| 50 |
<section class="editor-column">
|
|
@@ -55,7 +58,7 @@
|
|
| 55 |
<pre id="code" contenteditable="true" spellcheck="false"></pre>
|
| 56 |
</div>
|
| 57 |
<div class="bottom-panel">
|
| 58 |
-
<div class="panel-tabs"><b>TERMINAL</b><span>PROBLEMS <em>0</em></span><span>OUTPUT</span><span>COLLABORATION</span></div>
|
| 59 |
<div id="terminal" class="terminal"><p><b>~/agent-kit $</b> aide runtime status</p><p class="muted">network: disabled | writes: approval required | coordinator: bounded</p><p class="ok">ready: model registry loaded; coding lane awaiting local checkpoint</p><p><b>~/agent-kit $</b> <span class="cursor"></span></p></div>
|
| 60 |
</div>
|
| 61 |
<footer class="statusbar"><span>LOCAL ONLY</span><span>GIT main*</span><span>UTF-8</span><span>TypeScript</span><b>READY</b></footer>
|
|
|
|
| 22 |
<button class="activity-button" title="Source control">GIT</button>
|
| 23 |
<button class="activity-button" title="Run and debug">RUN</button>
|
| 24 |
<button class="activity-button" title="Model lanes">AI</button>
|
| 25 |
+
<button class="activity-button" title="Sovereign community">NODE</button>
|
| 26 |
<span></span>
|
| 27 |
<button class="activity-button" title="Settings">CFG</button>
|
| 28 |
</nav>
|
|
|
|
| 46 |
<li>Writes require approval</li>
|
| 47 |
<li>Model output is untrusted</li>
|
| 48 |
</ul>
|
| 49 |
+
<div class="section-heading divider">LOCAL NODE</div>
|
| 50 |
+
<div id="node-status" class="node-status" style="border:1px solid #285344;background:#0d211c;color:#91c9aa;padding:9px;font:9px/1.7 ui-monospace,monospace">Loading node policy...</div>
|
| 51 |
</aside>
|
| 52 |
|
| 53 |
<section class="editor-column">
|
|
|
|
| 58 |
<pre id="code" contenteditable="true" spellcheck="false"></pre>
|
| 59 |
</div>
|
| 60 |
<div class="bottom-panel">
|
| 61 |
+
<div class="panel-tabs"><b>TERMINAL</b><span>PROBLEMS <em>0</em></span><span>OUTPUT</span><span>COLLABORATION</span><span>COMMUNITY</span></div>
|
| 62 |
<div id="terminal" class="terminal"><p><b>~/agent-kit $</b> aide runtime status</p><p class="muted">network: disabled | writes: approval required | coordinator: bounded</p><p class="ok">ready: model registry loaded; coding lane awaiting local checkpoint</p><p><b>~/agent-kit $</b> <span class="cursor"></span></p></div>
|
| 63 |
</div>
|
| 64 |
<footer class="statusbar"><span>LOCAL ONLY</span><span>GIT main*</span><span>UTF-8</span><span>TypeScript</span><b>READY</b></footer>
|