Feat rebrand armature (#43)
All checks were successful
CI/CD / detect-changes (push) Successful in 3s
CI/CD / test-frontend (push) Successful in 5s
CI/CD / test-go-pg (push) Successful in 2m34s
CI/CD / test-sqlite (push) Successful in 2m46s
CI/CD / build-and-deploy (push) Successful in 1m55s

Co-authored-by: Jeffrey Smith <jasafpro@gmail.com>
Co-committed-by: Jeffrey Smith <jasafpro@gmail.com>
This commit was merged in pull request #43.
This commit is contained in:
2026-03-31 23:25:37 +00:00
committed by xcaliber
parent fb5284f667
commit 680ec3b897
321 changed files with 956 additions and 1033 deletions

View File

@@ -1,6 +1,6 @@
# Packages
Installable `.pkg` archives for Chat Switchboard. Each subdirectory is a
Installable `.pkg` archives for Chat Armature. Each subdirectory is a
package — either a surface (routable UI), an extension (hooks/tools/pipes),
or both (`full` type).

View File

@@ -5,7 +5,7 @@
"version": "0.1.0",
"tier": "browser",
"icon": "🐛",
"author": "Switchboard Core",
"author": "Armature",
"description": "Public bug report submission with severity-based routing, team assignment, and SLA timers.",
"permissions": [],

View File

@@ -5,7 +5,7 @@
"tier": "starlark",
"version": "0.2.0",
"description": "Core chat library — conversations, messages, participants, read cursors. Usable by other packages via lib.require().",
"author": "switchboard",
"author": "armature",
"permissions": ["db.write", "realtime.publish"],

View File

@@ -9,7 +9,7 @@
"version": "0.2.0",
"icon": "\ud83d\udcac",
"description": "Chat surface — conversations, messaging, typing indicators, read receipts.",
"author": "switchboard",
"author": "armature",
"permissions": ["db.write", "realtime.publish"],

View File

@@ -5,7 +5,7 @@
"version": "0.1.0",
"tier": "browser",
"icon": "📝",
"author": "Switchboard Core",
"author": "Armature",
"description": "Multi-party content review with quorum signoff and revision cycle.",
"permissions": [],

View File

@@ -4,7 +4,7 @@
"version": "1.0.0",
"type": "extension",
"tier": "browser",
"author": "switchboard",
"author": "armature",
"description": "Renders ```csv code blocks as sortable, interactive HTML tables",
"requires": [],
"permissions": [],

View File

@@ -1,5 +1,5 @@
// ==========================================
// Switchboard Core — Dashboard Package (v0.31.1)
// Armature — Dashboard Package (v0.31.1)
// ==========================================
// SDK Exercise Surface. Exercises every sw.* primitive with ZERO
// component CSS overrides. All styling comes from the SDK itself.

View File

@@ -4,7 +4,7 @@
"type": "full",
"version": "0.31.1",
"tier": "browser",
"author": "Switchboard Core",
"author": "Armature",
"icon": "📊",
"description": "Project dashboard exercising all SDK primitives (requires legacy sw.* SDK — dormant until rewritten)",
"requires": ["legacy-sdk"],

View File

@@ -4,7 +4,7 @@
"version": "1.0.0",
"type": "extension",
"tier": "browser",
"author": "switchboard",
"author": "armature",
"description": "Renders ```diff code blocks with syntax-highlighted additions, deletions, and context lines",
"requires": [],
"permissions": [],

View File

@@ -1,5 +1,5 @@
/* ==========================================
Switchboard Core — Editor Surface (v0.25.0)
Armature — Editor Surface (v0.25.0)
==========================================
Replaces editor-mode.css for the pane-based editor.
Covers: topbar, bootstrap, and component-specific

View File

@@ -1,5 +1,5 @@
// ==========================================
// Switchboard Core — Editor Package (v0.31.0)
// Armature — Editor Package (v0.31.0)
// ==========================================
// Installable .pkg that provides the code editor surface.
// Mounts into #extension-mount (surface-extension template).

View File

@@ -4,7 +4,7 @@
"type": "full",
"version": "0.31.0",
"tier": "browser",
"author": "Switchboard Core",
"author": "Armature",
"icon": "✏️",
"description": "Code editor with workspace management, file tree, and AI assist (requires legacy sw.* SDK — dormant until rewritten)",
"requires": ["legacy-sdk"],

View File

@@ -5,7 +5,7 @@
"version": "0.1.0",
"tier": "starlark",
"icon": "🏢",
"author": "Switchboard Core",
"author": "Armature",
"description": "Employee onboarding with automated provisioning, manager signoff, and welcome notification.",
"permissions": ["db.write", "notifications.send"],

View File

@@ -9,7 +9,7 @@
"version": "0.2.0",
"icon": "🔀",
"description": "Gitea issue and PR board powered by the gitea-client library. Uses extension connections for authentication.",
"author": "switchboard",
"author": "armature",
"permissions": ["connections.read"],

View File

@@ -5,7 +5,7 @@
"tier": "starlark",
"version": "1.0.1",
"description": "Shared Gitea client — connections, API helpers, optional data caching.",
"author": "switchboard",
"author": "armature",
"permissions": ["api.http", "connections.read", "db.read", "db.write"],

View File

@@ -27,7 +27,7 @@
type: 'full',
version: '0.31.1',
tier: 'browser',
author: 'Switchboard Core',
author: 'Armature',
description: 'Project dashboard exercising all SDK primitives',
route: '/s/dashboard',
permissions: [],

View File

@@ -27,7 +27,7 @@
type: 'full',
version: '0.31.0',
tier: 'browser',
author: 'Switchboard Core',
author: 'Armature',
description: 'Code editor with workspace management',
route: '/s/editor',
layout: 'editor',

View File

@@ -14,9 +14,9 @@
var resp = await fetch(T.base + '/metrics');
T.assert(resp.ok, 'expected 200 from /metrics, got ' + resp.status);
var text = await resp.text();
T.assert(text.indexOf('switchboard_http_requests_total') !== -1, 'expected switchboard_http_requests_total in /metrics');
T.assert(text.indexOf('switchboard_http_request_duration_seconds') !== -1, 'expected switchboard_http_request_duration_seconds in /metrics');
T.assert(text.indexOf('switchboard_websocket_connections') !== -1, 'expected switchboard_websocket_connections in /metrics');
T.assert(text.indexOf('armature_http_requests_total') !== -1, 'expected armature_http_requests_total in /metrics');
T.assert(text.indexOf('armature_http_request_duration_seconds') !== -1, 'expected armature_http_request_duration_seconds in /metrics');
T.assert(text.indexOf('armature_websocket_connections') !== -1, 'expected armature_websocket_connections in /metrics');
});
// -- GET /api/docs (Swagger UI) --

View File

@@ -270,7 +270,7 @@
function getAuthTokenFromStorage() {
var env = (T.base || '').replace(/^\//, '') || 'default';
var keys = ['sb_auth_' + env, 'sb_auth', 'sb_token'];
var keys = ['arm_auth_' + env, 'arm_auth', 'arm_token'];
for (var i = 0; i < keys.length; i++) {
try {
var raw = localStorage.getItem(keys[i]);

View File

@@ -15,7 +15,7 @@
* 8. tier-security.js — Adversarial red-team tests (auth, cross-tenant, input validation)
* 9. tier-providers.js — Three-tier provider CRUD + live completions
* 10. tier-packaging.js — Extension permission lifecycle + secrets (v0.29.0)
* 11. tier-sdk.js — Switchboard SDK contract tests
* 11. tier-sdk.js — Armature SDK contract tests
* 12. ui.js — Render functions, export, provider setup panel
* 11. (this file) — Boot
*/

View File

@@ -3,7 +3,7 @@
* Validates Preact SDK (sw/sdk/index.js) contract: boot, identity,
* REST client, events, theme, pipe registration, execution ordering,
* scoping, halt semantics, error isolation, introspection.
* v0.37.14: Updated from Switchboard.init() to boot() API.
* v0.37.14: Updated from Armature.init() to boot() API.
*/
(function () {
'use strict';

View File

@@ -236,7 +236,7 @@
}, 'Providers');
T.el.controls.appendChild(btnProv);
// SDK tier button — tests switchboard-sdk.js contract
// SDK tier button — tests armature-sdk.js contract
var btnSdk = $('button', {
className: (typeof window.sw !== 'undefined') ? 'btn-secondary' : 'btn-ghost',
style: { opacity: (typeof window.sw !== 'undefined') ? '1' : '0.5' },
@@ -368,7 +368,7 @@
var totalMs = T.results.reduce(function (s, r) { return s + r.duration; }, 0);
var lines = [];
lines.push('=== Switchboard Core ICD Test Report ===');
lines.push('=== Armature ICD Test Report ===');
lines.push('Generated: ' + now);
lines.push('Platform: v' + (T.manifest.version || '0.28.0'));
lines.push('User: ' + T.user.username + ' (' + T.user.role + ')');

View File

@@ -4,7 +4,7 @@
"version": "1.0.0",
"type": "extension",
"tier": "browser",
"author": "switchboard",
"author": "armature",
"description": "Executes JavaScript in a sandboxed iframe. Allows the LLM to run code, verify calculations, and transform data — no server compute required.",
"requires": ["chat"],
"permissions": [],

View File

@@ -4,7 +4,7 @@
"version": "1.0.0",
"type": "extension",
"tier": "browser",
"author": "switchboard",
"author": "armature",
"description": "Renders LaTeX math expressions: ```latex blocks and inline $...$ / $$...$$ syntax",
"requires": [],
"permissions": [],

View File

@@ -4,7 +4,7 @@
"version": "2.0.0",
"type": "extension",
"tier": "browser",
"author": "switchboard",
"author": "armature",
"description": "Renders ```mermaid code blocks as interactive SVG diagrams with zoom/pan, SVG/PNG export, and source copy",
"requires": [],
"permissions": [],

View File

@@ -9,7 +9,7 @@
"version": "0.8.0",
"icon": "📝",
"description": "Markdown notes surface with rich editor, folders, tags, backlinks, import/export, sidebar tabs, document outline, and note graph.",
"author": "switchboard",
"author": "armature",
"permissions": ["db.write"],

View File

@@ -4,7 +4,7 @@
"version": "1.0.0",
"type": "extension",
"tier": "browser",
"author": "switchboard",
"author": "armature",
"description": "Tests regular expressions against input strings. Allows the LLM to verify regex patterns and see matches, groups, and indices.",
"requires": ["chat"],
"permissions": [],

View File

@@ -4,7 +4,7 @@
"type": "full",
"version": "0.1.0",
"tier": "browser",
"author": "Switchboard Core",
"author": "Armature",
"icon": "⏰",
"description": "Manage cron jobs and scheduled automations",
"route": "/s/schedules",

View File

@@ -141,7 +141,7 @@
function _readToken() {
var env = (T.base || '').replace(/^\//, '') || 'default';
var keys = ['sb_auth_' + env, 'sb_auth', 'sb_token'];
var keys = ['arm_auth_' + env, 'arm_auth', 'arm_token'];
for (var i = 0; i < keys.length; i++) {
try {
var raw = localStorage.getItem(keys[i]);

View File

@@ -9,7 +9,7 @@
"version": "0.1.0",
"icon": "✅",
"description": "Task management surface with lifecycle events, webhook integration, and scheduled reminders.",
"author": "switchboard",
"author": "armature",
"permissions": ["db.write", "notifications.send"],

View File

@@ -9,7 +9,7 @@
"layout": "single",
"version": "0.1.0",
"description": "Example surface demonstrating Starlark API routes, extension-owned DB tables, admin settings, and SDK integration.",
"author": "switchboard",
"author": "armature",
"permissions": ["api.http", "db.read", "db.write"],

View File

@@ -5,7 +5,7 @@
"version": "0.1.0",
"tier": "starlark",
"icon": "🔔",
"author": "Switchboard Core",
"author": "Armature",
"description": "Outbound webhook delivery with connection credential support and delivery logging.",
"permissions": ["api.http", "connections.read", "db.write"],

View File

@@ -21,7 +21,7 @@ def on_fire(ctx):
resp = http.post(url, body=payload, headers={
"Content-Type": "application/json",
"X-Switchboard-Event": data.get("event_name", "workflow.notify"),
"X-Armature-Event": data.get("event_name", "workflow.notify"),
})
# Log the delivery

View File

@@ -5,7 +5,7 @@
"tier": "starlark",
"version": "0.1.0",
"description": "Creates scoped chat conversations when workflow stages require team collaboration. Wire into stage_config as an on_advance hook.",
"author": "switchboard",
"author": "armature",
"permissions": ["db.write", "realtime.publish"],

View File

@@ -1,5 +1,5 @@
// ==========================================
// Switchboard Core — Workflow Demo Surface
// Armature — Workflow Demo Surface
// ==========================================
// Interactive walkthrough of the four example workflow packages.
// Shows workflow cards with feature badges, stage flow diagrams,

View File

@@ -5,7 +5,7 @@
"version": "0.1.0",
"tier": "browser",
"icon": "🎓",
"author": "Switchboard Core",
"author": "Armature",
"description": "Interactive demo surface for example workflow packages. Cards, stage diagrams, and API walkthroughs.",
"route": "/s/workflow-demo",
"auth": "authenticated",