@skillcdn/console 0.1.2 → 0.1.4

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.
Files changed (157) hide show
  1. package/README.md +9 -5
  2. package/dist/api.d.ts +7 -5
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +6 -4
  5. package/dist/api.js.map +1 -1
  6. package/dist/cli/cli.d.ts +3 -3
  7. package/dist/cli/cli.d.ts.map +1 -1
  8. package/dist/cli/cli.js +202 -18
  9. package/dist/cli/cli.js.map +1 -1
  10. package/dist/cli/credentials.d.ts +1 -1
  11. package/dist/cli/format.d.ts +10 -1
  12. package/dist/cli/format.d.ts.map +1 -1
  13. package/dist/cli/format.js +67 -0
  14. package/dist/cli/format.js.map +1 -1
  15. package/dist/cli/help.d.ts.map +1 -1
  16. package/dist/cli/help.js +66 -7
  17. package/dist/cli/help.js.map +1 -1
  18. package/dist/cli/main.js +3 -2
  19. package/dist/cli/main.js.map +1 -1
  20. package/dist/cli/terminal.d.ts +0 -5
  21. package/dist/cli/terminal.d.ts.map +1 -1
  22. package/dist/cli/terminal.js +0 -43
  23. package/dist/cli/terminal.js.map +1 -1
  24. package/dist/client.d.ts +51 -2
  25. package/dist/client.d.ts.map +1 -1
  26. package/dist/client.js +36 -11
  27. package/dist/client.js.map +1 -1
  28. package/dist/components/board.d.ts.map +1 -1
  29. package/dist/components/board.js +6 -3
  30. package/dist/components/board.js.map +1 -1
  31. package/dist/components/connect.d.ts +28 -0
  32. package/dist/components/connect.d.ts.map +1 -0
  33. package/dist/components/connect.js +30 -0
  34. package/dist/components/connect.js.map +1 -0
  35. package/dist/components/decision-form.d.ts.map +1 -1
  36. package/dist/components/decision-form.js +4 -1
  37. package/dist/components/decision-form.js.map +1 -1
  38. package/dist/components/decision-list.d.ts +11 -1
  39. package/dist/components/decision-list.d.ts.map +1 -1
  40. package/dist/components/decision-list.js +30 -5
  41. package/dist/components/decision-list.js.map +1 -1
  42. package/dist/components/documents.d.ts +87 -0
  43. package/dist/components/documents.d.ts.map +1 -0
  44. package/dist/components/documents.js +115 -0
  45. package/dist/components/documents.js.map +1 -0
  46. package/dist/components/event-feed.d.ts +3 -2
  47. package/dist/components/event-feed.d.ts.map +1 -1
  48. package/dist/components/event-feed.js +55 -45
  49. package/dist/components/event-feed.js.map +1 -1
  50. package/dist/components/markdown.d.ts +5 -2
  51. package/dist/components/markdown.d.ts.map +1 -1
  52. package/dist/components/markdown.js +8 -1
  53. package/dist/components/markdown.js.map +1 -1
  54. package/dist/components/people.d.ts +2 -0
  55. package/dist/components/people.d.ts.map +1 -1
  56. package/dist/components/people.js +4 -2
  57. package/dist/components/people.js.map +1 -1
  58. package/dist/components/projects.d.ts +1 -0
  59. package/dist/components/projects.d.ts.map +1 -1
  60. package/dist/components/projects.js +16 -10
  61. package/dist/components/projects.js.map +1 -1
  62. package/dist/components/runs.d.ts +4 -0
  63. package/dist/components/runs.d.ts.map +1 -1
  64. package/dist/components/runs.js +7 -3
  65. package/dist/components/runs.js.map +1 -1
  66. package/dist/components/shell.d.ts +30 -1
  67. package/dist/components/shell.d.ts.map +1 -1
  68. package/dist/components/shell.js +56 -8
  69. package/dist/components/shell.js.map +1 -1
  70. package/dist/components/sign-in.d.ts +3 -0
  71. package/dist/components/sign-in.d.ts.map +1 -1
  72. package/dist/components/sign-in.js +3 -9
  73. package/dist/components/sign-in.js.map +1 -1
  74. package/dist/components/skills.d.ts.map +1 -1
  75. package/dist/components/skills.js +8 -12
  76. package/dist/components/skills.js.map +1 -1
  77. package/dist/components/task-form.d.ts.map +1 -1
  78. package/dist/components/task-form.js +5 -2
  79. package/dist/components/task-form.js.map +1 -1
  80. package/dist/components/task-view.d.ts +12 -1
  81. package/dist/components/task-view.d.ts.map +1 -1
  82. package/dist/components/task-view.js +7 -14
  83. package/dist/components/task-view.js.map +1 -1
  84. package/dist/components/tokens.d.ts +12 -0
  85. package/dist/components/tokens.d.ts.map +1 -1
  86. package/dist/components/tokens.js +25 -10
  87. package/dist/components/tokens.js.map +1 -1
  88. package/dist/components/ui.d.ts +3 -3
  89. package/dist/components/ui.d.ts.map +1 -1
  90. package/dist/components/ui.js +15 -9
  91. package/dist/components/ui.js.map +1 -1
  92. package/dist/connect-page.d.ts +10 -0
  93. package/dist/connect-page.d.ts.map +1 -0
  94. package/dist/connect-page.js +67 -0
  95. package/dist/connect-page.js.map +1 -0
  96. package/dist/connect.d.ts +11 -0
  97. package/dist/connect.d.ts.map +1 -0
  98. package/dist/connect.js +24 -0
  99. package/dist/connect.js.map +1 -0
  100. package/dist/console.css +310 -10
  101. package/dist/console.d.ts +6 -1
  102. package/dist/console.d.ts.map +1 -1
  103. package/dist/console.js +339 -151
  104. package/dist/console.js.map +1 -1
  105. package/dist/data.d.ts +21 -1
  106. package/dist/data.d.ts.map +1 -1
  107. package/dist/data.js +23 -0
  108. package/dist/data.js.map +1 -1
  109. package/dist/docs-page.d.ts +14 -0
  110. package/dist/docs-page.d.ts.map +1 -0
  111. package/dist/docs-page.js +166 -0
  112. package/dist/docs-page.js.map +1 -0
  113. package/dist/documents.d.ts +19 -0
  114. package/dist/documents.d.ts.map +1 -0
  115. package/dist/documents.js +64 -0
  116. package/dist/documents.js.map +1 -0
  117. package/dist/i18n/en.d.ts +471 -0
  118. package/dist/i18n/en.d.ts.map +1 -0
  119. package/dist/i18n/en.js +481 -0
  120. package/dist/i18n/en.js.map +1 -0
  121. package/dist/i18n/index.d.ts +26 -0
  122. package/dist/i18n/index.d.ts.map +1 -0
  123. package/dist/i18n/index.js +46 -0
  124. package/dist/i18n/index.js.map +1 -0
  125. package/dist/i18n/ko.d.ts +3 -0
  126. package/dist/i18n/ko.d.ts.map +1 -0
  127. package/dist/i18n/ko.js +470 -0
  128. package/dist/i18n/ko.js.map +1 -0
  129. package/dist/index.d.ts +9 -3
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.js +8 -2
  132. package/dist/index.js.map +1 -1
  133. package/dist/limits.d.ts +14 -0
  134. package/dist/limits.d.ts.map +1 -1
  135. package/dist/limits.js +14 -0
  136. package/dist/limits.js.map +1 -1
  137. package/dist/router.d.ts +93 -10
  138. package/dist/router.d.ts.map +1 -1
  139. package/dist/router.js +168 -24
  140. package/dist/router.js.map +1 -1
  141. package/dist/routes.d.ts +11 -1
  142. package/dist/routes.d.ts.map +1 -1
  143. package/dist/routes.js +17 -0
  144. package/dist/routes.js.map +1 -1
  145. package/dist/schemas.d.ts +310 -2
  146. package/dist/schemas.d.ts.map +1 -1
  147. package/dist/schemas.js +162 -11
  148. package/dist/schemas.js.map +1 -1
  149. package/dist/use-action.d.ts +9 -0
  150. package/dist/use-action.d.ts.map +1 -0
  151. package/dist/use-action.js +34 -0
  152. package/dist/use-action.js.map +1 -0
  153. package/dist/vocabulary.d.ts +4 -1
  154. package/dist/vocabulary.d.ts.map +1 -1
  155. package/dist/vocabulary.js +7 -0
  156. package/dist/vocabulary.js.map +1 -1
  157. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from "react";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useWords } from "../i18n/index.js";
