@skillcdn/console 0.1.17 → 0.1.18

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 (100) hide show
  1. package/README.md +3 -3
  2. package/dist/api.d.ts +2 -1
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +1 -0
  5. package/dist/api.js.map +1 -1
  6. package/dist/cli/cli.d.ts +10 -0
  7. package/dist/cli/cli.d.ts.map +1 -1
  8. package/dist/cli/cli.js +145 -14
  9. package/dist/cli/cli.js.map +1 -1
  10. package/dist/cli/format.d.ts +1 -1
  11. package/dist/cli/format.d.ts.map +1 -1
  12. package/dist/cli/format.js +8 -3
  13. package/dist/cli/format.js.map +1 -1
  14. package/dist/cli/help.d.ts.map +1 -1
  15. package/dist/cli/help.js +7 -5
  16. package/dist/cli/help.js.map +1 -1
  17. package/dist/cli/install.d.ts +21 -0
  18. package/dist/cli/install.d.ts.map +1 -0
  19. package/dist/cli/install.js +87 -0
  20. package/dist/cli/install.js.map +1 -0
  21. package/dist/cli/main.js +22 -3
  22. package/dist/cli/main.js.map +1 -1
  23. package/dist/cli/notices.d.ts +13 -0
  24. package/dist/cli/notices.d.ts.map +1 -0
  25. package/dist/cli/notices.js +31 -0
  26. package/dist/cli/notices.js.map +1 -0
  27. package/dist/client.d.ts +15 -2
  28. package/dist/client.d.ts.map +1 -1
  29. package/dist/client.js +8 -3
  30. package/dist/client.js.map +1 -1
  31. package/dist/compat.d.ts +66 -0
  32. package/dist/compat.d.ts.map +1 -0
  33. package/dist/compat.js +115 -0
  34. package/dist/compat.js.map +1 -0
  35. package/dist/components/calendar.d.ts +3 -1
  36. package/dist/components/calendar.d.ts.map +1 -1
  37. package/dist/components/calendar.js +21 -2
  38. package/dist/components/calendar.js.map +1 -1
  39. package/dist/components/goals.d.ts +3 -1
  40. package/dist/components/goals.d.ts.map +1 -1
  41. package/dist/components/goals.js +23 -11
  42. package/dist/components/goals.js.map +1 -1
  43. package/dist/components/roadmap.d.ts +37 -0
  44. package/dist/components/roadmap.d.ts.map +1 -0
  45. package/dist/components/roadmap.js +76 -0
  46. package/dist/components/roadmap.js.map +1 -0
  47. package/dist/components/tokens.d.ts +2 -0
  48. package/dist/components/tokens.d.ts.map +1 -1
  49. package/dist/components/tokens.js +13 -3
  50. package/dist/components/tokens.js.map +1 -1
  51. package/dist/console.css +204 -0
  52. package/dist/console.d.ts.map +1 -1
  53. package/dist/console.js +8 -7
  54. package/dist/console.js.map +1 -1
  55. package/dist/data.js +1 -1
  56. package/dist/data.js.map +1 -1
  57. package/dist/i18n/en.d.ts +24 -0
  58. package/dist/i18n/en.d.ts.map +1 -1
  59. package/dist/i18n/en.js +24 -0
  60. package/dist/i18n/en.js.map +1 -1
  61. package/dist/i18n/ko.d.ts.map +1 -1
  62. package/dist/i18n/ko.js +24 -0
  63. package/dist/i18n/ko.js.map +1 -1
  64. package/dist/index.d.ts +2 -1
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +2 -1
  67. package/dist/index.js.map +1 -1
  68. package/dist/router.d.ts +6 -1
  69. package/dist/router.d.ts.map +1 -1
  70. package/dist/router.js +10 -1
  71. package/dist/router.js.map +1 -1
  72. package/dist/schemas.d.ts +42 -0
  73. package/dist/schemas.d.ts.map +1 -1
  74. package/dist/schemas.js +18 -0
  75. package/dist/schemas.js.map +1 -1
  76. package/docs/specs/cli.md +9 -6
  77. package/docs/specs/rest.md +9 -5
  78. package/package.json +3 -2
  79. package/skills/working-the-board/SKILL.md +4 -3
  80. package/src/api.ts +23 -0
  81. package/src/cli/cli.ts +178 -15
  82. package/src/cli/format.ts +8 -3
  83. package/src/cli/help.ts +7 -5
  84. package/src/cli/install.ts +111 -0
  85. package/src/cli/main.ts +23 -3
  86. package/src/cli/notices.ts +48 -0
  87. package/src/client.ts +31 -6
  88. package/src/compat.ts +173 -0
  89. package/src/components/calendar.tsx +41 -1
  90. package/src/components/goals.tsx +86 -7
  91. package/src/components/roadmap.tsx +242 -0
  92. package/src/components/tokens.tsx +38 -1
  93. package/src/console.tsx +19 -0
  94. package/src/data.ts +1 -1
  95. package/src/i18n/en.ts +24 -0
  96. package/src/i18n/ko.ts +24 -0
  97. package/src/index.ts +8 -0
  98. package/src/router.ts +13 -2
  99. package/src/schemas.ts +20 -0
  100. package/src/styles/console.css +204 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roadmap.js","sourceRoot":"","sources":["../../src/components/roadmap.tsx"],"names":[],"mappings":"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"}
