sideby 0.13.1 → 0.15.0
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/README.md +2 -1
- package/dist/build.json +1 -1
- package/dist/src/cli/commands.d.ts +4 -2
- package/dist/src/cli/commands.js +194 -11
- package/dist/src/cli/format.js +7 -3
- package/dist/src/cli/json-schemas.js +104 -3
- package/dist/src/cli/main.js +27 -7
- package/dist/src/core/config.d.ts +28 -0
- package/dist/src/core/config.js +54 -1
- package/dist/src/core/handoff-enable.js +10 -5
- package/dist/src/core/launch.d.ts +5 -0
- package/dist/src/core/launch.js +14 -3
- package/dist/src/core/quota-fetch.d.ts +22 -0
- package/dist/src/core/quota-fetch.js +98 -0
- package/dist/src/core/quota-levels.d.ts +3 -2
- package/dist/src/core/quota-levels.js +8 -4
- package/dist/src/core/quota-store.d.ts +19 -0
- package/dist/src/core/quota-store.js +62 -0
- package/dist/src/core/skill-check.d.ts +16 -0
- package/dist/src/core/skill-check.js +47 -3
- package/dist/src/core/update.d.ts +67 -1
- package/dist/src/core/update.js +147 -37
- package/dist/src/families/grok/handoff-hook.d.ts +6 -0
- package/dist/src/families/grok/handoff-hook.js +45 -2
- package/dist/src/families/grok/handoff.d.ts +6 -1
- package/dist/src/families/grok/handoff.js +30 -13
- package/dist/src/families/grok/index.js +5 -0
- package/dist/src/families/grok/quota-log.d.ts +30 -0
- package/dist/src/families/grok/quota-log.js +140 -0
- package/dist/src/families/grok/quota.d.ts +5 -0
- package/dist/src/families/grok/quota.js +112 -0
- package/dist/src/panel/handler.d.ts +13 -3
- package/dist/src/panel/handler.js +81 -8
- package/dist/src/panel/i18n.d.ts +138 -8
- package/dist/src/panel/i18n.js +301 -41
- package/dist/src/panel/page-logic.d.ts +59 -2
- package/dist/src/panel/page-logic.js +99 -6
- package/dist/src/panel/page-script.js +769 -175
- package/dist/src/panel/page-styles.js +83 -15
- package/dist/src/panel/page.js +3 -0
- package/dist/src/runtime.d.ts +32 -2
- package/dist/src/runtime.js +64 -21
- package/dist/src/types.d.ts +49 -1
- package/package.json +3 -2
- package/schemas/alias.json +1 -1
- package/schemas/app-install.json +1 -1
- package/schemas/app-uninstall.json +1 -1
- package/schemas/browser-open.json +1 -1
- package/schemas/browser-switch.json +1 -1
- package/schemas/browser.json +1 -1
- package/schemas/config.json +60 -0
- package/schemas/desktop-remove.json +1 -1
- package/schemas/desktop.json +1 -1
- package/schemas/doctor.json +1 -1
- package/schemas/error.json +1 -1
- package/schemas/families.json +1 -1
- package/schemas/handoff-disable.json +1 -1
- package/schemas/handoff-enable.json +1 -1
- package/schemas/handoff-ready.json +1 -1
- package/schemas/handoff-setup.json +1 -1
- package/schemas/handoff-status.json +282 -1
- package/schemas/handoff-teardown.json +1 -1
- package/schemas/list.json +6 -1
- package/schemas/model.json +1 -1
- package/schemas/new.json +1 -1
- package/schemas/next.json +1 -1
- package/schemas/order.json +148 -0
- package/schemas/pin.json +126 -0
- package/schemas/plugins.json +1 -1
- package/schemas/quota-check.json +88 -0
- package/schemas/quota-setup.json +1 -1
- package/schemas/quota-teardown.json +1 -1
- package/schemas/quota.json +15 -2
- package/schemas/remote-control.json +1 -1
- package/schemas/tune-change.json +1 -1
- package/schemas/tune.json +1 -1
- package/schemas/unpin.json +126 -0
- package/schemas/update-auto.json +84 -0
- package/schemas/update.json +79 -1
- package/skills/sideby/SKILL.md +7 -3
- package/skills/sideby/references/diagnose.md +2 -1
- package/skills/sideby/references/handoff.md +9 -1
- package/skills/sideby/references/panel.md +28 -0
- package/skills/sideby/references/quota.md +11 -1
- package/skills/sideby/references/update.md +6 -2
package/schemas/pin.json
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "sideby/pin.json",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"schemaVersion",
|
|
7
|
+
"ref",
|
|
8
|
+
"pinned",
|
|
9
|
+
"changed",
|
|
10
|
+
"message",
|
|
11
|
+
"display"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"schemaVersion": {
|
|
15
|
+
"type": "number",
|
|
16
|
+
"const": 1
|
|
17
|
+
},
|
|
18
|
+
"ref": {
|
|
19
|
+
"type": "string"
|
|
20
|
+
},
|
|
21
|
+
"pinned": {
|
|
22
|
+
"type": "boolean"
|
|
23
|
+
},
|
|
24
|
+
"changed": {
|
|
25
|
+
"type": "boolean"
|
|
26
|
+
},
|
|
27
|
+
"message": {
|
|
28
|
+
"type": "string"
|
|
29
|
+
},
|
|
30
|
+
"display": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"properties": {
|
|
33
|
+
"families": {
|
|
34
|
+
"type": "array",
|
|
35
|
+
"items": {
|
|
36
|
+
"type": "string"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"accounts": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"patternProperties": {
|
|
42
|
+
"^.*$": {
|
|
43
|
+
"type": "array",
|
|
44
|
+
"items": {
|
|
45
|
+
"type": "string"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"pinned": {
|
|
51
|
+
"type": "object",
|
|
52
|
+
"patternProperties": {
|
|
53
|
+
"^.*$": {
|
|
54
|
+
"type": "array",
|
|
55
|
+
"items": {
|
|
56
|
+
"type": "string"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"_notice": {
|
|
64
|
+
"type": "object",
|
|
65
|
+
"properties": {
|
|
66
|
+
"update": {
|
|
67
|
+
"type": "object",
|
|
68
|
+
"required": [
|
|
69
|
+
"current",
|
|
70
|
+
"latest",
|
|
71
|
+
"command",
|
|
72
|
+
"message"
|
|
73
|
+
],
|
|
74
|
+
"properties": {
|
|
75
|
+
"current": {
|
|
76
|
+
"type": "string"
|
|
77
|
+
},
|
|
78
|
+
"latest": {
|
|
79
|
+
"type": "string"
|
|
80
|
+
},
|
|
81
|
+
"command": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"description": "Run it after the user agrees: it shows the plan and exits 10; then --yes."
|
|
84
|
+
},
|
|
85
|
+
"message": {
|
|
86
|
+
"type": "string"
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"skill": {
|
|
91
|
+
"type": "object",
|
|
92
|
+
"required": [
|
|
93
|
+
"installed",
|
|
94
|
+
"current",
|
|
95
|
+
"command",
|
|
96
|
+
"message"
|
|
97
|
+
],
|
|
98
|
+
"properties": {
|
|
99
|
+
"installed": {
|
|
100
|
+
"anyOf": [
|
|
101
|
+
{
|
|
102
|
+
"type": "string"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"type": "null"
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"description": "The skill's version; null when it has none."
|
|
109
|
+
},
|
|
110
|
+
"current": {
|
|
111
|
+
"type": "string"
|
|
112
|
+
},
|
|
113
|
+
"command": {
|
|
114
|
+
"type": "string",
|
|
115
|
+
"description": "`sideby update`, which updates the skill with sideby: run it after the user agrees; it shows the plan and exits 10, then --yes."
|
|
116
|
+
},
|
|
117
|
+
"message": {
|
|
118
|
+
"type": "string"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"description": "Not the answer to the task: mention it briefly afterwards and offer to update."
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
package/schemas/plugins.json
CHANGED
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
},
|
|
122
122
|
"command": {
|
|
123
123
|
"type": "string",
|
|
124
|
-
"description": "
|
|
124
|
+
"description": "`sideby update`, which updates the skill with sideby: run it after the user agrees; it shows the plan and exits 10, then --yes."
|
|
125
125
|
},
|
|
126
126
|
"message": {
|
|
127
127
|
"type": "string"
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "sideby/quota-check.json",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"schemaVersion",
|
|
7
|
+
"family",
|
|
8
|
+
"on",
|
|
9
|
+
"changed"
|
|
10
|
+
],
|
|
11
|
+
"properties": {
|
|
12
|
+
"schemaVersion": {
|
|
13
|
+
"type": "number",
|
|
14
|
+
"const": 1
|
|
15
|
+
},
|
|
16
|
+
"family": {
|
|
17
|
+
"type": "string"
|
|
18
|
+
},
|
|
19
|
+
"on": {
|
|
20
|
+
"type": "boolean"
|
|
21
|
+
},
|
|
22
|
+
"changed": {
|
|
23
|
+
"type": "boolean"
|
|
24
|
+
},
|
|
25
|
+
"_notice": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"properties": {
|
|
28
|
+
"update": {
|
|
29
|
+
"type": "object",
|
|
30
|
+
"required": [
|
|
31
|
+
"current",
|
|
32
|
+
"latest",
|
|
33
|
+
"command",
|
|
34
|
+
"message"
|
|
35
|
+
],
|
|
36
|
+
"properties": {
|
|
37
|
+
"current": {
|
|
38
|
+
"type": "string"
|
|
39
|
+
},
|
|
40
|
+
"latest": {
|
|
41
|
+
"type": "string"
|
|
42
|
+
},
|
|
43
|
+
"command": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"description": "Run it after the user agrees: it shows the plan and exits 10; then --yes."
|
|
46
|
+
},
|
|
47
|
+
"message": {
|
|
48
|
+
"type": "string"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"skill": {
|
|
53
|
+
"type": "object",
|
|
54
|
+
"required": [
|
|
55
|
+
"installed",
|
|
56
|
+
"current",
|
|
57
|
+
"command",
|
|
58
|
+
"message"
|
|
59
|
+
],
|
|
60
|
+
"properties": {
|
|
61
|
+
"installed": {
|
|
62
|
+
"anyOf": [
|
|
63
|
+
{
|
|
64
|
+
"type": "string"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"type": "null"
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"description": "The skill's version; null when it has none."
|
|
71
|
+
},
|
|
72
|
+
"current": {
|
|
73
|
+
"type": "string"
|
|
74
|
+
},
|
|
75
|
+
"command": {
|
|
76
|
+
"type": "string",
|
|
77
|
+
"description": "`sideby update`, which updates the skill with sideby: run it after the user agrees; it shows the plan and exits 10, then --yes."
|
|
78
|
+
},
|
|
79
|
+
"message": {
|
|
80
|
+
"type": "string"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"description": "Not the answer to the task: mention it briefly afterwards and offer to update."
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
package/schemas/quota-setup.json
CHANGED
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
},
|
|
108
108
|
"command": {
|
|
109
109
|
"type": "string",
|
|
110
|
-
"description": "
|
|
110
|
+
"description": "`sideby update`, which updates the skill with sideby: run it after the user agrees; it shows the plan and exits 10, then --yes."
|
|
111
111
|
},
|
|
112
112
|
"message": {
|
|
113
113
|
"type": "string"
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
},
|
|
78
78
|
"command": {
|
|
79
79
|
"type": "string",
|
|
80
|
-
"description": "
|
|
80
|
+
"description": "`sideby update`, which updates the skill with sideby: run it after the user agrees; it shows the plan and exits 10, then --yes."
|
|
81
81
|
},
|
|
82
82
|
"message": {
|
|
83
83
|
"type": "string"
|
package/schemas/quota.json
CHANGED
|
@@ -66,6 +66,10 @@
|
|
|
66
66
|
"label": {
|
|
67
67
|
"type": "string"
|
|
68
68
|
},
|
|
69
|
+
"name": {
|
|
70
|
+
"type": "string",
|
|
71
|
+
"description": "The group of models this limit covers, when it covers only some (spec §3.26); it does not count toward Quota Pressure."
|
|
72
|
+
},
|
|
69
73
|
"windowMinutes": {
|
|
70
74
|
"type": "number"
|
|
71
75
|
},
|
|
@@ -90,6 +94,14 @@
|
|
|
90
94
|
"from": {
|
|
91
95
|
"type": "string",
|
|
92
96
|
"description": "The account this reading was taken from, when it is another account of the same login (spec §3.21); observedAt is its time."
|
|
97
|
+
},
|
|
98
|
+
"fetched": {
|
|
99
|
+
"type": "boolean",
|
|
100
|
+
"description": "This reading is the kept answer of a quota check that costs a request (spec §3.26)."
|
|
101
|
+
},
|
|
102
|
+
"fetchError": {
|
|
103
|
+
"type": "string",
|
|
104
|
+
"description": "Why the latest quota check failed, while this older reading is shown."
|
|
93
105
|
}
|
|
94
106
|
}
|
|
95
107
|
},
|
|
@@ -105,7 +117,8 @@
|
|
|
105
117
|
"const": "unavailable"
|
|
106
118
|
},
|
|
107
119
|
"reason": {
|
|
108
|
-
"type": "string"
|
|
120
|
+
"type": "string",
|
|
121
|
+
"description": "not-enabled, no-session, unrecognized, no-source, api-account or fetch-failed."
|
|
109
122
|
},
|
|
110
123
|
"detail": {
|
|
111
124
|
"type": "string"
|
|
@@ -260,7 +273,7 @@
|
|
|
260
273
|
},
|
|
261
274
|
"command": {
|
|
262
275
|
"type": "string",
|
|
263
|
-
"description": "
|
|
276
|
+
"description": "`sideby update`, which updates the skill with sideby: run it after the user agrees; it shows the plan and exits 10, then --yes."
|
|
264
277
|
},
|
|
265
278
|
"message": {
|
|
266
279
|
"type": "string"
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
},
|
|
177
177
|
"command": {
|
|
178
178
|
"type": "string",
|
|
179
|
-
"description": "
|
|
179
|
+
"description": "`sideby update`, which updates the skill with sideby: run it after the user agrees; it shows the plan and exits 10, then --yes."
|
|
180
180
|
},
|
|
181
181
|
"message": {
|
|
182
182
|
"type": "string"
|
package/schemas/tune-change.json
CHANGED
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
},
|
|
174
174
|
"command": {
|
|
175
175
|
"type": "string",
|
|
176
|
-
"description": "
|
|
176
|
+
"description": "`sideby update`, which updates the skill with sideby: run it after the user agrees; it shows the plan and exits 10, then --yes."
|
|
177
177
|
},
|
|
178
178
|
"message": {
|
|
179
179
|
"type": "string"
|
package/schemas/tune.json
CHANGED
|
@@ -295,7 +295,7 @@
|
|
|
295
295
|
},
|
|
296
296
|
"command": {
|
|
297
297
|
"type": "string",
|
|
298
|
-
"description": "
|
|
298
|
+
"description": "`sideby update`, which updates the skill with sideby: run it after the user agrees; it shows the plan and exits 10, then --yes."
|
|
299
299
|
},
|
|
300
300
|
"message": {
|
|
301
301
|
"type": "string"
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "sideby/unpin.json",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"schemaVersion",
|
|
7
|
+
"ref",
|
|
8
|
+
"pinned",
|
|
9
|
+
"changed",
|
|
10
|
+
"message",
|
|
11
|
+
"display"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"schemaVersion": {
|
|
15
|
+
"type": "number",
|
|
16
|
+
"const": 1
|
|
17
|
+
},
|
|
18
|
+
"ref": {
|
|
19
|
+
"type": "string"
|
|
20
|
+
},
|
|
21
|
+
"pinned": {
|
|
22
|
+
"type": "boolean"
|
|
23
|
+
},
|
|
24
|
+
"changed": {
|
|
25
|
+
"type": "boolean"
|
|
26
|
+
},
|
|
27
|
+
"message": {
|
|
28
|
+
"type": "string"
|
|
29
|
+
},
|
|
30
|
+
"display": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"properties": {
|
|
33
|
+
"families": {
|
|
34
|
+
"type": "array",
|
|
35
|
+
"items": {
|
|
36
|
+
"type": "string"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"accounts": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"patternProperties": {
|
|
42
|
+
"^.*$": {
|
|
43
|
+
"type": "array",
|
|
44
|
+
"items": {
|
|
45
|
+
"type": "string"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"pinned": {
|
|
51
|
+
"type": "object",
|
|
52
|
+
"patternProperties": {
|
|
53
|
+
"^.*$": {
|
|
54
|
+
"type": "array",
|
|
55
|
+
"items": {
|
|
56
|
+
"type": "string"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"_notice": {
|
|
64
|
+
"type": "object",
|
|
65
|
+
"properties": {
|
|
66
|
+
"update": {
|
|
67
|
+
"type": "object",
|
|
68
|
+
"required": [
|
|
69
|
+
"current",
|
|
70
|
+
"latest",
|
|
71
|
+
"command",
|
|
72
|
+
"message"
|
|
73
|
+
],
|
|
74
|
+
"properties": {
|
|
75
|
+
"current": {
|
|
76
|
+
"type": "string"
|
|
77
|
+
},
|
|
78
|
+
"latest": {
|
|
79
|
+
"type": "string"
|
|
80
|
+
},
|
|
81
|
+
"command": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"description": "Run it after the user agrees: it shows the plan and exits 10; then --yes."
|
|
84
|
+
},
|
|
85
|
+
"message": {
|
|
86
|
+
"type": "string"
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"skill": {
|
|
91
|
+
"type": "object",
|
|
92
|
+
"required": [
|
|
93
|
+
"installed",
|
|
94
|
+
"current",
|
|
95
|
+
"command",
|
|
96
|
+
"message"
|
|
97
|
+
],
|
|
98
|
+
"properties": {
|
|
99
|
+
"installed": {
|
|
100
|
+
"anyOf": [
|
|
101
|
+
{
|
|
102
|
+
"type": "string"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"type": "null"
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"description": "The skill's version; null when it has none."
|
|
109
|
+
},
|
|
110
|
+
"current": {
|
|
111
|
+
"type": "string"
|
|
112
|
+
},
|
|
113
|
+
"command": {
|
|
114
|
+
"type": "string",
|
|
115
|
+
"description": "`sideby update`, which updates the skill with sideby: run it after the user agrees; it shows the plan and exits 10, then --yes."
|
|
116
|
+
},
|
|
117
|
+
"message": {
|
|
118
|
+
"type": "string"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"description": "Not the answer to the task: mention it briefly afterwards and offer to update."
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "sideby/update-auto.json",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"schemaVersion",
|
|
7
|
+
"auto",
|
|
8
|
+
"changed"
|
|
9
|
+
],
|
|
10
|
+
"properties": {
|
|
11
|
+
"schemaVersion": {
|
|
12
|
+
"type": "number",
|
|
13
|
+
"const": 1
|
|
14
|
+
},
|
|
15
|
+
"auto": {
|
|
16
|
+
"type": "boolean"
|
|
17
|
+
},
|
|
18
|
+
"changed": {
|
|
19
|
+
"type": "boolean"
|
|
20
|
+
},
|
|
21
|
+
"_notice": {
|
|
22
|
+
"type": "object",
|
|
23
|
+
"properties": {
|
|
24
|
+
"update": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"required": [
|
|
27
|
+
"current",
|
|
28
|
+
"latest",
|
|
29
|
+
"command",
|
|
30
|
+
"message"
|
|
31
|
+
],
|
|
32
|
+
"properties": {
|
|
33
|
+
"current": {
|
|
34
|
+
"type": "string"
|
|
35
|
+
},
|
|
36
|
+
"latest": {
|
|
37
|
+
"type": "string"
|
|
38
|
+
},
|
|
39
|
+
"command": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"description": "Run it after the user agrees: it shows the plan and exits 10; then --yes."
|
|
42
|
+
},
|
|
43
|
+
"message": {
|
|
44
|
+
"type": "string"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"skill": {
|
|
49
|
+
"type": "object",
|
|
50
|
+
"required": [
|
|
51
|
+
"installed",
|
|
52
|
+
"current",
|
|
53
|
+
"command",
|
|
54
|
+
"message"
|
|
55
|
+
],
|
|
56
|
+
"properties": {
|
|
57
|
+
"installed": {
|
|
58
|
+
"anyOf": [
|
|
59
|
+
{
|
|
60
|
+
"type": "string"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"type": "null"
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"description": "The skill's version; null when it has none."
|
|
67
|
+
},
|
|
68
|
+
"current": {
|
|
69
|
+
"type": "string"
|
|
70
|
+
},
|
|
71
|
+
"command": {
|
|
72
|
+
"type": "string",
|
|
73
|
+
"description": "`sideby update`, which updates the skill with sideby: run it after the user agrees; it shows the plan and exits 10, then --yes."
|
|
74
|
+
},
|
|
75
|
+
"message": {
|
|
76
|
+
"type": "string"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"description": "Not the answer to the task: mention it briefly afterwards and offer to update."
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
package/schemas/update.json
CHANGED
|
@@ -66,6 +66,10 @@
|
|
|
66
66
|
{
|
|
67
67
|
"type": "string",
|
|
68
68
|
"const": "source"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"type": "string",
|
|
72
|
+
"const": "local"
|
|
69
73
|
}
|
|
70
74
|
],
|
|
71
75
|
"description": "How this copy was installed."
|
|
@@ -77,6 +81,43 @@
|
|
|
77
81
|
"reason": {
|
|
78
82
|
"type": "string",
|
|
79
83
|
"description": "Why it cannot."
|
|
84
|
+
},
|
|
85
|
+
"reasonCode": {
|
|
86
|
+
"anyOf": [
|
|
87
|
+
{
|
|
88
|
+
"type": "string",
|
|
89
|
+
"const": "local-build"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"type": "string",
|
|
93
|
+
"const": "npx"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"type": "string",
|
|
97
|
+
"const": "volta"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"type": "string",
|
|
101
|
+
"const": "not-writable"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"type": "string",
|
|
105
|
+
"const": "project"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"type": "string",
|
|
109
|
+
"const": "source"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"type": "string",
|
|
113
|
+
"const": "skill-in-git"
|
|
114
|
+
}
|
|
115
|
+
],
|
|
116
|
+
"description": "Why, as a code a page can say in its own language."
|
|
117
|
+
},
|
|
118
|
+
"reasonAt": {
|
|
119
|
+
"type": "string",
|
|
120
|
+
"description": "The folders that are not writable (`not-writable`)."
|
|
80
121
|
}
|
|
81
122
|
}
|
|
82
123
|
},
|
|
@@ -146,6 +187,43 @@
|
|
|
146
187
|
},
|
|
147
188
|
"reason": {
|
|
148
189
|
"type": "string"
|
|
190
|
+
},
|
|
191
|
+
"reasonCode": {
|
|
192
|
+
"anyOf": [
|
|
193
|
+
{
|
|
194
|
+
"type": "string",
|
|
195
|
+
"const": "local-build"
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"type": "string",
|
|
199
|
+
"const": "npx"
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"type": "string",
|
|
203
|
+
"const": "volta"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"type": "string",
|
|
207
|
+
"const": "not-writable"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"type": "string",
|
|
211
|
+
"const": "project"
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"type": "string",
|
|
215
|
+
"const": "source"
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"type": "string",
|
|
219
|
+
"const": "skill-in-git"
|
|
220
|
+
}
|
|
221
|
+
],
|
|
222
|
+
"description": "Why, as a code a page can say in its own language."
|
|
223
|
+
},
|
|
224
|
+
"reasonAt": {
|
|
225
|
+
"type": "string",
|
|
226
|
+
"description": "The git repository that owns the skill (`skill-in-git`)."
|
|
149
227
|
}
|
|
150
228
|
},
|
|
151
229
|
"description": "The installed sideby skill, which the Update brings along; absent when none is installed."
|
|
@@ -210,7 +288,7 @@
|
|
|
210
288
|
},
|
|
211
289
|
"command": {
|
|
212
290
|
"type": "string",
|
|
213
|
-
"description": "
|
|
291
|
+
"description": "`sideby update`, which updates the skill with sideby: run it after the user agrees; it shows the plan and exits 10, then --yes."
|
|
214
292
|
},
|
|
215
293
|
"message": {
|
|
216
294
|
"type": "string"
|
package/skills/sideby/SKILL.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: sideby
|
|
3
3
|
description: Use when the user runs, or wants to run, several AI coding accounts (Claude Code, Codex, Grok Build, pi) side by side. Covers installing sideby and setting up a new account ("install sideby", "set up another Claude account", "add cc008", "配置一个 cc00x", "再加一个 Codex 账号"), explaining what accounts share and what stays separate ("what do my accounts share?", "这些账号共享了什么"), showing which account a session is ("show [cc001] in the status line", "加上账号标识"), seeing accounts, quota and usage, moving on when one hits its 5-hour or weekly limit, moving the current task to another account ("用 cc008 继续", "交回 cc008"), adding a short command (alias), and repairing drifted account directories (skills, hooks, rules or settings not shared, wrong symlinks, credential file permissions). Drives the `sideby` CLI with `--json`; the agent does every step except browser sign-in, filling in secrets and starting interactive sessions, which it hands to the user as one command (inside an Auto Handoff session, `sideby handoff ready --to` moves the task itself).
|
|
4
4
|
metadata:
|
|
5
|
-
version: "0.
|
|
5
|
+
version: "0.15.0"
|
|
6
6
|
requires:
|
|
7
7
|
bins: [sideby, node]
|
|
8
8
|
cliHelp: sideby --help
|
|
@@ -41,6 +41,10 @@ Account refs are `<family>:<name>`; a bare `<name>` works only when it is unique
|
|
|
41
41
|
| Show which account a session is (`[cc001]` in the status line or tab title) | `sideby list --json` for the labels | `references/badge.md` |
|
|
42
42
|
| Know what accounts share and what stays separate | `sideby families <family> --json` | `references/sharing.md` |
|
|
43
43
|
| See accounts, health, quota and usage | `sideby list --json`, `sideby doctor --json`, `sideby quota --json` | `references/diagnose.md` |
|
|
44
|
+
| Pin accounts or arrange their Display Order | `sideby order --json`, `sideby pin <ref> --json`, `sideby unpin <ref> --json` | `references/panel.md` |
|
|
45
|
+
| Turn quota checks on or off, or refresh fetched quota | `sideby quota check <family> on|off --json`, `sideby quota [family] --refresh --json` | `references/quota.md` |
|
|
46
|
+
| Set the model, effort or Remote Control | `sideby model <ref> --json`, `sideby remote-control --json` | `references/panel.md` |
|
|
47
|
+
| Turn Auto Update on or off | `sideby update --auto on|off --json` | `references/update.md` |
|
|
44
48
|
| Repair drift or permissions | `sideby doctor [ref] --json`, then `--fix` after they agree | `references/diagnose.md` |
|
|
45
49
|
| Keep working because an account hit its limit | `sideby next <family> --json` | `references/handoff.md` |
|
|
46
50
|
| Turn on Auto Handoff ("自动交接", "hand over when quota runs low"), see what it still needs, hand this session over now, or pick an account with room for a subtask | `sideby handoff status --json`, `sideby handoff enable --json` (exit 10 first), `sideby handoff ready`, `sideby next <family> --json` | `references/handoff.md` |
|
|
@@ -65,13 +69,13 @@ To open Claude Desktop or the Codex app as one account (macOS, subscription acco
|
|
|
65
69
|
|
|
66
70
|
Grok Bot is not a grok account's app: it signs in with a Cursor account, apart from Grok Build. For several Grok Bot windows at once, run `sideby desktop grok-bot:<name> --json` (a new name makes a new, signed-out window; `grok-bot` is its default one) and relay the notice: sign in inside the new window with the account meant for it, with the other Grok Bot windows closed. `sideby list --json` lists them under `appProfiles`. Removing one (`--remove --yes`) signs it out and deletes its data: do it only when the user asks, after they quit that window.
|
|
67
71
|
|
|
68
|
-
To find which Chrome browser user the user signed in to an account's website with, or to open claude.ai, chatgpt.com or grok.com there, run `sideby browser --json` and `sideby browser open <ref> --json`. Finding is off until the user agrees: run `sideby browser --enable` to show them what it reads (all on this computer), and add `--yes` only after they say yes. A match may be left over from before a sign-out; say so. Grok accounts need `--profile <name>`.
|
|
72
|
+
To find which Chrome browser user the user signed in to an account's website with, or to open claude.ai, chatgpt.com or grok.com there, run `sideby browser --json` and `sideby browser open <ref> --json`. Finding is off until the user agrees: run `sideby browser --enable` to show them what it reads (all on this computer), and add `--yes` only after they say yes. To stop reading Browser Sign-ins, use `sideby browser --disable --json`, show its preview, then add `--yes` after approval. A match may be left over from before a sign-out; say so. Grok accounts need `--profile <name>`.
|
|
69
73
|
|
|
70
74
|
For someone who would rather double-click than use a terminal, `sideby app install` adds a panel app (macOS `~/Applications/sideby.app`, Linux app menu) that runs `sideby ui --background`; `sideby ui --stop` stops it and `sideby app uninstall` removes the app. Ask before `app install`: it writes outside sideby's own directories.
|
|
71
75
|
|
|
72
76
|
## Updating sideby
|
|
73
77
|
|
|
74
|
-
To update sideby, run `sideby update --json` yourself: it shows `current`, `latest`, the `command` and whether sideby can run it (`canRun`; exit 10). Ask the user, then run `sideby update --yes --json`. When `canRun` is false (npx, a project dependency, a source checkout, a global folder they cannot write), hand them the `command` as one line instead. Updating restarts a background panel by itself and reinstalls an installed panel app (`refreshedApp`), so do not run `app install` again after an update; a `sideby ui` in a terminal and running sessions keep the old version until restarted. sideby checks the registry once a day on its own and turns that off with `NO_UPDATE_NOTIFIER=1` or config `"update": { "check": false }`; `"update": { "auto": true }` (off by default) installs new non-major versions by itself. Never turn Auto Update on without the user asking.
|
|
78
|
+
To update sideby, run `sideby update --json` yourself: it shows `current`, `latest`, the `command` and whether sideby can run it (`canRun`; exit 10). Ask the user, then run `sideby update --yes --json`. When `canRun` is false (npx, a project dependency, a source checkout, a global folder they cannot write), hand them the `command` as one line instead. Updating restarts a background panel by itself and reinstalls an installed panel app (`refreshedApp`), so do not run `app install` again after an update; a `sideby ui` in a terminal and running sessions keep the old version until restarted. sideby checks the registry once a day on its own and turns that off with `NO_UPDATE_NOTIFIER=1` or config `"update": { "check": false }`; `"update": { "auto": true }` (off by default) installs new non-major versions by itself. Use `sideby update --auto on|off --json` to save that switch without installing anything (`references/update.md`). Never turn Auto Update on without the user asking.
|
|
75
79
|
|
|
76
80
|
## Keeping this skill current
|
|
77
81
|
|