3
3
  import { TASK_STATES } from "../vocabulary.js";
4
4
  import { DecisionForm } from "./decision-form.js";
5
5
  import { DecisionCard } from "./decision-list.js";
@@ -7,11 +7,10 @@ import { EventFeed } from "./event-feed.js";
7
7
  import { Markdown } from "./markdown.js";
8
8
  import { RunList } from "./runs.js";
9
9
  import { TaskForm } from "./task-form.js";
10
- import { Button, PersonChip, PriorityBadge, STATE_LABELS, StateBadge, Time } from "./ui.js";
10
+ import { PersonChip, PriorityBadge, StateBadge, Time } from "./ui.js";
11
11
  export function TaskView(props) {
12
+ const words = useWords();
12
13
  const { task } = props;
13
- const [editing, setEditing] = useState(false);
14
- const [asking, setAsking] = useState(false);
15
14
  const parent = task.parentId === null
16
15
  ? undefined
17
16
  : props.tasks.find((candidate) => candidate.id === task.parentId);
@@ -19,15 +18,9 @@ export function TaskView(props) {
19
18
  const about = props.decisions.filter((decision) => decision.taskId === task.id);
20
19
  const runs = (props.runs ?? []).filter((run) => run.taskId === task.id);
21
20
  const tasksById = new Map(props.tasks.map((candidate) => [candidate.id, candidate]));
22
- if (editing) {
23
- return (_jsxs("div", { className: "sc-task", children: [_jsxs("h1", { className: "sc-task-title", children: [_jsxs("span", { className: "sc-card-number", children: ["#", task.number] }), " ", task.title] }), _jsx(TaskForm, { people: props.people, task: task, parents: props.tasks, busy: props.busy, error: props.error, onSubmit: (input) => {
24
- props.onChange(task, input);
25
- setEditing(false);
26
- }, onCancel: () => setEditing(false) })] }));
21
+ if (props.form === "edit") {
22
+ return (_jsxs("div", { className: "sc-task", children: [_jsxs("h1", { className: "sc-task-title", children: [_jsxs("span", { className: "sc-card-number", children: ["#", task.number] }), " ", task.title] }), _jsx(TaskForm, { people: props.people, task: task, parents: props.tasks, busy: props.busy, error: props.error, onSubmit: (input) => props.onChange(task, input), onCancel: props.onCancel })] }));
27
23
  }
28
- return (_jsxs("div", { className: "sc-task", children: [_jsxs("header", { className: "sc-task-header", children: [parent !== undefined && (_jsxs("p", { className: "sc-task-parent", children: ["Part of", " ", _jsxs("a", { href: props.taskHref(parent), children: ["#", parent.number, " ", parent.title] })] })), _jsxs("h1", { className: "sc-task-title", children: [_jsxs("span", { className: "sc-card-number", children: ["#", task.number] }), " ", task.title] }), _jsxs("div", { className: "sc-task-badges", children: [_jsx(StateBadge, { state: task.state }), _jsx(PriorityBadge, { priority: task.priority })] })] }), _jsxs("dl", { className: "sc-facts", children: [_jsxs("div", { children: [_jsx("dt", { children: "Owner" }), _jsx("dd", { children: _jsx(PersonChip, { person: task.owner }) })] }), _jsxs("div", { children: [_jsx("dt", { children: "Assignee" }), _jsx("dd", { children: task.assignee === null ? (_jsx("span", { className: "sc-muted", children: "Nobody" })) : (_jsx(PersonChip, { person: task.assignee })) })] }), _jsxs("div", { children: [_jsx("dt", { children: "Written" }), _jsx("dd", { children: _jsx(Time, { iso: task.createdAt }) })] }), _jsxs("div", { children: [_jsx("dt", { children: "Changed" }), _jsx("dd", { children: _jsx(Time, { iso: task.updatedAt }) })] })] }), _jsxs("div", { className: "sc-task-actions", children: [_jsxs("label", { className: "sc-field sc-field-inline", children: [_jsx("span", { className: "sc-field-label", children: "State" }), _jsx("select", { className: "sc-input", value: task.state, disabled: props.busy === true, onChange: (event) => props.onMove(task, event.target.value), children: TASK_STATES.map((state) => (_jsx("option", { value: state, children: STATE_LABELS[state] }, state))) })] }), _jsx(Button, { onClick: () => setEditing(true), children: "Edit" }), _jsx(Button, { onClick: () => setAsking(true), disabled: asking, children: "Raise a decision" })] }), props.error !== undefined && (_jsx("p", { className: "sc-form-error", role: "alert", children: props.error })), task.body.length > 0 ? (_jsx(Markdown, { source: task.body })) : (_jsx("p", { className: "sc-muted", children: "Nothing more was written about it." })), task.links.length > 0 && (_jsxs("section", { className: "sc-task-section", "aria-label": "Links", children: [_jsx("h2", { className: "sc-section-title", children: "Links" }), _jsx("ul", { className: "sc-link-list", children: task.links.map((link) => (_jsx("li", { children: _jsx("a", { href: link.url, target: "_blank", rel: "noopener noreferrer nofollow", children: link.label ?? link.url }) }, link.url))) })] })), asking && (_jsxs("section", { className: "sc-task-section", "aria-label": "Raise a decision", children: [_jsx("h2", { className: "sc-section-title", children: "Raise a decision" }), _jsx(DecisionForm, { tasks: props.tasks, taskId: task.id, busy: props.busy, onSubmit: (input) => {
29
- props.onRaiseDecision(input);
30
- setAsking(false);
31
- }, onCancel: () => setAsking(false) })] })), runs.length > 0 && (_jsxs("section", { className: "sc-task-section", "aria-label": "Runs", children: [_jsx("h2", { className: "sc-section-title", children: "Agents at work" }), _jsx(RunList, { runs: runs, decisionHref: props.decisionHref, fileHref: props.fileHref, onAbandon: props.onAbandonRun, busy: props.busy })] })), about.length > 0 && (_jsxs("section", { className: "sc-task-section", "aria-label": "Decisions", children: [_jsx("h2", { className: "sc-section-title", children: "Decisions" }), about.map((decision) => (_jsx(DecisionCard, { decision: decision, task: decision.taskId === null ? undefined : tasksById.get(decision.taskId), onAnswer: props.onAnswer, busy: props.busy }, decision.id)))] })), props.history !== undefined && props.history.length > 0 && (_jsxs("section", { className: "sc-task-section", "aria-label": "History", children: [_jsx("h2", { className: "sc-section-title", children: "What happened" }), _jsx(EventFeed, { events: props.history })] })), subtasks.length > 0 && (_jsxs("section", { className: "sc-task-section", "aria-label": "Subtasks", children: [_jsx("h2", { className: "sc-section-title", children: "Part of it" }), _jsx("ul", { className: "sc-subtasks", children: subtasks.map((subtask) => (_jsxs("li", { children: [_jsxs("a", { href: props.taskHref(subtask), children: [_jsxs("span", { className: "sc-card-number", children: ["#", subtask.number] }), " ", subtask.title] }), " ", _jsx(StateBadge, { state: subtask.state })] }, subtask.id))) })] }))] }));
24
+ return (_jsxs("div", { className: "sc-task", children: [_jsxs("header", { className: "sc-task-header", children: [parent !== undefined && (_jsxs("p", { className: "sc-task-parent", children: [words.task.partOf, " ", _jsxs("a", { href: props.taskHref(parent), children: ["#", parent.number, " ", parent.title] })] })), _jsxs("h1", { className: "sc-task-title", children: [_jsxs("span", { className: "sc-card-number", children: ["#", task.number] }), " ", task.title] }), _jsxs("div", { className: "sc-task-badges", children: [_jsx(StateBadge, { state: task.state }), _jsx(PriorityBadge, { priority: task.priority })] })] }), _jsxs("dl", { className: "sc-facts", children: [_jsxs("div", { children: [_jsx("dt", { children: words.task.owner }), _jsx("dd", { children: _jsx(PersonChip, { person: task.owner }) })] }), _jsxs("div", { children: [_jsx("dt", { children: words.task.assignee }), _jsx("dd", { children: task.assignee === null ? (_jsx("span", { className: "sc-muted", children: words.common.nobody })) : (_jsx(PersonChip, { person: task.assignee })) })] }), _jsxs("div", { children: [_jsx("dt", { children: words.task.written }), _jsx("dd", { children: _jsx(Time, { iso: task.createdAt }) })] }), _jsxs("div", { children: [_jsx("dt", { children: words.task.changed }), _jsx("dd", { children: _jsx(Time, { iso: task.updatedAt }) })] })] }), _jsxs("div", { className: "sc-task-actions", children: [_jsxs("label", { className: "sc-field sc-field-inline", children: [_jsx("span", { className: "sc-field-label", children: words.task.state }), _jsx("select", { className: "sc-input", value: task.state, disabled: props.busy === true, onChange: (event) => props.onMove(task, event.target.value), children: TASK_STATES.map((state) => (_jsx("option", { value: state, children: words.vocabulary.state[state] }, state))) })] }), props.formHref !== undefined && (_jsxs(_Fragment, { children: [_jsx("a", { className: "sc-button sc-button-secondary", href: props.formHref("edit"), children: words.common.edit }), _jsx("a", { className: "sc-button sc-button-secondary", href: props.formHref("ask"), children: words.task.raiseDecision })] }))] }), props.error !== undefined && (_jsx("p", { className: "sc-form-error", role: "alert", children: props.error })), task.body.length > 0 ? (_jsx(Markdown, { source: task.body, docHref: props.docHref })) : (_jsx("p", { className: "sc-muted", children: words.task.nothingMore })), task.links.length > 0 && (_jsxs("section", { className: "sc-task-section", "aria-label": words.task.links, children: [_jsx("h2", { className: "sc-section-title", children: words.task.links }), _jsx("ul", { className: "sc-link-list", children: task.links.map((link) => (_jsx("li", { children: _jsx("a", { href: link.url, target: "_blank", rel: "noopener noreferrer nofollow", children: link.label ?? link.url }) }, link.url))) })] })), props.form === "ask" && (_jsxs("section", { className: "sc-task-section", "aria-label": words.task.raiseDecision, children: [_jsx("h2", { className: "sc-section-title", children: words.task.raiseDecision }), _jsx(DecisionForm, { tasks: props.tasks, taskId: task.id, busy: props.busy, onSubmit: props.onRaiseDecision, onCancel: props.onCancel })] })), runs.length > 0 && (_jsxs("section", { className: "sc-task-section", "aria-label": words.task.runs, children: [_jsx("h2", { className: "sc-section-title", children: words.task.agentsAtWork }), _jsx(RunList, { runs: runs, decisionHref: props.decisionHref, fileHref: props.fileHref, docHref: props.docHref, onAbandon: props.onAbandonRun, busy: props.busy })] })), about.length > 0 && (_jsxs("section", { className: "sc-task-section", "aria-label": words.task.decisions, children: [_jsx("h2", { className: "sc-section-title", children: words.task.decisions }), about.map((decision) => (_jsx(DecisionCard, { decision: decision, task: decision.taskId === null ? undefined : tasksById.get(decision.taskId), docHref: props.docHref, onAnswer: props.onAnswer, onUpdate: props.onUpdateDecision, busy: props.busy }, decision.id)))] })), props.history !== undefined && props.history.length > 0 && (_jsxs("section", { className: "sc-task-section", "aria-label": words.task.history, children: [_jsx("h2", { className: "sc-section-title", children: words.task.history }), _jsx(EventFeed, { events: props.history })] })), subtasks.length > 0 && (_jsxs("section", { className: "sc-task-section", "aria-label": words.task.subtasks, children: [_jsx("h2", { className: "sc-section-title", children: words.task.partOfIt }), _jsx("ul", { className: "sc-subtasks", children: subtasks.map((subtask) => (_jsxs("li", { children: [_jsxs("a", { href: props.taskHref(subtask), children: [_jsxs("span", { className: "sc-card-number", children: ["#", subtask.number] }), " ", subtask.title] }), " ", _jsx(StateBadge, { state: subtask.state })] }, subtask.id))) })] }))] }));
32
25
  }
33
26
  //# sourceMappingURL=task-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"task-view.js","sourceRoot":"","sources":["../../src/components/task-view.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-view.js","sourceRoot":"","sources":["../../src/components/task-view.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,10 @@
1
1
  import { type ReactNode } from "react";
2
2
  import { type RestToken, type RestTokenInput } from "../api.js";
3
+ /**
4
+ * The spans a form offers: the usual ones, within the most days the workspace allows when it
5
+ * names some, and that limit itself; with a limit there is no "never".
6
+ */
7
+ export declare function dayChoices(daysAtMost: number | null | undefined): readonly string[];
3
8
  export interface TokenListProps {
4
9
  readonly tokens: readonly RestToken[];
5
10
  /** Called to take a token away. Left out, tokens cannot be removed here. */
@@ -9,8 +14,15 @@ export interface TokenListProps {
9
14
  }
10
15
  export declare function TokenList(props: TokenListProps): import("react").JSX.Element;
11
16
  export interface TokenFormProps {
17
+ /** What the token is called to begin with: what the agent calls itself, for one connecting. */
18
+ readonly name?: string | undefined;
19
+ /** The most days a token may be good for here, or nothing when a person chooses. */
20
+ readonly daysAtMost?: number | null | undefined;
12
21
  readonly busy?: boolean | undefined;
13
22
  readonly error?: string | undefined;
23
+ /** What the button says; "Make the token" when left out. */
24
+ readonly submitLabel?: string | undefined;
25
+ readonly cancelLabel?: string | undefined;
14
26
  readonly onSubmit: (input: RestTokenInput) => void;
15
27
  readonly onCancel?: (() => void) | undefined;
16
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/components/tokens.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AACjE,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,WAAW,CAAC;AAiBnB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7D,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BAgD9C;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CAC9C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BA4D9C;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,mFAAmF;AACnF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,+BA2C5C"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/components/tokens.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AACjE,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,WAAW,CAAC;AAcnB;;;GAGG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,MAAM,EAAE,CAMnF;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7D,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BAiD9C;AAED,MAAM,WAAW,cAAc;IAC7B,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,oFAAoF;IACpF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,4DAA4D;IAC5D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CAC9C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BAgE9C;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,mFAAmF;AACnF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,+BA2C5C"}
@@ -1,24 +1,37 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState } from "react";
3
3
  import { DEFAULT_TOKEN_DAYS, MAX_TOKEN_NAME_LENGTH, } from "../api.js";
4
+ import { useWords } from "../i18n/index.js";
4
5
  import { Button, Callout, Time } from "./ui.js";
5
- // The tokens a person holds for their agents, scripts and consoles of their own: the list, the
6
- // way to make one, and the one just made, whose secret is shown this once. Each takes its data
7
- // as props and nothing from the network.
6
+ // The tokens a person holds for their agents, scripts and consoles of their own, shown as the
7
+ // agents that hold them: the list, the way to make one by hand, and the one just made, whose
8
+ // secret is shown this once. Each takes its data as props and nothing from the network.
8
9
  /** How long a token may be good for, as the form offers it; `never` for one that does not expire. */
9
10
  const DAY_CHOICES = ["30", "90", "180", "365", "never"];
10
11
  const DEFAULT_CHOICE = DAY_CHOICES.find((choice) => choice === String(DEFAULT_TOKEN_DAYS)) ?? "90";
11
- const choiceOf = (value) => DAY_CHOICES.find((choice) => choice === value) ?? DEFAULT_CHOICE;
12
- const choiceLabel = (choice) => choice === "never" ? "Does not expire" : `${choice} days`;
12
+ /**
13
+ * The spans a form offers: the usual ones, within the most days the workspace allows when it
14
+ * names some, and that limit itself; with a limit there is no "never".
15
+ */
16
+ export function dayChoices(daysAtMost) {
17
+ if (daysAtMost === null || daysAtMost === undefined) {
18
+ return DAY_CHOICES;
19
+ }
20
+ const within = DAY_CHOICES.filter((choice) => choice !== "never" && Number(choice) < daysAtMost);
21
+ return [...within, String(daysAtMost)];
22
+ }
13
23
  export function TokenList(props) {
24
+ const words = useWords().agents;
14
25
  if (props.tokens.length === 0) {
15
26
  return _jsx(_Fragment, { children: props.empty ?? null });
16
27
  }
17
- return (_jsx("ul", { className: "sc-token-list", "aria-label": "Tokens", children: props.tokens.map((token) => (_jsxs("li", { className: "sc-token", children: [_jsxs("div", { children: [_jsx("p", { className: "sc-token-name", children: token.name }), _jsxs("p", { className: "sc-token-meta", children: [_jsxs("span", { children: ["Made ", _jsx(Time, { iso: token.createdAt })] }), _jsx("span", { children: token.expiresAt === null ? ("Does not expire") : (_jsxs(_Fragment, { children: ["Good until ", _jsx(Time, { iso: token.expiresAt })] })) }), _jsx("span", { children: token.lastUsedAt === null ? ("Never used") : (_jsxs(_Fragment, { children: ["Last used ", _jsx(Time, { iso: token.lastUsedAt })] })) })] })] }), props.onRevoke !== undefined && (_jsx(Button, { variant: "danger", size: "sm", disabled: props.busy === true, onClick: () => props.onRevoke?.(token), children: "Remove" }))] }, token.id))) }));
28
+ return (_jsx("ul", { className: "sc-token-list", "aria-label": words.list, children: props.tokens.map((token) => (_jsxs("li", { className: "sc-token", children: [_jsxs("div", { children: [_jsx("p", { className: "sc-token-name", children: token.name }), _jsxs("p", { className: "sc-token-meta", children: [_jsxs("span", { children: [words.connected, " ", _jsx(Time, { iso: token.createdAt })] }), _jsx("span", { children: token.expiresAt === null ? (words.doesNotExpire) : (_jsxs(_Fragment, { children: [words.goodUntil, " ", _jsx(Time, { iso: token.expiresAt })] })) }), _jsx("span", { children: token.lastUsedAt === null ? (words.notActive) : (_jsxs(_Fragment, { children: [words.lastActive, " ", _jsx(Time, { iso: token.lastUsedAt })] })) })] })] }), props.onRevoke !== undefined && (_jsx(Button, { variant: "danger", size: "sm", disabled: props.busy === true, onClick: () => props.onRevoke?.(token), children: words.disconnect }))] }, token.id))) }));
18
29
  }
19
30
  export function TokenForm(props) {
20
- const [name, setName] = useState("");
21
- const [choice, setChoice] = useState(DEFAULT_CHOICE);
31
+ const words = useWords();
32
+ const choices = dayChoices(props.daysAtMost);
33
+ const [name, setName] = useState(props.name ?? "");
34
+ const [choice, setChoice] = useState(choices.includes(DEFAULT_CHOICE) ? DEFAULT_CHOICE : (choices.at(-1) ?? DEFAULT_CHOICE));
22
35
  const submit = (event) => {
23
36
  event.preventDefault();
24
37
  props.onSubmit({
@@ -26,10 +39,12 @@ export function TokenForm(props) {
26
39
  expiresInDays: choice === "never" ? null : Number(choice),
27
40
  });
28
41
  };
29
- return (_jsxs("form", { className: "sc-form", onSubmit: submit, children: [_jsxs("div", { className: "sc-field-row", children: [_jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: "Name" }), _jsx("input", { className: "sc-input", value: name, maxLength: MAX_TOKEN_NAME_LENGTH, required: true, placeholder: "The agent it is for, and where it runs", onChange: (event) => setName(event.target.value) })] }), _jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: "Good for" }), _jsx("select", { className: "sc-input", value: choice, onChange: (event) => setChoice(choiceOf(event.target.value)), children: DAY_CHOICES.map((option) => (_jsx("option", { value: option, children: choiceLabel(option) }, option))) })] })] }), props.error !== undefined && (_jsx("p", { className: "sc-form-error", role: "alert", children: props.error })), _jsxs("div", { className: "sc-form-actions", children: [_jsx(Button, { type: "submit", variant: "primary", disabled: props.busy === true || name.trim() === "", children: "Make the token" }), props.onCancel !== undefined && (_jsx(Button, { variant: "ghost", onClick: props.onCancel, children: "Cancel" }))] })] }));
42
+ return (_jsxs("form", { className: "sc-form", onSubmit: submit, children: [_jsxs("div", { className: "sc-field-row", children: [_jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: words.agents.form.name }), _jsx("input", { className: "sc-input", value: name, maxLength: MAX_TOKEN_NAME_LENGTH, required: true, placeholder: words.agents.form.namePlaceholder, onChange: (event) => setName(event.target.value) })] }), _jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: words.agents.form.goodFor }), _jsx("select", { className: "sc-input", value: choice, onChange: (event) => setChoice(event.target.value), children: choices.map((option) => (_jsx("option", { value: option, children: option === "never" ? words.agents.doesNotExpire : words.agents.form.days(option) }, option))) })] })] }), props.error !== undefined && (_jsx("p", { className: "sc-form-error", role: "alert", children: props.error })), _jsxs("div", { className: "sc-form-actions", children: [_jsx(Button, { type: "submit", variant: "primary", disabled: props.busy === true || name.trim() === "", children: props.submitLabel ?? words.agents.form.make }), props.onCancel !== undefined && (_jsx(Button, { variant: "ghost", onClick: props.onCancel, disabled: props.busy === true, children: props.cancelLabel ?? words.common.cancel }))] })] }));
30
43
  }