@@ -11,6 +11,8 @@ export interface TokenListProps {
11
11
  readonly onRevoke?: ((token: RestToken) => void) | undefined;
12
12
  readonly busy?: boolean | undefined;
13
13
  readonly empty?: ReactNode;
14
+ /** The console's version (ADR-0025), so that the version of the command an agent runs is said to be behind or ahead; left out, the version alone is shown. */
15
+ readonly consoleVersion?: string | undefined;
14
16
  }
15
17
  export declare function TokenList(props: TokenListProps): import("react").JSX.Element;
16
18
  export interface TokenFormProps {
@@ -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;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,+BA+B5C"}
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,EAML,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;IAC3B,8JAA8J;IAC9J,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9C;AAgBD,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BAmE9C;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,+BA+B5C"}
@@ -1,8 +1,8 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState } from "react";
3
- import { DEFAULT_TOKEN_DAYS, MAX_TOKEN_NAME_LENGTH, } from "../api.js";
3
+ import { DEFAULT_TOKEN_DAYS, judgeClient, MAX_TOKEN_NAME_LENGTH, parseVersion, } from "../api.js";
4
4
  import { useWords } from "../i18n/index.js";
5
- import { Button, Callout, CopyButton, Time } from "./ui.js";
5
+ import { Badge, Button, Callout, CopyButton, Time } from "./ui.js";
6
6
  // The tokens a person holds for their agents, scripts and consoles of their own, shown as the
7
7
  // agents that hold them: the list, the way to make one by hand, and the one just made, whose
8
8
  // secret is shown this once. Each takes its data as props and nothing from the network.
@@ -20,12 +20,22 @@ export function dayChoices(daysAtMost) {
20
20
  const within = DAY_CHOICES.filter((choice) => choice !== "never" && Number(choice) < daysAtMost);
21
21
  return [...within, String(daysAtMost)];
22
22
  }
23
+ /** What a command's version is to the console's: nothing to say when they go together, else which way they differ. */
24
+ function verdictOf(client, consoleVersion) {
25
+ const command = parseVersion(client);
26
+ const server = parseVersion(consoleVersion);
27
+ if (command === undefined || server === undefined) {
28
+ return undefined;
29
+ }
30
+ const { verdict } = judgeClient(command, server);
31
+ return verdict === "current" ? undefined : verdict;
32
+ }
23
33
  export function TokenList(props) {
24
34
  const words = useWords().agents;
25
35
  if (props.tokens.length === 0) {
26
36
  return _jsx(_Fragment, { children: props.empty ?? null });
27
37
  }
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))) }));
38
+ 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 })] }), token.client !== null && (_jsxs("span", { children: [words.command(token.client), ((verdict) => verdict === undefined ? null : (_jsxs(_Fragment, { children: [" ", _jsx(Badge, { tone: verdict === "outdated" || verdict === "too_new" ? "danger" : "warning", children: words.commandVerdict[verdict] })] })))(verdictOf(token.client, props.consoleVersion))] })), _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))) }));
29
39
  }
