@kosuke-ai/kosuke 1.0.31 → 1.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.32
4
+
5
+ - `kosuke sensei cards set --sign-in` names the site, Chrome profile ID, Mac and wall URL of a sign-in card on the member's Mac, so its Approve allows exactly one tapped `kosuke mac browser login`. A card keyed `mac-sign-in:` without it is refused.
6
+ - A `messages` block row on a Sensei card can name its `connection` and `conversation`, so the member can open that conversation on the FYI messages card and read its unread messages there.
7
+ - Cron Runs on Claude, Codex and Meta models run as root in their own sandbox, as a coding session does, so builds that write tool settings under the home (such as Wrangler's) and commits in their clones work. Grok and Gemini Cron Runs keep their own user.
8
+
3
9
  ## 1.0.31
4
10
 
5
11
  - `kosuke sensei tickets merge` and `kosuke sensei messages move` are no longer offered to session sandbox or Cron agents: only you and your Sensei run them.
@@ -6,7 +6,7 @@ export const operation = {
6
6
  "browser",
7
7
  "login"
8
8
  ],
9
- "summary": "Get a site signed in in this Sensei Thread's browser from the member's everyday Chrome: pass the browser call's profile and deviceId, and the site as a bare hostname (twitter.com is x.com; Google's sites are refused). --reuse picks up the sign-in that profile in their Chrome holds by itself, with no tap: once per site and profile in a Turn, with the profile's exact ID. It never opens Chrome or waits for anyone, and answers opened false and signedIn false with chrome none (their Chrome holds no sign-in for the site, so nothing changed), same (the one this thread's browser already holds) or different (taken into this thread's browser, taken true). Then, unless it answered none or same, open the site with browser and check the account. On SIGN_IN_NEEDS_TAP or UPDATE_REQUIRED, put the sign-in card. A --reuse spends no tap, so it gives no card back. Every tapped mode (`sign-in`, `take`, `waitNew`) needs the member's tap on the sign-in card in this thread; `--forget` and `--reuse` need none. A sign-in takes the sign-in that profile in their Chrome holds when it differs from this thread's, without opening anything, and answers taken true, opened false and signedIn false, since the site has not confirmed it; or else it opens --url, or the site's page, in their Chrome and waits up to 8 minutes for the member to sign in. On LinkedIn and X it answers signedIn true and opened true. On any other site a change of the site's cookies is taken and answered taken true and signedIn false, since a change is not a sign-in, and an end with no change answers taken false; a desktop app too old to watch the site opens it and answers at once, with no taken. Every answer with taken true carries waitNewLeft: while it is above 0 and the site is still signed out, --wait-new (with the same --url), in the same Turn and with no new tap, waits for a newer sign-in, never taking the one taken already, and opens the site only when this Turn has not; once the tap's time has run out it fails with SIGN_IN_WINDOW_ENDED, and no card comes back. After the member's I'm signed in tap, --take takes that site's cookies, never Google's, and answers taken. --forget removes a sign-in this Turn took, a --reuse's included, for an account other than the one expected, and needs no tap. Each tap allows one call: a call without one, or a --wait-new that no take armed, fails with SIGN_IN_NEEDS_TAP. Then open the site with browser and check the account before account-specific work. On DEVICE_OFFLINE, TIMEOUT, SIGN_IN_TIMEOUT and KEYCHAIN_UNAVAILABLE Kosuke gives the member's card back by itself. Fails with SIGN_IN_TIMEOUT when Kosuke saw no new sign-in to LinkedIn or X within 8 minutes, PROFILE_DISCONNECTED for a profile turned off in Settings → Devices, KEYCHAIN_UNAVAILABLE when macOS did not let Kosuke read Chrome's sign-ins, STALE_TURN when the Turn stopped, and UPDATE_REQUIRED on a desktop app too old for it. Only Sensei calls it.",
9
+ "summary": "Get a site signed in in this Sensei Thread's browser from the member's everyday Chrome: pass the browser call's profile and deviceId, and the site as a bare hostname (twitter.com is x.com; Google's sites are refused). --reuse picks up the sign-in that profile in their Chrome holds by itself, with no tap: once per site and profile in a Turn, with the profile's exact ID. It never opens Chrome or waits for anyone, and answers opened false and signedIn false with chrome none (their Chrome holds no sign-in for the site, so nothing changed), same (the one this thread's browser already holds) or different (taken into this thread's browser, taken true). Then, unless it answered none or same, open the site with browser and check the account. On SIGN_IN_NEEDS_TAP or UPDATE_REQUIRED, put the sign-in card: `kosuke sensei cards set` with --sign-in naming this site, profile and deviceId. A --reuse spends no tap, so it gives no card back. Every tapped mode (`sign-in`, `take`, `waitNew`) needs the member's tap on the sign-in card in this thread; `--forget` and `--reuse` need none. A sign-in takes the sign-in that profile in their Chrome holds when it differs from this thread's, without opening anything, and answers taken true, opened false and signedIn false, since the site has not confirmed it; or else it opens --url, or the site's page, in their Chrome and waits up to 8 minutes for the member to sign in. On LinkedIn and X it answers signedIn true and opened true. On any other site a change of the site's cookies is taken and answered taken true and signedIn false, since a change is not a sign-in, and an end with no change answers taken false; a desktop app too old to watch the site opens it and answers at once, with no taken. Every answer with taken true carries waitNewLeft: while it is above 0 and the site is still signed out, --wait-new (with the same --url), in the same Turn and with no new tap, waits for a newer sign-in, never taking the one taken already, and opens the site only when this Turn has not; once the tap's time has run out it fails with SIGN_IN_WINDOW_ENDED, and no card comes back. After the member's I'm signed in tap, --take takes that site's cookies, never Google's, and answers taken. --forget removes a sign-in this Turn took, a --reuse's included, for an account other than the one expected, and needs no tap. Each tap allows one call: a call without one, or a --wait-new that no take armed, fails with SIGN_IN_NEEDS_TAP. Then open the site with browser and check the account before account-specific work. On DEVICE_OFFLINE, TIMEOUT, SIGN_IN_TIMEOUT and KEYCHAIN_UNAVAILABLE Kosuke gives the member's card back by itself. Fails with SIGN_IN_TIMEOUT when Kosuke saw no new sign-in to LinkedIn or X within 8 minutes, PROFILE_DISCONNECTED for a profile turned off in Settings → Devices, KEYCHAIN_UNAVAILABLE when macOS did not let Kosuke read Chrome's sign-ins, STALE_TURN when the Turn stopped, and UPDATE_REQUIRED on a desktop app too old for it. Only Sensei calls it.",
10
10
  "pathParams": [],
11
11
  "query": [],
12
12
  "body": {
@@ -138,6 +138,13 @@ export const operation = {
138
138
  "kind": "json",
139
139
  "required": false
140
140
  },
141
+ {
142
+ "name": "signIn",
143
+ "flag": "sign-in",
144
+ "kind": "json",
145
+ "required": false,
146
+ "description": "A sign-in card on the member's Mac: the site, the Chrome profile ID, the Mac and, on the Sign in card of a site other than LinkedIn and X, the wall's url. Its Approve allows one tapped `kosuke mac browser login` for exactly these. Key it mac-sign-in:<site>:<profile> (the profile ID lowercase, spaces as hyphens: Profile 6 is profile-6) for Sign in, with :done for I'm signed in and :account for Continue as, both of which run --take. Only a card keyed mac-sign-in: takes it, and such a card needs it. A Sign in card for LinkedIn or X marks that connection signed out."
147
+ },
141
148
  {
142
149
  "name": "covers",
143
150
  "flag": "covers",
package/openapi.json CHANGED
@@ -1561,7 +1561,7 @@
1561
1561
  "/api/devices/mac/browser-sign-in": {
1562
1562
  "post": {
1563
1563
  "operationId": "macBrowserLogin",
1564
- "summary": "Get a site signed in in this Sensei Thread's browser from the member's everyday Chrome: pass the browser call's profile and deviceId, and the site as a bare hostname (twitter.com is x.com; Google's sites are refused). --reuse picks up the sign-in that profile in their Chrome holds by itself, with no tap: once per site and profile in a Turn, with the profile's exact ID. It never opens Chrome or waits for anyone, and answers opened false and signedIn false with chrome none (their Chrome holds no sign-in for the site, so nothing changed), same (the one this thread's browser already holds) or different (taken into this thread's browser, taken true). Then, unless it answered none or same, open the site with browser and check the account. On SIGN_IN_NEEDS_TAP or UPDATE_REQUIRED, put the sign-in card. A --reuse spends no tap, so it gives no card back. Every tapped mode (`sign-in`, `take`, `waitNew`) needs the member's tap on the sign-in card in this thread; `--forget` and `--reuse` need none. A sign-in takes the sign-in that profile in their Chrome holds when it differs from this thread's, without opening anything, and answers taken true, opened false and signedIn false, since the site has not confirmed it; or else it opens --url, or the site's page, in their Chrome and waits up to 8 minutes for the member to sign in. On LinkedIn and X it answers signedIn true and opened true. On any other site a change of the site's cookies is taken and answered taken true and signedIn false, since a change is not a sign-in, and an end with no change answers taken false; a desktop app too old to watch the site opens it and answers at once, with no taken. Every answer with taken true carries waitNewLeft: while it is above 0 and the site is still signed out, --wait-new (with the same --url), in the same Turn and with no new tap, waits for a newer sign-in, never taking the one taken already, and opens the site only when this Turn has not; once the tap's time has run out it fails with SIGN_IN_WINDOW_ENDED, and no card comes back. After the member's I'm signed in tap, --take takes that site's cookies, never Google's, and answers taken. --forget removes a sign-in this Turn took, a --reuse's included, for an account other than the one expected, and needs no tap. Each tap allows one call: a call without one, or a --wait-new that no take armed, fails with SIGN_IN_NEEDS_TAP. Then open the site with browser and check the account before account-specific work. On DEVICE_OFFLINE, TIMEOUT, SIGN_IN_TIMEOUT and KEYCHAIN_UNAVAILABLE Kosuke gives the member's card back by itself. Fails with SIGN_IN_TIMEOUT when Kosuke saw no new sign-in to LinkedIn or X within 8 minutes, PROFILE_DISCONNECTED for a profile turned off in Settings → Devices, KEYCHAIN_UNAVAILABLE when macOS did not let Kosuke read Chrome's sign-ins, STALE_TURN when the Turn stopped, and UPDATE_REQUIRED on a desktop app too old for it. Only Sensei calls it.",
1564
+ "summary": "Get a site signed in in this Sensei Thread's browser from the member's everyday Chrome: pass the browser call's profile and deviceId, and the site as a bare hostname (twitter.com is x.com; Google's sites are refused). --reuse picks up the sign-in that profile in their Chrome holds by itself, with no tap: once per site and profile in a Turn, with the profile's exact ID. It never opens Chrome or waits for anyone, and answers opened false and signedIn false with chrome none (their Chrome holds no sign-in for the site, so nothing changed), same (the one this thread's browser already holds) or different (taken into this thread's browser, taken true). Then, unless it answered none or same, open the site with browser and check the account. On SIGN_IN_NEEDS_TAP or UPDATE_REQUIRED, put the sign-in card: `kosuke sensei cards set` with --sign-in naming this site, profile and deviceId. A --reuse spends no tap, so it gives no card back. Every tapped mode (`sign-in`, `take`, `waitNew`) needs the member's tap on the sign-in card in this thread; `--forget` and `--reuse` need none. A sign-in takes the sign-in that profile in their Chrome holds when it differs from this thread's, without opening anything, and answers taken true, opened false and signedIn false, since the site has not confirmed it; or else it opens --url, or the site's page, in their Chrome and waits up to 8 minutes for the member to sign in. On LinkedIn and X it answers signedIn true and opened true. On any other site a change of the site's cookies is taken and answered taken true and signedIn false, since a change is not a sign-in, and an end with no change answers taken false; a desktop app too old to watch the site opens it and answers at once, with no taken. Every answer with taken true carries waitNewLeft: while it is above 0 and the site is still signed out, --wait-new (with the same --url), in the same Turn and with no new tap, waits for a newer sign-in, never taking the one taken already, and opens the site only when this Turn has not; once the tap's time has run out it fails with SIGN_IN_WINDOW_ENDED, and no card comes back. After the member's I'm signed in tap, --take takes that site's cookies, never Google's, and answers taken. --forget removes a sign-in this Turn took, a --reuse's included, for an account other than the one expected, and needs no tap. Each tap allows one call: a call without one, or a --wait-new that no take armed, fails with SIGN_IN_NEEDS_TAP. Then open the site with browser and check the account before account-specific work. On DEVICE_OFFLINE, TIMEOUT, SIGN_IN_TIMEOUT and KEYCHAIN_UNAVAILABLE Kosuke gives the member's card back by itself. Fails with SIGN_IN_TIMEOUT when Kosuke saw no new sign-in to LinkedIn or X within 8 minutes, PROFILE_DISCONNECTED for a profile turned off in Settings → Devices, KEYCHAIN_UNAVAILABLE when macOS did not let Kosuke read Chrome's sign-ins, STALE_TURN when the Turn stopped, and UPDATE_REQUIRED on a desktop app too old for it. Only Sensei calls it.",
1565
1565
  "tags": ["mac"],
1566
1566
  "x-kosuke-command": ["mac", "browser", "login"],
1567
1567
  "x-kosuke-answer-timeout-ms": 590000,
@@ -21104,6 +21104,16 @@
21104
21104
  "link": {
21105
21105
  "type": "string",
21106
21106
  "maxLength": 2000
21107
+ },
21108
+ "connection": {
21109
+ "type": "string",
21110
+ "format": "uuid",
21111
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
21112
+ },
21113
+ "conversation": {
21114
+ "type": "string",
21115
+ "minLength": 1,
21116
+ "maxLength": 512
21107
21117
  }
21108
21118
  },
21109
21119
  "required": ["network", "sender", "subject", "count", "at"]
@@ -21909,6 +21919,38 @@
21909
21919
  }
21910
21920
  ]
21911
21921
  },
21922
+ "signIn": {
21923
+ "description": "A sign-in card on the member's Mac: the site, the Chrome profile ID, the Mac and, on the Sign in card of a site other than LinkedIn and X, the wall's url. Its Approve allows one tapped `kosuke mac browser login` for exactly these. Key it mac-sign-in:<site>:<profile> (the profile ID lowercase, spaces as hyphens: Profile 6 is profile-6) for Sign in, with :done for I'm signed in and :account for Continue as, both of which run --take. Only a card keyed mac-sign-in: takes it, and such a card needs it. A Sign in card for LinkedIn or X marks that connection signed out.",
21924
+ "type": "object",
21925
+ "properties": {
21926
+ "site": {
21927
+ "type": "string",
21928
+ "pattern": "^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$",
21929
+ "description": "The site, as a bare hostname such as linkedin.com. twitter.com is x.com."
21930
+ },
21931
+ "profile": {
21932
+ "type": "string",
21933
+ "minLength": 1,
21934
+ "maxLength": 255,
21935
+ "pattern": "^[^`\\u0000-\\u001f\\u007f]+$",
21936
+ "description": "The Chrome profile directory ID from `kosuke mac browser profiles list`, such as \"Profile 6\", exactly as the browser call names it."
21937
+ },
21938
+ "deviceId": {
21939
+ "type": "string",
21940
+ "format": "uuid",
21941
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
21942
+ "description": "The Mac, by the ID `kosuke mac browser profiles list` returns with the profile."
21943
+ },
21944
+ "url": {
21945
+ "description": "Only on the Sign in card of a site other than LinkedIn and X: the https page on that site that showed the sign-in wall, which the call opens in the member’s Chrome.",
21946
+ "type": "string",
21947
+ "maxLength": 2048,
21948
+ "format": "uri"
21949
+ }
21950
+ },
21951
+ "required": ["site", "profile", "deviceId"],
21952
+ "additionalProperties": false
21953
+ },
21912
21954
  "covers": {
21913
21955
  "description": "The ids of the incoming_message events of this thread that this card answers: a reply covers the message it answers, a task or calendar card the message in its evidence, an FYI the event of every row. An FYI update keeps unread commitments and the events in its current evidence, discarding processed history; name at most 50 events per write. The open FYI keeps a reference to every message it has covered, which its Mark read marks, and its card read gives their count and the newest.",
21914
21956
  "minItems": 1,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kosuke-ai/kosuke",
3
- "version": "1.0.31",
3
+ "version": "1.0.32",
4
4
  "description": "Kosuke platform CLI. The client customers install to drive app.kosuke.ai from their own machine.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -40,10 +40,12 @@
40
40
  "vitest": "^4.1.12"
41
41
  },
42
42
  "kosukeRelease": {
43
- "sourceCommit": "bd9029c68466df2c6c91c2a72e081cbb42d58ad8",
44
- "sourceIdentity": "d07d5e2696d17ece82fe762e770cbde753caf3454e506d1b53cf82c37571ab16",
43
+ "sourceCommit": "aa8175d2ca41ef9a22b6aeae6b97daf4d8501a1b",
44
+ "sourceIdentity": "37922cc0775af3b10d63236b4faa175b09da2e67301e46b3cb832be8b919e776",
45
45
  "fragments": [
46
- "sensei-card-commands-sensei-only.json"
46
+ "mac-sign-in-card-fdhupk.json",
47
+ "fyi-digest-row-conversation-r7k2pd.json",
48
+ "cron-runs-as-root-m55m3m.json"
47
49
  ]
48
50
  }
49
51
  }