31
44
  /** The token just made, with its secret shown this once and the way to copy it. */
32
45
  export function NewToken(props) {
46
+ const words = useWords();
47
+ const fresh = words.agents.fresh;
33
48
  const [copied, setCopied] = useState(false);
34
49
  const copy = () => {
35
50
  if (typeof navigator === "undefined" || navigator.clipboard === undefined) {
@@ -37,6 +52,6 @@ export function NewToken(props) {
37
52
  }
38
53
  void navigator.clipboard.writeText(props.secret).then(() => setCopied(true), () => setCopied(false));
39
54
  };
40
- return (_jsxs(Callout, { tone: "warning", title: `The token "${props.token.name}" is ready`, action: _jsx(Button, { size: "sm", variant: "ghost", onClick: props.onDone, children: "Done" }), children: [_jsx("p", { children: "Copy it now: it is shown this once, and the console keeps only its hash." }), _jsxs("p", { className: "sc-secret", children: [_jsx("code", { className: "sc-secret-value", children: props.secret }), _jsx(Button, { size: "sm", onClick: copy, children: copied ? "Copied" : "Copy" })] }), _jsxs("p", { children: ["Sign the ", _jsx("code", { children: "console" }), " command in with it, present it as", " ", _jsx("code", { children: "Authorization: Bearer \u2026" }), " to the REST API, or give it to a console or a script of your own.", " ", props.token.expiresAt === null ? ("It does not expire, so remove it here once it is no longer needed.") : (_jsxs(_Fragment, { children: ["It is good until ", _jsx(Time, { iso: props.token.expiresAt }), ", and you can remove it here at any time."] }))] })] }));
55
+ return (_jsxs(Callout, { tone: "warning", title: fresh.ready(props.token.name), action: _jsx(Button, { size: "sm", variant: "ghost", onClick: props.onDone, children: words.common.done }), children: [_jsx("p", { children: fresh.copyNow }), _jsxs("p", { className: "sc-secret", children: [_jsx("code", { className: "sc-secret-value", children: props.secret }), _jsx(Button, { size: "sm", onClick: copy, children: copied ? fresh.copied : fresh.copy })] }), _jsxs("p", { children: [fresh.useIt, " ", props.token.expiresAt === null ? (fresh.removeWhenDone) : (_jsxs(_Fragment, { children: [fresh.goodUntilBefore, " ", _jsx(Time, { iso: props.token.expiresAt }), fresh.goodUntilAfter] }))] })] }));
41
56
  }
42
57
  //# sourceMappingURL=tokens.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/components/tokens.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/components/tokens.tsx"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@ export declare function PersonChip(props: {
29
29
  readonly person: RestPerson;
30
30
  readonly size?: "sm" | "md";
31
31
  }): import("react").JSX.Element;