30
40
  export function TokenForm(props) {
31
41
  const words = useWords();
@@ -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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"}
package/dist/console.css CHANGED
@@ -3476,3 +3476,207 @@ table {
3476
3476
  .sc-rules-fold[open] > summary {
3477
3477
  margin-bottom: var(--sc-space-3);
3478
3478
  }
3479
+
3480
+ /* The roadmap as months (ADR-0026): the months as columns, each goal a bar from its start to its target. */
3481
+ .sc-timeline {
3482
+ display: grid;
3483
+ gap: var(--sc-space-3);
3484
+ margin-bottom: var(--sc-space-6);
3485
+ }
3486
+
3487
+ .sc-timeline-head {
3488
+ display: flex;
3489
+ flex-wrap: wrap;
3490
+ align-items: center;
3491
+ justify-content: space-between;
3492
+ gap: var(--sc-space-2);
3493
+ }
3494
+
3495
+ .sc-timeline-title {
3496
+ margin: 0;
3497
+ font-size: var(--sc-text-base);
3498
+ font-weight: var(--sc-weight-medium);
3499
+ }
3500
+
3501
+ .sc-timeline-grid {
3502
+ display: grid;
3503
+ gap: 2px;
3504
+ overflow-x: auto;
3505
+ }
3506
+
3507
+ .sc-timeline-row {
3508
+ display: grid;
3509
+ grid-template-columns: minmax(8rem, 14rem) minmax(20rem, 1fr);
3510
+ align-items: center;
3511
+ gap: var(--sc-space-2);
3512
+ }
3513
+
3514
+ .sc-timeline-label {
3515
+ display: flex;
3516
+ flex-wrap: wrap;
3517
+ align-items: center;
3518
+ gap: var(--sc-space-2);
3519
+ min-width: 0;
3520
+ }
3521
+
3522
+ .sc-timeline-goal {
3523
+ color: var(--sc-color-text);
3524
+ font-size: var(--sc-text-sm);
3525
+ text-decoration: none;
3526
+ overflow-wrap: anywhere;
3527
+ }
3528
+
3529
+ .sc-timeline-goal:hover {
3530
+ color: var(--sc-color-accent);
3531
+ }
3532
+
3533
+ .sc-timeline-track {
3534
+ position: relative;
3535
+ display: flex;
3536
+ height: 1.75rem;
3537
+ }
3538
+
3539
+ .sc-timeline-months .sc-timeline-track {
3540
+ height: auto;
3541
+ }
3542
+
3543
+ .sc-timeline-month {
3544
+ flex: none;
3545
+ padding: var(--sc-space-1) var(--sc-space-2);
3546
+ border-left: var(--sc-border);
3547
+ color: var(--sc-color-text-muted);
3548
+ font-size: var(--sc-text-xs);
3549
+ white-space: nowrap;
3550
+ overflow: hidden;
3551
+ text-overflow: ellipsis;
3552
+ }
3553
+
3554
+ .sc-timeline-column {
3555
+ flex: none;
3556
+ height: 100%;
3557
+ border-left: var(--sc-border);
3558
+ background: var(--sc-color-sheet);
3559
+ }
3560
+
3561
+ .sc-timeline-today {
3562
+ position: absolute;
3563
+ top: 0;
3564
+ bottom: 0;
3565
+ width: 2px;
3566
+ margin-left: -1px;
3567
+ background: var(--sc-color-accent);
3568
+ opacity: 0.7;
3569
+ }
3570
+
3571
+ .sc-timeline-today-mark {
3572
+ top: auto;
3573
+ bottom: 0;
3574
+ height: var(--sc-space-2);
3575
+ }
3576
+
3577
+ .sc-timeline-bar {
3578
+ position: absolute;
3579
+ top: 0.25rem;
3580
+ bottom: 0.25rem;
3581
+ display: flex;
3582
+ align-items: center;
3583
+ overflow: hidden;
3584
+ border-block: 1px solid color-mix(in srgb, var(--sc-category-line) 45%, transparent);
3585
+ background: var(--sc-category-fill);
3586
+ color: var(--sc-category-line);
3587
+ font-size: var(--sc-text-xs);
3588
+ text-decoration: none;
3589
+ white-space: nowrap;
3590
+ }
3591
+
3592
+ .sc-timeline-bar:hover {
3593
+ background: color-mix(in srgb, var(--sc-category-fill), white 12%);
3594
+ }
3595
+
3596
+ .sc-timeline-bar.sc-timeline-bar-begins {
3597
+ border-left: 1px solid color-mix(in srgb, var(--sc-category-line) 45%, transparent);
3598
+ border-start-start-radius: var(--sc-radius-full);
3599
+ border-end-start-radius: var(--sc-radius-full);
3600
+ }
3601
+
3602
+ .sc-timeline-bar.sc-timeline-bar-ends {
3603
+ border-right: 1px solid color-mix(in srgb, var(--sc-category-line) 45%, transparent);
3604
+ border-start-end-radius: var(--sc-radius-full);
3605
+ border-end-end-radius: var(--sc-radius-full);
3606
+ }
3607
+
3608
+ .sc-timeline-fill {
3609
+ position: absolute;
3610
+ top: 0;
3611
+ bottom: 0;
3612
+ left: 0;
3613
+ background: color-mix(in srgb, var(--sc-category-line) 35%, transparent);
3614
+ }
3615
+
3616
+ .sc-timeline-words {
3617
+ position: relative;
3618
+ padding-inline: var(--sc-space-2);
3619
+ }
3620
+
3621
+ .sc-timeline-point {
3622
+ position: absolute;
3623
+ top: 50%;
3624
+ width: 0.75rem;
3625
+ height: 0.75rem;
3626
+ margin-left: -0.375rem;
3627
+ transform: translateY(-50%) rotate(45deg);
3628
+ border: 1px solid color-mix(in srgb, var(--sc-category-line) 60%, transparent);
3629
+ background: var(--sc-category-fill);
3630
+ }
3631
+
3632
+ .sc-goal-done .sc-timeline-bar,
3633
+ .sc-goal-done .sc-timeline-point {
3634
+ opacity: 0.6;
3635
+ }
3636
+
3637
+ .sc-goal-dropped .sc-timeline-bar,
3638
+ .sc-goal-dropped .sc-timeline-point {
3639
+ opacity: 0.4;
3640
+ }
3641
+
3642
+ .sc-timeline-undated {
3643
+ margin: 0;
3644
+ font-size: var(--sc-text-sm);
3645
+ }
3646
+
3647
+ .sc-goal-days {
3648
+ color: var(--sc-color-text-muted);
3649
+ font-size: var(--sc-text-xs);
3650
+ }
3651
+
3652
+ /* A goal marks its target day on the month: a flag before its title, in the colour of its category. */
3653
+ .sc-calendar-goal {
3654
+ display: flex;
3655
+ align-items: center;
3656
+ gap: var(--sc-space-1);
3657
+ margin-top: 2px;
3658
+ color: var(--sc-category-line, var(--sc-color-text));
3659
+ font-size: var(--sc-text-xs);
3660
+ font-weight: var(--sc-weight-medium);
3661
+ line-height: 1.2;
3662
+ text-decoration: none;
3663
+ }
3664
+
3665
+ .sc-calendar-goal:hover {
3666
+ color: var(--sc-color-accent);
3667
+ }
3668
+
3669
+ .sc-calendar-flag {
3670
+ display: inline-block;
3671
+ flex: none;
3672
+ width: 0.5rem;
3673
+ height: 0.5rem;
3674
+ transform: rotate(45deg);
3675
+ background: var(--sc-category-line, var(--sc-color-text-faint));
3676
+ }
3677
+
3678
+ @media (max-width: 40rem) {
3679
+ .sc-timeline-row {
3680
+ grid-template-columns: minmax(6rem, 8rem) minmax(16rem, 1fr);
3681
+ }
3682
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../src/console.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAEf,OAAO,EAEL,KAAK,aAAa,EAYlB,KAAK,WAAW,EAajB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAuB,KAAK,UAAU,EAAsB,MAAM,uBAAuB,CAAC;AACjG,OAAO,EAAY,KAAK,aAAa,EAAY,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGlF,OAAO,EAA8B,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACnG,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAsB,KAAK,aAAa,EAAY,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAA2B,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAEL,KAAK,eAAe,EAGpB,KAAK,gBAAgB,EAEtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,KAAK,KAAK,EAIV,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxE,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAkC,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAS7F,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,WAAW,CAAC;AAG7D,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,QAAQ,EAEd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAQL,KAAK,UAAU,EASf,KAAK,KAAK,EAMX,MAAM,aAAa,CAAC;AAUrB,8FAA8F;AAC9F,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACxD,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAClD,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACtD,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;CACzD;AAED,eAAO,MAAM,kBAAkB,EAAE,iBAgBhC,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,mGAAmG;IACnG,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yHAAyH;IACzH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1D,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,CAAC;IACxC,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,SAAS,CAAC;CAC5D;AAED,wGAAwG;AACxG,MAAM,WAAW,iBAAiB;IAChC,mGAAmG;IACnG,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;IAC1C,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,8IAA8I;AAC9I,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAYrE;AAED,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,+FAA+F;IAC/F,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC;IAC7D,4HAA4H;IAC5H,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAAC;IACzD,wGAAwG;IACxG,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IACnC,2FAA2F;IAC3F,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC5C,mEAAmE;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,CAAC;CACpD;AAED,MAAM,WAAW,UAAU;IACzB,sEAAsE;IACtE,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;IAC3E,mFAAmF;IACnF,KAAK,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,IAAI,CAAC;CACvC;AA6HD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAOpD;AAk4CD,wBAAgB,aAAa,CAAC,MAAM,GAAE,aAAkB,GAAG,UAAU,CAkTpE"}
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../src/console.tsx"],"names":[],"mappings":"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"}
package/dist/console.js CHANGED
@@ -12,6 +12,7 @@ import { EventFeed } from "./components/event-feed.js";
12
12
  import { GoalForm, GoalList, GoalView } from "./components/goals.js";
13
13
  import { ListingForm, PeopleList } from "./components/people.js";
14
14
  import { MemberList, ProjectForm, ProjectList, ProjectMark, } from "./components/projects.js";
15
+ import { GoalTimeline } from "./components/roadmap.js";
15
16
  import { RulesForm, RulesView } from "./components/rules.js";
16
17
  import { isPlainClick, Shell, } from "./components/shell.js";
17
18
  import { SignIn } from "./components/sign-in.js";
@@ -27,7 +28,7 @@ import { useConsoleData } from "./data.js";
27
28
  import { monthOf, today } from "./dates.js";
28
29
  import { DocsPage } from "./docs-page.js";
29
30
  import { chooseLanguage, DEFAULT_LANGUAGES, LanguageContext, useWords, } from "./i18n/index.js";
30
- import { boardHref, calendarHref, customPageHref, decisionHref, docHref, goalHref, matchRoute, newDecisionHref, newGoalHref, newTaskHref, PATHS, personAgentsHref, personWorkHref, projectHref, projectSettingsHref, settingsHref, signInFailureOf, taskHref, withoutSignInParam, workHref, } from "./router.js";
31
+ import { boardHref, calendarHref, customPageHref, decisionHref, docHref, goalHref, matchRoute, newDecisionHref, newGoalHref, newTaskHref, PATHS, personAgentsHref, personWorkHref, projectHref, projectSettingsHref, roadmapHref, settingsHref, signInFailureOf, taskHref, withoutSignInParam, workHref, } from "./router.js";
31
32
  import { projectPath } from "./routes.js";
32
33
  import { errorWords, useAction } from "./use-action.js";
33
34
  export const DEFAULT_COMPONENTS = {
@@ -297,7 +298,7 @@ function ProjectPage(props) {
297
298
  const overdue = open.filter((task) => task.dueOn !== null && task.dueOn < now).sort(byDue);
298
299
  const unscheduled = open.filter((task) => task.dueOn === null).sort(byDue);
299
300
  const calendar = words.calendar;
300
- return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "sc-page-head", children: [_jsx("h1", { className: "sc-page-title", children: calendar.title }), _jsx(LinkButton, { href: newTaskHref(key), variant: "primary", children: words.board.writeTask })] }), data.tasks.length > 0 && (_jsx(BoardFilters, { filter: route.filter, categories: data.categories, goals: data.goals, people: data.people.filter(inWorkspace), me: me, shown: shown.length, total: data.tasks.length, onChange: (filter) => navigation.replace(calendarHref(key, route.month, filter)) })), _jsx(components.Calendar, { tasks: shown, month: month, today: now, categories: data.categories, goals: data.goals, taskHref: href, monthHref: (wanted) => calendarHref(key, wanted, route.filter) }), _jsxs("div", { className: "sc-calendar-below", children: [_jsxs("section", { className: "sc-task-section", "aria-label": calendar.overdue, children: [_jsxs("h2", { className: "sc-section-title", children: [calendar.overdue, " ", _jsx("span", { className: "sc-column-count", children: overdue.length })] }), _jsx(TaskList, { tasks: overdue, taskHref: href, today: now, showState: true, empty: _jsx("p", { className: "sc-muted", children: calendar.nothingOverdue }) })] }), _jsxs("section", { className: "sc-task-section", "aria-label": calendar.unscheduled, children: [_jsxs("h2", { className: "sc-section-title", children: [calendar.unscheduled, " ", _jsx("span", { className: "sc-column-count", children: unscheduled.length })] }), _jsx(TaskList, { tasks: unscheduled, taskHref: href, today: now, showState: true, empty: _jsx("p", { className: "sc-muted", children: calendar.allScheduled }) })] })] }), open.length > 0 && (_jsxs("section", { className: "sc-task-section", "aria-label": calendar.workload.title, children: [_jsx("h2", { className: "sc-section-title", children: calendar.workload.title }), _jsx(Workload, { tasks: shown, today: now, personHref: (person) => boardHref(key, person === undefined ? {} : { person: person.id }) })] }))] }));
301
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "sc-page-head", children: [_jsx("h1", { className: "sc-page-title", children: calendar.title }), _jsx(LinkButton, { href: newTaskHref(key), variant: "primary", children: words.board.writeTask })] }), data.tasks.length > 0 && (_jsx(BoardFilters, { filter: route.filter, categories: data.categories, goals: data.goals, people: data.people.filter(inWorkspace), me: me, shown: shown.length, total: data.tasks.length, onChange: (filter) => navigation.replace(calendarHref(key, route.month, filter)) })), _jsx(components.Calendar, { tasks: shown, month: month, today: now, categories: data.categories, goals: data.goals, taskHref: href, goalHref: (goal) => goalHref(key, goal.id), monthHref: (wanted) => calendarHref(key, wanted, route.filter) }), _jsxs("div", { className: "sc-calendar-below", children: [_jsxs("section", { className: "sc-task-section", "aria-label": calendar.overdue, children: [_jsxs("h2", { className: "sc-section-title", children: [calendar.overdue, " ", _jsx("span", { className: "sc-column-count", children: overdue.length })] }), _jsx(TaskList, { tasks: overdue, taskHref: href, today: now, showState: true, empty: _jsx("p", { className: "sc-muted", children: calendar.nothingOverdue }) })] }), _jsxs("section", { className: "sc-task-section", "aria-label": calendar.unscheduled, children: [_jsxs("h2", { className: "sc-section-title", children: [calendar.unscheduled, " ", _jsx("span", { className: "sc-column-count", children: unscheduled.length })] }), _jsx(TaskList, { tasks: unscheduled, taskHref: href, today: now, showState: true, empty: _jsx("p", { className: "sc-muted", children: calendar.allScheduled }) })] })] }), open.length > 0 && (_jsxs("section", { className: "sc-task-section", "aria-label": calendar.workload.title, children: [_jsx("h2", { className: "sc-section-title", children: calendar.workload.title }), _jsx(Workload, { tasks: shown, today: now, personHref: (person) => boardHref(key, person === undefined ? {} : { person: person.id }) })] }))] }));
301
302
  }
