@deepdockai/cli 1.0.12 → 1.0.13

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,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.13
4
+
5
+ - A device carries `lastKnownAt`: the time of its last report while it is not connected, `null` while it is connected. Every system of a device carries `lockedActions`: the actions the device reports locked because its database account lacks a right they need, under the spec set it runs now, or `null` when there is no verdict or the verdict is for an older spec set. Both are in the device list and, for `lockedActions`, in `GET /v1/devices/{deviceId}/systems`. The agent skill's TypeScript client types them, and its concepts reference explains them.
6
+
3
7
  ## 1.0.12
4
8
 
5
9
  - The agent skill describes `rate_limited` for action calls: 600 calls and 120 writes per minute per API key, answered with `Retry-After: 60` and `retryAfterSeconds: 60`. It named only the pairing limit before.
package/dist/deepdock.js CHANGED
@@ -11428,7 +11428,7 @@ import { spawn } from "node:child_process";
11428
11428
  import { homedir, hostname } from "node:os";
11429
11429
 
11430
11430
  // src/version.ts
11431
- var VERSION = "1.0.12";
11431
+ var VERSION = "1.0.13";
11432
11432
 
11433
11433
  // src/runtime.ts
11434
11434
  var DEFAULT_BASE_URL = "https://api.deepdock.ai";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deepdockai/cli",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
4
4
  "description": "Deepdock partner CLI: pair devices, see systems and actions, create the API key your code runs them with.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -84,7 +84,7 @@ curl -X POST "$BASE/v1/devices" \
84
84
  ```
85
85
 
86
86
  `label` is optional, 1 to 100 characters. The device must be online. Answer: `201` with the device
87
- (`id`, `label`, `hostname`, `os`, `clientVersion`, `status`, `lastSeenAt`, `claimedAt`, `outdated`, `systems`,
87
+ (`id`, `label`, `hostname`, `os`, `clientVersion`, `status`, `lastSeenAt`, `lastKnownAt`, `claimedAt`, `outdated`, `systems`,
88
88
  and `updateAvailable` when it runs an older build); `hostname`, `os` and `clientVersion` are `null`
89
89
  until the device has reported them. Keep `id`: it is the `deviceId` of every later call.
90
90
  `GET /v1/devices` lists your devices a page at a time (`{ items, nextCursor }`; pass `nextCursor` back as `cursor` until it is `null`, `limit` 1 to 500, default 100), and `GET /v1/devices/{deviceId}` reads one; each device has the same shape. `GET /v1/incidents` pages the same way.
@@ -70,6 +70,8 @@ export type Device = {
70
70
  clientVersion: string | null
71
71
  status: 'connected' | 'offline' | 'inactive'
72
72
  lastSeenAt: string | null
73
+ /** While the device is not connected: when it last reported. `null` while connected. */
74
+ lastKnownAt: string | null
73
75
  claimedAt: string | null
74
76
  /** True when an action assigned to you needs a newer client: that action answers device_outdated. */
75
77
  outdated: boolean
@@ -81,6 +83,7 @@ export type Device = {
81
83
  access: SystemAccess
82
84
  /** Set when `access` is the last known value (the device could not read it): when it last did. */
83
85
  accessLastCheckedAt: string | null
86
+ lockedActions: string[] | null
84
87
  reportedAt: string
85
88
  writes: SystemWrites
86
89
  }[]
@@ -100,6 +103,8 @@ export type DeviceSystem = {
100
103
  access: SystemAccess
101
104
  /** Set when `access` is the last known value (the device could not read it): when it last did. */
102
105
  accessLastCheckedAt: string | null
106
+ /** Actions the device reports locked because its database account lacks a right they need; `null` when there is no verdict for the spec set it runs now. */
107
+ lockedActions: string[] | null
103
108
  actions: ActionState[]
104
109
  }
105
110
 
@@ -24,7 +24,7 @@ Details: [auth-and-keys.md](auth-and-keys.md).
24
24
  The Deepdock client installed on the customer's Windows PC next to their system. It connects
25
25
  outwards to Deepdock; nothing in the customer's network is opened to the internet. A device is
26
26
  identified by a UUID (`id`), carries a `label`, `hostname`, `os`, `clientVersion`, `status`
27
- (`connected`, `offline` or `inactive`), `lastSeenAt`, `claimedAt` (may be `null`), `outdated` (an
27
+ (`connected`, `offline` or `inactive`), `lastSeenAt`, `lastKnownAt`, `claimedAt` (may be `null`), `outdated` (an
28
28
  assigned action needs a newer client: it answers `device_outdated`) and the `systems` it reported (each with a `writes` state; reads always work). `verified`: writes run. `unknown`: no version was reported, and writes go through. `partial`: some writes run and some are refused. `unverified`: a write answers `system_version_unverified`; with `reason: unverified_version` it works once Deepdock has verified that version, with `reason: unparseable` retrying does not help and you contact Deepdock.
29
29
 
30
30
  - **Pair**: claim a device for your organisation with the 6-character code it shows while unpaired.
@@ -48,12 +48,14 @@ has a display `label` (may be `null`), a `version` the device reported (may be a
48
48
  | device `status` | `connected` | the device is online and can run actions | normal |
49
49
  | device `status` | `offline` | the device is not connected right now (PC off, no network) | calls answer `device_offline`; retry later, show "offline" |
50
50
  | device `status` | `inactive` | not connected for 7 days; still paired | as offline; check with the site whether the PC still exists |
51
+ | device `lastKnownAt` | ISO time or `null` | the time of the device's last report while it is not connected. `null` while it is connected | show the last known state with this time; it may be out of date |
51
52
  | system `status` | `running` | the customer's program is running on the device | normal |
52
53
  | system `status` | `stopped` | the program is installed but not running | calls answer `system_unavailable`; the site starts the program |
53
54
  | system `status` | `missing` | the program was not found where the device expects it | calls answer `system_unavailable`; contact the site and Deepdock |
54
55
  | system `status` | `unknown` | the device could not tell whether the program runs (its probe failed or is unavailable on that PC) | do not read it as stopped; the device decides when a call arrives |
55
56
  | system `access` | `ok`, `outdated`, `missing`, `not_set_up`, or `null` | the database access the device last reported (`null`: none known yet) | `outdated` refuses the actions that need the missing right with `access_outdated`, `missing` refuses every action with `access_missing`; the customer repeats "Erneut einrichten" in the Deepdock client, the incident closes by itself once `access` is `ok`, nothing to resume |
56
57
  | system `accessLastCheckedAt` | ISO time or `null` | set when `access` is the last known value because the device could not read it (its database stopped or unreachable): when it last read it. `null` when the latest report read it | show the access as last known, with this time; nothing to do until the device reads it again |
58
+ | system `lockedActions` | list of action names or `null` | the actions the device reports locked because its database account lacks a right they need, under the spec set it runs now. `null`: no verdict yet, or the verdict is for an older spec set | do not offer a locked action as available; it answers `access_outdated` until the customer repeats "Erneut einrichten" |
57
59
  | action state | `active` | the action can be called | normal |
58
60
  | action state | `paused` | the action is paused with a `reason` and `pausedAt` | calls answer `action_paused`; show the feature as paused, poll `GET .../systems` at a low rate |
59
61
  | pause `reason` | `structure_changed` | the system changed in a way the action depends on (for example a vendor update); Deepdock reviews and resumes | wait; nothing to do on your side |