32
- /** The words of the vocabulary as people read them. */
32
+ /** The words of the vocabulary as people read them, in English: the default pack's. */
33
33
  export declare const STATE_LABELS: Readonly<Record<TaskState, string>>;
34
34
  export declare const PRIORITY_LABELS: Readonly<Record<TaskPriority, string>>;
35
35
  export declare const ROLE_LABELS: Readonly<Record<PersonRole, string>>;
@@ -51,8 +51,8 @@ export declare function EmptyState(props: {
51
51
  readonly body?: string;
52
52
  readonly action?: ReactNode;
53
53
  }): import("react").JSX.Element;
54
- /** An instant as people read one: the date, and the time of day. */
55
- export declare function formatInstant(iso: string): string;
54
+ /** An instant as people read one in a language: the date, and the time of day. */
55
+ export declare function formatInstant(iso: string, language?: string): string;
56
56
  /** A size in bytes as people read one: `12 B`, `3.4 KB`, `120 MB`. */
57
57
  export declare function formatBytes(size: number): string;
58
58
  export declare function Time(props: {
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/components/ui.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/components/ui.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useLanguage, useWords } from "../i18n/index.js";
2
3
  // Small building blocks. Each one is a class in styles/console.css and nothing more. Classes
3
- // are prefixed `sc-` so that a custom console's own styles never collide with them.
4
+ // are prefixed `sc-` so that a custom console's own styles never collide with them. The words
5
+ // come from the language the page is in (ADR-0012).
4
6
  export function cx(...names) {
5
7
  return names.filter(Boolean).join(" ");
6
8
  }
@@ -31,7 +33,7 @@ export function Avatar(props) {
31
33
  export function PersonChip(props) {
32
34
  return (_jsxs("span", { className: "sc-person", title: props.person.name ?? props.person.login, children: [_jsx(Avatar, { person: props.person, size: props.size ?? "sm" }), _jsx("span", { className: "sc-person-login", children: props.person.login })] }));
33
35
  }
34
- /** The words of the vocabulary as people read them. */
36
+ /** The words of the vocabulary as people read them, in English: the default pack's. */
35
37
  export const STATE_LABELS = {
36
38
  idea: "Idea",
37
39
  ready: "Ready",
@@ -51,9 +53,11 @@ export const ROLE_LABELS = {
51
53
  member: "Member",
52
54
  };
53
55
  export function RoleBadge(props) {
54
- return (_jsx(Badge, { tone: props.role === "admin" ? "point" : "neutral", children: ROLE_LABELS[props.role] }));
56
+ const words = useWords();
57
+ return (_jsx(Badge, { tone: props.role === "admin" ? "point" : "neutral", children: words.vocabulary.role[props.role] }));
55
58
  }
56
59
  export function StateBadge(props) {
60
+ const words = useWords();
57
61
  const tone = props.state === "done"
58
62
  ? "success"
59
63
  : props.state === "dropped"
@@ -61,14 +65,15 @@ export function StateBadge(props) {
61
65
  : props.state === "in_progress" || props.state === "in_review"
62
66
  ? "accent"
63
67
  : "neutral";
64
- return _jsx(Badge, { tone: tone, children: STATE_LABELS[props.state] });
68
+ return _jsx(Badge, { tone: tone, children: words.vocabulary.state[props.state] });
65
69
  }
66
70
  export function PriorityBadge(props) {
71
+ const words = useWords();
67
72
  if (props.priority === "normal") {
68
73
  return null;
69
74
  }
70
75
  const tone = props.priority === "urgent" ? "danger" : props.priority === "high" ? "point" : "neutral";
71
- return _jsx(Badge, { tone: tone, children: PRIORITY_LABELS[props.priority] });
76
+ return _jsx(Badge, { tone: tone, children: words.vocabulary.priority[props.priority] });
72
77
  }
73
78
  export function Spinner(props) {
74
79
  return (_jsxs("span", { className: "sc-spinner", role: "status", children: [_jsx("span", { className: "sc-spinner-ring", "aria-hidden": "true" }), _jsx("span", { className: "sc-visually-hidden", children: props.label })] }));
@@ -77,13 +82,13 @@ export function Spinner(props) {
77
82
  export function EmptyState(props) {
78
83
  return (_jsxs("div", { className: "sc-empty", children: [_jsx("p", { className: "sc-empty-title", children: props.title }), props.body !== undefined && _jsx("p", { className: "sc-empty-body", children: props.body }), props.action !== undefined && _jsx("div", { className: "sc-empty-action", children: props.action })] }));
79
84
  }
80
- /** An instant as people read one: the date, and the time of day. */
81
- export function formatInstant(iso) {
85
+ /** An instant as people read one in a language: the date, and the time of day. */
86
+ export function formatInstant(iso, language) {
82
87
  const date = new Date(iso);
83
88
  if (Number.isNaN(date.getTime())) {
84
89
  return iso;
85
90
  }
86
- return date.toLocaleString(undefined, {
91
+ return date.toLocaleString(language, {
87
92
  year: "numeric",
88
93
  month: "short",
89
94
  day: "numeric",
@@ -104,6 +109,7 @@ export function formatBytes(size) {
104
109
  return `${mb < 10 ? mb.toFixed(1) : Math.round(mb)} MB`;
105
110
  }
106
111
  export function Time(props) {
107
- return (_jsx("time", { className: "sc-time", dateTime: props.iso, children: formatInstant(props.iso) }));
112
+ const { tag } = useLanguage();
113
+ return (_jsx("time", { className: "sc-time", dateTime: props.iso, children: formatInstant(props.iso, tag) }));
108
114
  }
109
115
  //# sourceMappingURL=ui.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/components/ui.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/components/ui.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { ConsoleData } from "./data.js";
2
+ import { type Navigation } from "./router.js";
3
+ export interface ConnectPageProps {
4
+ /** The code in the address, as typed or followed, or nothing. */
5
+ readonly code: string | undefined;
6
+ readonly data: ConsoleData;
7
+ readonly navigation: Navigation;
8
+ }
9
+ export declare function ConnectPage(props: ConnectPageProps): import("react").JSX.Element;
10
+ //# sourceMappingURL=connect-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-page.d.ts","sourceRoot":"","sources":["../src/connect-page.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAe,KAAK,UAAU,EAAS,MAAM,aAAa,CAAC;AAOlE,MAAM,WAAW,gBAAgB;IAC/B,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;CACjC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BA0HlD"}
@@ -0,0 +1,67 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from "react";
3
+ import { ApiError, normalizeConnectCode, } from "./api.js";
4
+ import { ConnectApproval, ConnectCodeForm } from "./components/connect.js";
5
+ import { Callout, Spinner } from "./components/ui.js";
6
+ import { useWords } from "./i18n/index.js";
7
+ import { connectHref, PATHS } from "./router.js";
8
+ import { useAction } from "./use-action.js";
9
+ export function ConnectPage(props) {
10
+ const words = useWords().connect;
11
+ const { data, navigation } = props;
12
+ const code = props.code === undefined ? undefined : normalizeConnectCode(props.code);
13
+ const [request, setRequest] = useState(undefined);
14
+ const [problem, setProblem] = useState(undefined);
15
+ const [outcome, setOutcome] = useState(undefined);
16
+ const { busy, error, act } = useAction();
17
+ const { connectRequest } = data.actions;
18
+ // What asks under the code, read once the page is on one.
19
+ useEffect(() => {
20
+ setRequest(undefined);
21
+ setProblem(undefined);
22
+ setOutcome(undefined);
23
+ if (code === undefined) {
24
+ return;
25
+ }
26
+ const controller = new AbortController();
27
+ connectRequest(code, controller.signal)
28
+ .then((found) => {
29
+ if (!controller.signal.aborted) {
30
+ setRequest(found);
31
+ }
32
+ })
33
+ .catch((failure) => {
34
+ if (controller.signal.aborted) {
35
+ return;
36
+ }
37
+ setProblem(failure instanceof ApiError && failure.code === "connect.not_found"
38
+ ? words.noSuchCode
39
+ : failure instanceof ApiError
40
+ ? failure.message
41
+ : words.couldNotAsk);
42
+ });
43
+ return () => controller.abort();
44
+ }, [code, connectRequest, words]);
45
+ const head = (_jsx("div", { className: "sc-page-head", children: _jsx("h1", { className: "sc-page-title", children: words.title }) }));
46
+ const ask = (_jsxs(_Fragment, { children: [_jsx("p", { className: "sc-lead", children: words.lead }), _jsx("section", { className: "sc-panel", "aria-label": words.aria, children: _jsx(ConnectCodeForm, { busy: busy, onSubmit: (typed) => navigation.go(connectHref(typed)) }) })] }));
47
+ if (outcome === "approved" && request !== undefined) {
48
+ return (_jsxs(_Fragment, { children: [head, _jsx(Callout, { tone: "info", title: words.approved.title(request.agent), children: _jsxs("p", { children: [words.approved.body, " ", _jsx("a", { href: PATHS.agents, children: words.approved.agentsPage })] }) })] }));
49
+ }
50
+ if (outcome === "denied") {
51
+ return (_jsxs(_Fragment, { children: [head, _jsx(Callout, { tone: "info", title: words.denied.title, children: _jsx("p", { children: words.denied.body }) }), ask] }));
52
+ }
53
+ if (code === undefined || problem !== undefined) {
54
+ return (_jsxs(_Fragment, { children: [head, props.code !== undefined && code === undefined && (_jsx(Callout, { tone: "warning", children: words.notACode })), problem !== undefined && _jsx(Callout, { tone: "warning", children: problem }), ask] }));
55
+ }
56
+ if (request === undefined) {
57
+ return (_jsxs(_Fragment, { children: [head, _jsx("div", { className: "sc-loading", children: _jsx(Spinner, { label: words.lookingUp }) })] }));
58
+ }
59
+ return (_jsxs(_Fragment, { children: [head, _jsx(ConnectApproval, { request: request, daysAtMost: data.me?.workspace.tokenDaysAtMost, busy: busy, error: error, onApprove: (input) => void act(async () => {
60
+ await data.actions.approveConnection(code, input);
61
+ setOutcome("approved");
62
+ }), onDeny: () => void act(async () => {
63
+ await data.actions.denyConnection(code);
64
+ setOutcome("denied");
65
+ }) })] }));
66
+ }
67
+ //# sourceMappingURL=connect-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-page.js","sourceRoot":"","sources":["../src/connect-page.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /** The characters a code is made of: no `0`, `1`, `I` or `O`, which read alike. */
2
+ export declare const CONNECT_CODE_ALPHABET = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789";
3
+ export declare const CONNECT_CODE_LENGTH = 8;
4
+ /** Whether the text is a code as it is written: upper case, a hyphen in the middle. */
5
+ export declare function isConnectCode(text: string): boolean;
6
+ /**
7
+ * The code as it is written, from what a person typed: any case, with or without the hyphen,
8
+ * spaces around or between; or nothing for text that is not a code.
9
+ */
10
+ export declare function normalizeConnectCode(text: string): string | undefined;
11
+ //# sourceMappingURL=connect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AAIA,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,qCAAqC,CAAC;AACxE,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAIrC,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOrE"}
@@ -0,0 +1,24 @@
1
+ // A short code a person reads off their agent's screen and types, or follows, on the console's
2
+ // own pages to connect the agent (ADR-0011): eight characters from an alphabet without
3
+ // look-alikes, in two groups of four. The server makes codes; everything else reads them.
4
+ /** The characters a code is made of: no `0`, `1`, `I` or `O`, which read alike. */
5
+ export const CONNECT_CODE_ALPHABET = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789";
6
+ export const CONNECT_CODE_LENGTH = 8;
7
+ const CODE = /^[A-HJ-NP-Z2-9]{4}-[A-HJ-NP-Z2-9]{4}$/;
8
+ /** Whether the text is a code as it is written: upper case, a hyphen in the middle. */
9
+ export function isConnectCode(text) {
10
+ return CODE.test(text);
11
+ }
12
+ /**
13
+ * The code as it is written, from what a person typed: any case, with or without the hyphen,
14
+ * spaces around or between; or nothing for text that is not a code.
15
+ */
16
+ export function normalizeConnectCode(text) {
17
+ const letters = text.toUpperCase().replaceAll(/[^A-Z0-9]/g, "");
18
+ if (letters.length !== CONNECT_CODE_LENGTH) {
19
+ return undefined;
20
+ }
21
+ const code = `${letters.slice(0, 4)}-${letters.slice(4)}`;
22
+ return CODE.test(code) ? code : undefined;
23
+ }
24
+ //# sourceMappingURL=connect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,uFAAuF;AACvF,0FAA0F;AAE1F,mFAAmF;AACnF,MAAM,CAAC,MAAM,qBAAqB,GAAG,kCAAkC,CAAC;AACxE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,MAAM,IAAI,GAAG,uCAAuC,CAAC;AAErD,uFAAuF;AACvF,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAChE,IAAI,OAAO,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5C,CAAC"}