302
303
  if (route.name === "roadmap" || route.name === "new-goal") {
303
304
  const roadmap = words.roadmap;
@@ -305,10 +306,10 @@ function ProjectPage(props) {
305
306
  if (making && !owner) {
306
307
  return _jsx(EmptyState, { title: roadmap.onlyOwner.title, body: roadmap.onlyOwner.body });
307
308
  }
308
- return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "sc-page-head", children: [_jsx("h1", { className: "sc-page-title", children: roadmap.title }), !making && owner && (_jsx(LinkButton, { href: newGoalHref(key), variant: "primary", children: roadmap.setGoal }))] }), error !== undefined && _jsx(Callout, { tone: "danger", children: error }), making && (_jsx("section", { className: "sc-panel sc-panel-form", "aria-label": roadmap.setGoalAria, children: _jsx(GoalForm, { busy: busy, onSubmit: (input) => void act(async () => {
309
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "sc-page-head", children: [_jsx("h1", { className: "sc-page-title", children: roadmap.title }), !making && owner && (_jsx(LinkButton, { href: newGoalHref(key), variant: "primary", children: roadmap.setGoal }))] }), error !== undefined && _jsx(Callout, { tone: "danger", children: error }), making && (_jsx("section", { className: "sc-panel sc-panel-form", "aria-label": roadmap.setGoalAria, children: _jsx(GoalForm, { categories: data.categories, busy: busy, onSubmit: (input) => void act(async () => {
309
310
  const made = await data.actions.createGoal(input);
310
311
  navigation.replace(goalHref(key, made.id));
311
- }), onCancel: () => navigation.back(projectHref(key, "roadmap")) }) })), _jsx(components.GoalList, { goals: data.goals, goalHref: (goal) => goalHref(key, goal.id), empty: _jsx(EmptyState, { title: roadmap.empty.title, body: roadmap.empty.body, action: owner ? (_jsx(LinkButton, { href: newGoalHref(key), children: roadmap.setGoal })) : undefined }) })] }));
312
+ }), onCancel: () => navigation.back(projectHref(key, "roadmap")) }) })), data.goals.length > 0 && (_jsx(GoalTimeline, { goals: data.goals, from: route.name === "roadmap" && route.from !== undefined ? route.from : monthOf(today()), today: today(), categories: data.categories, goalHref: (goal) => goalHref(key, goal.id), fromHref: (month) => roadmapHref(key, month) })), _jsx(components.GoalList, { goals: data.goals, goalHref: (goal) => goalHref(key, goal.id), empty: _jsx(EmptyState, { title: roadmap.empty.title, body: roadmap.empty.body, action: owner ? (_jsx(LinkButton, { href: newGoalHref(key), children: roadmap.setGoal })) : undefined }) })] }));
312
313
  }
