@monster-orange/den 0.4.20 → 0.4.22
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/CHANGELOG.md +164 -0
- package/README.md +7 -7
- package/docs/distributions.md +167 -19
- package/package.json +1 -1
- package/service/install.sh +213 -63
- package/src/shared/agents/den-claude.ts +13 -1
- package/src/shared/agents/records.ts +6 -0
- package/src/shared/agents/runtime.ts +6 -0
- package/src/shared/agents/session-name.ts +21 -1
- package/src/shared/attest-code.ts +125 -0
- package/src/shared/claim-code.ts +6 -2
- package/src/{ui/server/edge-exposure.ts → shared/edge/exposure.ts} +7 -1
- package/src/shared/github-app.ts +4 -0
- package/src/shared/github-device.ts +38 -1
- package/src/shared/launchd-session.ts +92 -0
- package/src/shared/owner-github.ts +100 -0
- package/src/shared/product.ts +45 -5
- package/src/shared/profile.ts +26 -2
- package/src/shared/sessions/client.ts +24 -0
- package/src/shared/sessions/host.ts +114 -5
- package/src/shared/sessions/types.ts +5 -0
- package/src/shared/web-session.ts +112 -6
- package/src/ui/cli/agent-ops.ts +20 -2
- package/src/ui/cli/agents-command.ts +32 -1
- package/src/ui/cli/create.ts +92 -6
- package/src/ui/cli/doctor-command.ts +126 -15
- package/src/ui/cli/doctor-owner.ts +122 -0
- package/src/ui/cli/doctor-where.ts +203 -0
- package/src/ui/cli/index.ts +1 -1
- package/src/ui/cli/service-command.ts +233 -11
- package/src/ui/cli/sessions-command.ts +46 -12
- package/src/ui/cli/web-command.ts +78 -12
- package/src/ui/server/device-flows.ts +45 -10
- package/src/ui/server/github-routes.ts +169 -16
- package/src/ui/server/index.ts +147 -12
- package/src/ui/server/public/agents-page.js +103 -6
- package/src/ui/server/public/agents.html +30 -0
- package/src/ui/server/public/error-page.js +115 -33
- package/src/ui/server/public/error.html +16 -0
- package/src/ui/server/public/header.js +5 -7
- package/src/ui/server/public/i18n/es.js +24 -1
- package/src/ui/server/public/i18n/ja.js +24 -1
- package/src/ui/server/public/settings-registry.js +1 -1
- package/src/ui/server/public/shell.js +24 -1
- package/src/ui/server/route-classes.ts +7 -0
- package/src/ui/server/session-routes.ts +4 -0
|
@@ -420,6 +420,16 @@
|
|
|
420
420
|
"err.signin.ghOnly":
|
|
421
421
|
"Only the owner's GitHub account can sign in this way. For anyone else, use Approve this computer.",
|
|
422
422
|
"err.signin.ghLearn": "Learn more",
|
|
423
|
+
"err.signin.claimTitle": "Connect your GitHub account",
|
|
424
|
+
"err.signin.claimLead":
|
|
425
|
+
"{name} has no owner yet. Connect your GitHub account to make it yours.",
|
|
426
|
+
"err.signin.claimOrg":
|
|
427
|
+
"Members of the {org} GitHub org can claim it, in a browser on {host}.",
|
|
428
|
+
"err.signin.claimHere": "This is my computer: connect GitHub",
|
|
429
|
+
"err.signin.claimAs": "Sign in as @{login}",
|
|
430
|
+
"err.signin.claimHereNote":
|
|
431
|
+
"This is my computer works only in a browser on {host}. Anywhere else it opens nothing.",
|
|
432
|
+
"err.signin.claimChecking": "Checking this is {host}…",
|
|
423
433
|
"err.signin.githubRefused":
|
|
424
434
|
"@{login} isn't the owner of this {name}. Only the owner's account can use Sign in with GitHub. Use Approve this computer instead.",
|
|
425
435
|
"err.signin.approveOr": "Or approve this computer",
|
|
@@ -467,7 +477,6 @@
|
|
|
467
477
|
"err.signin.github": "Sign in with GitHub",
|
|
468
478
|
"err.signin.githubEnter": "Enter this code at {url}:",
|
|
469
479
|
"err.signin.githubOpen": "Open GitHub",
|
|
470
|
-
"err.signin.githubCopy": "Copy code",
|
|
471
480
|
"err.signin.githubWaiting": "Waiting for you to approve it on GitHub…",
|
|
472
481
|
"err.signin.githubDone": "Signed in. Loading…",
|
|
473
482
|
"err.signin.githubExpired": "The code expired before it was approved.",
|
|
@@ -889,6 +898,20 @@
|
|
|
889
898
|
"ag.hint.tile": "Click adds a session as a tile, up to 4.",
|
|
890
899
|
"ag.renameTip": "Double-click to rename",
|
|
891
900
|
"ag.renameName": "Rename {id}",
|
|
901
|
+
"ag.rn.item": "Rename…",
|
|
902
|
+
"ag.rn.title": "Rename {id}",
|
|
903
|
+
"ag.rn.name": "Name",
|
|
904
|
+
"ag.rn.help":
|
|
905
|
+
"Its tab, row and pane header show it; the id {id} never changes. Other sessions see it as {peer} from its next start or resume. Empty: back to {id}.",
|
|
906
|
+
"ag.rn.go": "Rename",
|
|
907
|
+
"ag.rn.cancel": "Cancel",
|
|
908
|
+
"ag.rn.act": "Rename",
|
|
909
|
+
"ag.where.logout": "Stops at logout",
|
|
910
|
+
"ag.where.logoutTip":
|
|
911
|
+
"It runs in the desktop login session, so logging out ends it. To keep agents running: {cli} service install --mode always (opt-in, not yet proven across a logout)",
|
|
912
|
+
"ag.where.bg": "No GUI",
|
|
913
|
+
"ag.where.bgTip":
|
|
914
|
+
"It keeps running after logout, outside the desktop session: no login keychain and no GUI apps. 1Password uses the service-account token, browsers run headless, and protected folders need Full Disk Access ({cli} doctor).",
|
|
892
915
|
"ag.rt.ready": "Starts {name} {version} from",
|
|
893
916
|
"ag.rt.readyNoVer": "Starts {name} from",
|
|
894
917
|
"ag.rt.notFound": "{name} not found.",
|
|
@@ -243,6 +243,10 @@ export const ROUTES: readonly RouteEntry[] = [
|
|
|
243
243
|
"/signin",
|
|
244
244
|
"the signed-out landing page (§6b.3): it renders signed out; signed in, it goes on to `next`",
|
|
245
245
|
),
|
|
246
|
+
R(
|
|
247
|
+
"/attest",
|
|
248
|
+
'D17: "This is my computer", on localhost only: a 303 back to one of this server\'s edge hosts with a short-lived code (it never makes a session)',
|
|
249
|
+
),
|
|
246
250
|
M(["POST"], "/api/session/logout", "ends this browser's session"),
|
|
247
251
|
S(
|
|
248
252
|
["GET", "HEAD"],
|
|
@@ -452,6 +456,9 @@ export const SIGNIN_FREE: readonly string[] = [
|
|
|
452
456
|
"/auth",
|
|
453
457
|
"/signin",
|
|
454
458
|
"/api/session",
|
|
459
|
+
// D17: "This is my computer" answers for itself: on localhost a 303,
|
|
460
|
+
// anywhere else its own "only on this computer" page (never a code).
|
|
461
|
+
"/attest",
|
|
455
462
|
// SEC-2a: Sign in with GitHub, from the signed-out page.
|
|
456
463
|
"/api/github/signin",
|
|
457
464
|
"/api/github/signin/:id",
|
|
@@ -143,6 +143,8 @@ export interface ListedSession {
|
|
|
143
143
|
/** ON-6: the server agent's row (its workspace is the server scope). */
|
|
144
144
|
server?: boolean;
|
|
145
145
|
kind: "agent" | "session";
|
|
146
|
+
/** D20: the launchd session its host runs in (Aqua ends at logout). */
|
|
147
|
+
launchd?: string;
|
|
146
148
|
/** The `<name>` part: an agent's id, a plain session's name. */
|
|
147
149
|
label: string;
|
|
148
150
|
agent?: string;
|
|
@@ -251,6 +253,7 @@ export function listedSessions(
|
|
|
251
253
|
state: r.state,
|
|
252
254
|
exited: !s || s.exited === true,
|
|
253
255
|
...(s?.exitCode !== undefined ? { exitCode: s.exitCode } : {}),
|
|
256
|
+
...(s?.launchd ? { launchd: s.launchd } : {}),
|
|
254
257
|
...(r.startedAt ? { startedAt: r.startedAt } : {}),
|
|
255
258
|
attachable: Boolean(s),
|
|
256
259
|
resumable: r.resumable,
|
|
@@ -276,6 +279,7 @@ export function listedSessions(
|
|
|
276
279
|
state: sessionState(s),
|
|
277
280
|
exited: s.exited === true,
|
|
278
281
|
...(s.exitCode !== undefined ? { exitCode: s.exitCode } : {}),
|
|
282
|
+
...(s.launchd ? { launchd: s.launchd } : {}),
|
|
279
283
|
startedAt: s.startedAt,
|
|
280
284
|
attachable: true,
|
|
281
285
|
});
|