313
314
  if (route.name === "goal") {
314
315
  const roadmap = words.roadmap;
@@ -321,7 +322,7 @@ function ProjectPage(props) {
321
322
  if (!owner) {
322
323
  return _jsx(EmptyState, { title: roadmap.onlyOwner.title, body: roadmap.onlyOwner.body });
323
324
  }
324
- return (_jsxs(_Fragment, { children: [_jsx("div", { className: "sc-page-head", children: _jsx("h1", { className: "sc-page-title", children: goal.title }) }), error !== undefined && _jsx(Callout, { tone: "danger", children: error }), _jsx("section", { className: "sc-panel sc-panel-form", "aria-label": roadmap.editAria, children: _jsx(GoalForm, { goal: goal, busy: busy, onSubmit: (input) => void act(async () => {
325
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: "sc-page-head", children: _jsx("h1", { className: "sc-page-title", children: goal.title }) }), error !== undefined && _jsx(Callout, { tone: "danger", children: error }), _jsx("section", { className: "sc-panel sc-panel-form", "aria-label": roadmap.editAria, children: _jsx(GoalForm, { goal: goal, categories: data.categories, busy: busy, onSubmit: (input) => void act(async () => {
325
326
  await data.actions.updateGoal(goal.id, input);
326
327
  navigation.replace(here);
327
328
  }), onCancel: () => navigation.back(here) }) })] }));
@@ -538,7 +539,7 @@ function PersonAgentsPage(props) {
538
539
  if (!administrator) {
539
540
  return (_jsx(EmptyState, { title: words.people.onlyAdmin.title, body: words.people.onlyAdmin.body, action: _jsx(LinkButton, { href: PATHS.agents, children: words.nav.agents }) }));
540
541
  }
541
- return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "sc-page-head", children: [_jsx("h1", { className: "sc-page-title", children: words.people.agentsOf(person === undefined ? "?" : personName(person)) }), _jsx(LinkButton, { href: PATHS.people, children: words.nav.people })] }), error !== undefined && _jsx(Callout, { tone: "danger", children: error }), tokens === undefined ? (_jsx("div", { className: "sc-loading", children: _jsx(Spinner, { label: words.people.loadingAgents }) })) : (_jsx(components.TokenList, { tokens: tokens, busy: busy, onRevoke: (token) => void act(async () => {
542
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "sc-page-head", children: [_jsx("h1", { className: "sc-page-title", children: words.people.agentsOf(person === undefined ? "?" : personName(person)) }), _jsx(LinkButton, { href: PATHS.people, children: words.nav.people })] }), error !== undefined && _jsx(Callout, { tone: "danger", children: error }), tokens === undefined ? (_jsx("div", { className: "sc-loading", children: _jsx(Spinner, { label: words.people.loadingAgents }) })) : (_jsx(components.TokenList, { tokens: tokens, busy: busy, consoleVersion: data.me?.console?.version, onRevoke: (token) => void act(async () => {
542
543
  await data.actions.revokePersonToken(id, token.id);
543
544
  setGeneration((current) => current + 1);
544
545
  }), empty: _jsx(EmptyState, { title: words.people.noAgent }) }))] }));
@@ -653,7 +654,7 @@ function WorkspacePage(props) {
653
654
  return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "sc-page-head", children: [_jsx("h1", { className: "sc-page-title", children: agents.title }), !making && (_jsx(LinkButton, { href: PATHS.newToken, variant: "primary", children: agents.makeByHand }))] }), error !== undefined && _jsx(Callout, { tone: "danger", children: error }), fresh !== undefined && (_jsx(NewToken, { token: fresh.token, secret: fresh.secret, onDone: () => setFresh(undefined) })), making && (_jsx("section", { className: "sc-panel sc-panel-form", "aria-label": agents.makeAria, children: _jsx(TokenForm, { daysAtMost: data.me?.workspace.tokenDaysAtMost, busy: busy, onSubmit: (input) => void act(async () => {
654
655
  setFresh(await data.actions.createToken(input));
655
656
  navigation.replace(PATHS.agents);
656
- }), onCancel: () => navigation.back(PATHS.agents) }) })), _jsx(components.TokenList, { tokens: data.tokens, busy: busy, onRevoke: (token) => void act(() => data.actions.revokeToken(token.id)), empty: _jsx(EmptyState, { title: agents.empty.title, body: agents.empty.body }) }), _jsx(ConnectWords, { origin: origin })] }));
657
+ }), onCancel: () => navigation.back(PATHS.agents) }) })), _jsx(components.TokenList, { tokens: data.tokens, busy: busy, consoleVersion: data.me?.console?.version, onRevoke: (token) => void act(() => data.actions.revokeToken(token.id)), empty: _jsx(EmptyState, { title: agents.empty.title, body: agents.empty.body }) }), _jsx(ConnectWords, { origin: origin })] }));
657
658
  }
658
659
  return _jsx(NothingHere, {});
659
660
  }