scriptit-cli 0.2.2__py3-none-any.whl
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.
- scriptit_cli/__init__.py +17 -0
- scriptit_cli/analytics.py +244 -0
- scriptit_cli/auth.py +553 -0
- scriptit_cli/client.py +42 -0
- scriptit_cli/commands.py +302 -0
- scriptit_cli/config.py +19 -0
- scriptit_cli/errors.py +21 -0
- scriptit_cli/main.py +184 -0
- scriptit_cli/output.py +79 -0
- scriptit_cli/remote.py +1306 -0
- scriptit_cli/remote_auth.py +464 -0
- scriptit_cli/update_check.py +104 -0
- scriptit_cli/util.py +84 -0
- scriptit_cli-0.2.2.dist-info/METADATA +599 -0
- scriptit_cli-0.2.2.dist-info/RECORD +18 -0
- scriptit_cli-0.2.2.dist-info/WHEEL +4 -0
- scriptit_cli-0.2.2.dist-info/entry_points.txt +2 -0
- scriptit_cli-0.2.2.dist-info/licenses/LICENSE +202 -0
|
@@ -0,0 +1,599 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: scriptit-cli
|
|
3
|
+
Version: 0.2.2
|
|
4
|
+
Summary: Run and manage your Script.it automations from the terminal, or from a coding agent
|
|
5
|
+
Project-URL: Homepage, https://script.it
|
|
6
|
+
Project-URL: Source, https://github.com/script-it/cli
|
|
7
|
+
Project-URL: Issues, https://github.com/script-it/cli/issues
|
|
8
|
+
Project-URL: Changelog, https://github.com/script-it/cli/releases
|
|
9
|
+
Author: Script.it
|
|
10
|
+
License:
|
|
11
|
+
Apache License
|
|
12
|
+
Version 2.0, January 2004
|
|
13
|
+
http://www.apache.org/licenses/
|
|
14
|
+
|
|
15
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
16
|
+
|
|
17
|
+
1. Definitions.
|
|
18
|
+
|
|
19
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
20
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
21
|
+
|
|
22
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
23
|
+
the copyright owner that is granting the License.
|
|
24
|
+
|
|
25
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
26
|
+
other entities that control, are controlled by, or are under common
|
|
27
|
+
control with that entity. For the purposes of this definition,
|
|
28
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
29
|
+
direction or management of such entity, whether by contract or
|
|
30
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
31
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
32
|
+
|
|
33
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
34
|
+
exercising permissions granted by this License.
|
|
35
|
+
|
|
36
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
37
|
+
including but not limited to software source code, documentation
|
|
38
|
+
source, and configuration files.
|
|
39
|
+
|
|
40
|
+
"Object" form shall mean any form resulting from mechanical
|
|
41
|
+
transformation or translation of a Source form, including but
|
|
42
|
+
not limited to compiled object code, generated documentation,
|
|
43
|
+
and conversions to other media types.
|
|
44
|
+
|
|
45
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
46
|
+
Object form, made available under the License, as indicated by a
|
|
47
|
+
copyright notice that is included in or attached to the work
|
|
48
|
+
(an example is provided in the Appendix below).
|
|
49
|
+
|
|
50
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
51
|
+
form, that is based on (or derived from) the Work and for which the
|
|
52
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
53
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
54
|
+
of this License, Derivative Works shall not include works that remain
|
|
55
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
56
|
+
the Work and Derivative Works thereof.
|
|
57
|
+
|
|
58
|
+
"Contribution" shall mean any work of authorship, including
|
|
59
|
+
the original version of the Work and any modifications or additions
|
|
60
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
61
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
62
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
63
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
64
|
+
means any form of electronic, verbal, or written communication sent
|
|
65
|
+
to the Licensor or its representatives, including but not limited to
|
|
66
|
+
communication on electronic mailing lists, source code control systems,
|
|
67
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
68
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
69
|
+
excluding communication that is conspicuously marked or otherwise
|
|
70
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
71
|
+
|
|
72
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
73
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
74
|
+
subsequently incorporated within the Work.
|
|
75
|
+
|
|
76
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
77
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
78
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
79
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
80
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
81
|
+
Work and such Derivative Works in Source or Object form.
|
|
82
|
+
|
|
83
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
84
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
85
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
86
|
+
(except as stated in this section) patent license to make, have made,
|
|
87
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
88
|
+
where such license applies only to those patent claims licensable
|
|
89
|
+
by such Contributor that are necessarily infringed by their
|
|
90
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
91
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
92
|
+
institute patent litigation against any entity (including a
|
|
93
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
94
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
95
|
+
or contributory patent infringement, then any patent licenses
|
|
96
|
+
granted to You under this License for that Work shall terminate
|
|
97
|
+
as of the date such litigation is filed.
|
|
98
|
+
|
|
99
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
100
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
101
|
+
modifications, and in Source or Object form, provided that You
|
|
102
|
+
meet the following conditions:
|
|
103
|
+
|
|
104
|
+
(a) You must give any other recipients of the Work or
|
|
105
|
+
Derivative Works a copy of this License; and
|
|
106
|
+
|
|
107
|
+
(b) You must cause any modified files to carry prominent notices
|
|
108
|
+
stating that You changed the files; and
|
|
109
|
+
|
|
110
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
111
|
+
that You distribute, all copyright, patent, trademark, and
|
|
112
|
+
attribution notices from the Source form of the Work,
|
|
113
|
+
excluding those notices that do not pertain to any part of
|
|
114
|
+
the Derivative Works; and
|
|
115
|
+
|
|
116
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
117
|
+
distribution, then any Derivative Works that You distribute must
|
|
118
|
+
include a readable copy of the attribution notices contained
|
|
119
|
+
within such NOTICE file, excluding those notices that do not
|
|
120
|
+
pertain to any part of the Derivative Works, in at least one
|
|
121
|
+
of the following places: within a NOTICE text file distributed
|
|
122
|
+
as part of the Derivative Works; within the Source form or
|
|
123
|
+
documentation, if provided along with the Derivative Works; or,
|
|
124
|
+
within a display generated by the Derivative Works, if and
|
|
125
|
+
wherever such third-party notices normally appear. The contents
|
|
126
|
+
of the NOTICE file are for informational purposes only and
|
|
127
|
+
do not modify the License. You may add Your own attribution
|
|
128
|
+
notices within Derivative Works that You distribute, alongside
|
|
129
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
130
|
+
that such additional attribution notices cannot be construed
|
|
131
|
+
as modifying the License.
|
|
132
|
+
|
|
133
|
+
You may add Your own copyright statement to Your modifications and
|
|
134
|
+
may provide additional or different license terms and conditions
|
|
135
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
136
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
137
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
138
|
+
the conditions stated in this License.
|
|
139
|
+
|
|
140
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
141
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
142
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
143
|
+
this License, without any additional terms or conditions.
|
|
144
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
145
|
+
the terms of any separate license agreement you may have executed
|
|
146
|
+
with Licensor regarding such Contributions.
|
|
147
|
+
|
|
148
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
149
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
150
|
+
except as required for reasonable and customary use in describing the
|
|
151
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
152
|
+
|
|
153
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
154
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
155
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
156
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
157
|
+
implied, including, without limitation, any warranties or conditions
|
|
158
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
159
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
160
|
+
appropriateness of using or redistributing the Work and assume any
|
|
161
|
+
risks associated with Your exercise of permissions under this License.
|
|
162
|
+
|
|
163
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
164
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
165
|
+
unless required by applicable law (such as deliberate and grossly
|
|
166
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
167
|
+
liable to You for damages, including any direct, indirect, special,
|
|
168
|
+
incidental, or consequential damages of any character arising as a
|
|
169
|
+
result of this License or out of the use or inability to use the
|
|
170
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
171
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
172
|
+
other commercial damages or losses), even if such Contributor
|
|
173
|
+
has been advised of the possibility of such damages.
|
|
174
|
+
|
|
175
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
176
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
177
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
178
|
+
or other liability obligations and/or rights consistent with this
|
|
179
|
+
License. However, in accepting such obligations, You may act only
|
|
180
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
181
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
182
|
+
defend, and hold each Contributor harmless for any liability
|
|
183
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
184
|
+
of your accepting any such warranty or additional liability.
|
|
185
|
+
|
|
186
|
+
END OF TERMS AND CONDITIONS
|
|
187
|
+
|
|
188
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
189
|
+
|
|
190
|
+
To apply the Apache License to your work, attach the following
|
|
191
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
192
|
+
replaced with your own identifying information. (Don't include
|
|
193
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
194
|
+
comment syntax for the file format. We also recommend that a
|
|
195
|
+
file or class name and description of purpose be included on the
|
|
196
|
+
same "printed page" as the copyright notice for easier
|
|
197
|
+
identification within third-party archives.
|
|
198
|
+
|
|
199
|
+
Copyright [yyyy] [name of copyright owner]
|
|
200
|
+
|
|
201
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
202
|
+
you may not use this file except in compliance with the License.
|
|
203
|
+
You may obtain a copy of the License at
|
|
204
|
+
|
|
205
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
206
|
+
|
|
207
|
+
Unless required by applicable law or agreed to in writing, software
|
|
208
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
209
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
210
|
+
See the License for the specific language governing permissions and
|
|
211
|
+
limitations under the License.
|
|
212
|
+
License-File: LICENSE
|
|
213
|
+
Keywords: agents,automation,cli,scriptit
|
|
214
|
+
Classifier: Development Status :: 4 - Beta
|
|
215
|
+
Classifier: Environment :: Console
|
|
216
|
+
Classifier: Intended Audience :: Developers
|
|
217
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
218
|
+
Classifier: Programming Language :: Python :: 3
|
|
219
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
220
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
221
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
222
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
223
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
224
|
+
Requires-Python: >=3.9
|
|
225
|
+
Requires-Dist: filelock>=3.12
|
|
226
|
+
Requires-Dist: fire>=0.5
|
|
227
|
+
Requires-Dist: packaging>=23.0
|
|
228
|
+
Requires-Dist: requests>=2.28
|
|
229
|
+
Provides-Extra: dev
|
|
230
|
+
Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
231
|
+
Requires-Dist: ruff>=0.6; extra == 'dev'
|
|
232
|
+
Description-Content-Type: text/markdown
|
|
233
|
+
|
|
234
|
+
# <img src="assets/logo.png" alt="" height="30" align="top"> Script.it
|
|
235
|
+
|
|
236
|
+
<!-- PyPI badges are held back until the package is published; shields.io
|
|
237
|
+
renders "package or version not found" for an unpublished name.
|
|
238
|
+
[](https://pypi.org/project/scriptit-cli/)
|
|
239
|
+
[](https://pypi.org/project/scriptit-cli/)
|
|
240
|
+
-->
|
|
241
|
+
[](https://github.com/script-it/cli/actions/workflows/ci.yml)
|
|
242
|
+
[](pyproject.toml)
|
|
243
|
+
[](LICENSE)
|
|
244
|
+
|
|
245
|
+
<img src="assets/squiggle.png" alt="" width="100%">
|
|
246
|
+
|
|
247
|
+
Your [Script.it](https://script.it) workspace, from the terminal — and from any
|
|
248
|
+
coding agent.
|
|
249
|
+
|
|
250
|
+
Script.it turns a knowledge-work task into a script you can read, edit and
|
|
251
|
+
depend on: describe what you want, connect the apps it needs, then run it on
|
|
252
|
+
demand, on a schedule, or from a webhook. Your scripts run in an isolated cloud
|
|
253
|
+
environment with your integrations already connected.
|
|
254
|
+
|
|
255
|
+
This CLI drives that environment from your machine.
|
|
256
|
+
|
|
257
|
+
## Using this with a coding agent?
|
|
258
|
+
|
|
259
|
+
Give the agent the bundled [Script.it skill](agent-skills/scriptit/SKILL.md)
|
|
260
|
+
first. It tells the agent how to authenticate, create a session, fetch its live
|
|
261
|
+
instructions, and use every client-side command without copying product rules
|
|
262
|
+
that can go stale.
|
|
263
|
+
|
|
264
|
+
Install the CLI and skill using the steps below, then tell the agent: **Use
|
|
265
|
+
Script.it.**
|
|
266
|
+
|
|
267
|
+
## Install
|
|
268
|
+
|
|
269
|
+
**Before you start.** Python 3.9 or newer, and a Script.it account — create one
|
|
270
|
+
at [script.it](https://script.it), or point the CLI at a self-hosted deployment
|
|
271
|
+
with `--api-url`.
|
|
272
|
+
|
|
273
|
+
**1. Install the CLI.** It goes in its own isolated environment, so its
|
|
274
|
+
dependencies never mix with a project's:
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
uv tool install git+https://github.com/script-it/cli.git
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
Installing from git while the package is pre-release; a `pip install
|
|
281
|
+
scriptit-cli` will replace this once it is published.
|
|
282
|
+
|
|
283
|
+
<details>
|
|
284
|
+
<summary>Other installers</summary>
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
# pipx — same isolation as uv tool
|
|
288
|
+
pipx install git+https://github.com/script-it/cli.git
|
|
289
|
+
|
|
290
|
+
# plain pip, into whatever environment is active
|
|
291
|
+
pip install git+https://github.com/script-it/cli.git
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
Prefer `uv tool` or `pipx`: they keep the CLI and its dependencies out of
|
|
295
|
+
whatever environment happens to be active.
|
|
296
|
+
|
|
297
|
+
No `uv`? `curl -LsSf https://astral.sh/uv/install.sh | sh`, or use `pipx`.
|
|
298
|
+
</details>
|
|
299
|
+
|
|
300
|
+
**2. Check it landed.**
|
|
301
|
+
|
|
302
|
+
```bash
|
|
303
|
+
scriptit version
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**3. Sign in.** This opens your browser on an approval page: check it shows the
|
|
307
|
+
same short code the CLI printed, approve, and the CLI finishes on its own. Your
|
|
308
|
+
password never reaches the CLI — it stores a refresh token, plus the
|
|
309
|
+
short-lived token it trades that for, at `~/.config/scriptit/credentials.json`
|
|
310
|
+
(mode 0600):
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
scriptit auth login
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
The browser never has to reach the machine the CLI runs on, so the same
|
|
317
|
+
command works over SSH, in a container or in a hosted agent's terminal: where
|
|
318
|
+
no window can open, open the printed link wherever you're signed in. The link
|
|
319
|
+
carries nothing anyone else can sign in with, so it is safe to pass through a
|
|
320
|
+
chat, and if the command is interrupted before you approve, running it again
|
|
321
|
+
resumes the same link. When a coding agent runs this, the CLI prints the URL
|
|
322
|
+
instead of opening a window — the agent's browser is not the one that would
|
|
323
|
+
have opened. `--no-browser` forces that anywhere. For an on-prem deployment,
|
|
324
|
+
add `--api-url https://<your-deployment>` — the CLI reads the auth mode from it
|
|
325
|
+
and switches to a device-code flow by itself.
|
|
326
|
+
|
|
327
|
+
**4. See what you have, then run one.** `skills list` is the index of your
|
|
328
|
+
scripts (alongside the platform's own skills); `start` takes a bare name from
|
|
329
|
+
it and resolves it across your workspaces:
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
scriptit skills list
|
|
333
|
+
scriptit start <name-from-that-list>
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
**5. Set up your coding agent.**
|
|
337
|
+
|
|
338
|
+
Install the entry-point skill once, and any agent that reads skills knows how
|
|
339
|
+
to drive your workspace.
|
|
340
|
+
|
|
341
|
+
In Claude Code, install it as a plugin — this repository is its marketplace:
|
|
342
|
+
|
|
343
|
+
```
|
|
344
|
+
/plugin marketplace add script-it/cli
|
|
345
|
+
/plugin install scriptit@script-it
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
`claude plugin update scriptit@script-it` brings it up to date, or turn on
|
|
349
|
+
auto-update for the `script-it` marketplace under `/plugin`.
|
|
350
|
+
|
|
351
|
+
Codex installs the same plugin from the same marketplace:
|
|
352
|
+
|
|
353
|
+
```bash
|
|
354
|
+
codex plugin marketplace add script-it/cli
|
|
355
|
+
codex plugin add scriptit@script-it
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
Any other host that reads skills from a folder takes the file directly:
|
|
359
|
+
|
|
360
|
+
```bash
|
|
361
|
+
mkdir -p ~/.claude/skills/scriptit
|
|
362
|
+
curl -sSL https://raw.githubusercontent.com/script-it/cli/main/agent-skills/scriptit/SKILL.md \
|
|
363
|
+
-o ~/.claude/skills/scriptit/SKILL.md
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
A host that reads only an `AGENTS.md` takes the file's contents pasted there.
|
|
367
|
+
[Use it from a coding agent](#use-it-from-a-coding-agent) explains what the
|
|
368
|
+
skill does and why it stays this small.
|
|
369
|
+
|
|
370
|
+
### Keeping it current, and removing it
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
uv tool upgrade scriptit-cli
|
|
374
|
+
uv tool uninstall scriptit-cli
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
Logging out forgets the stored credential without uninstalling anything:
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
scriptit auth logout
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
## Why you might want it
|
|
384
|
+
|
|
385
|
+
- **Work on your automations with a coding agent.** Point Claude Code, Codex or
|
|
386
|
+
Cursor at your Script.it workspace and let it read, write and run your
|
|
387
|
+
scripts. That is what this CLI was built for — see
|
|
388
|
+
[Use it from a coding agent](#use-it-from-a-coding-agent).
|
|
389
|
+
- **Stay in the terminal.** Run a script, tail its logs, check a trigger, move a
|
|
390
|
+
file, without switching to the browser.
|
|
391
|
+
- **Let an agent show you its work, not just describe it.**
|
|
392
|
+
`scriptit auth browser-url --next <path>` prints a one-time link that opens
|
|
393
|
+
straight to a script or run in the app, already signed in. An agent with a
|
|
394
|
+
browser you can see opens it there itself — so when it finishes something you
|
|
395
|
+
watch the block tree and its outputs come up instead of reading a paragraph
|
|
396
|
+
about them. The link lends this machine's login, lives 60 seconds and works
|
|
397
|
+
once; you get an email whenever one is used from somewhere new.
|
|
398
|
+
- **Script your scripts.** The commands this client answers speak `--json`, so
|
|
399
|
+
you can wire Script.it into whatever you already automate with.
|
|
400
|
+
|
|
401
|
+
## How it works
|
|
402
|
+
|
|
403
|
+
The CLI is a thin remote client. Commands you type run **in your Script.it
|
|
404
|
+
environment**, not on your machine:
|
|
405
|
+
|
|
406
|
+
```
|
|
407
|
+
scriptit (your machine)
|
|
408
|
+
│ Bearer <token> (scriptit auth login)
|
|
409
|
+
▼
|
|
410
|
+
Script.it ──► your isolated environment ──► your script, your integrations
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
Nothing automation-related runs locally. No scripts execute on your machine, and
|
|
414
|
+
your integration credentials are never copied to it. Everything you run lands in
|
|
415
|
+
a real session you can watch live in the Script.it app — the same view your
|
|
416
|
+
teammates see.
|
|
417
|
+
|
|
418
|
+
## Connect
|
|
419
|
+
|
|
420
|
+
[Install](#install) covers signing in. Beyond that, keep several accounts or
|
|
421
|
+
deployments side by side as named profiles:
|
|
422
|
+
|
|
423
|
+
```bash
|
|
424
|
+
scriptit auth login --api-url https://scriptit.internal.example --profile work
|
|
425
|
+
scriptit auth use work
|
|
426
|
+
scriptit auth status
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
## Use
|
|
430
|
+
|
|
431
|
+
```bash
|
|
432
|
+
scriptit start weekly-report # run a script
|
|
433
|
+
scriptit logs <run-id> # ...and read what it did
|
|
434
|
+
scriptit trigger list # what fires it, and when
|
|
435
|
+
scriptit integrations list # what it can reach
|
|
436
|
+
scriptit describe --concepts # the full platform reference
|
|
437
|
+
scriptit describe --system # agent-ready runtime context
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
Run any shell command in your environment:
|
|
441
|
+
|
|
442
|
+
```bash
|
|
443
|
+
scriptit exec -- ls /workspaces
|
|
444
|
+
scriptit exec --timeout 300 -- pytest -q
|
|
445
|
+
scriptit exec --cwd /workspaces/<workspace-id> -- ls
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
`--timeout` is enforced **where the command runs**, so it exits `124` there
|
|
449
|
+
rather than outliving a client that stopped waiting.
|
|
450
|
+
|
|
451
|
+
Move files both ways:
|
|
452
|
+
|
|
453
|
+
```bash
|
|
454
|
+
scriptit exec -- ls /workspaces/<workspace-id>
|
|
455
|
+
scriptit fs push ./report.csv /workspaces/<workspace-id>/assets/report.csv
|
|
456
|
+
scriptit fs pull /workspaces/<workspace-id>/logs/run.log .
|
|
457
|
+
scriptit fs read data_files/report/output.html
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
A relative remote path starts where `exec` runs, in the session's directory,
|
|
461
|
+
so a path that works in `exec` names the same file in `fs`.
|
|
462
|
+
|
|
463
|
+
### Sessions
|
|
464
|
+
|
|
465
|
+
Every command runs inside a **session** — the same kind of conversation the
|
|
466
|
+
in-app agent works in, and you can watch it live in the app. A session is
|
|
467
|
+
sticky: it persists across commands and across shells until you start another.
|
|
468
|
+
|
|
469
|
+
```bash
|
|
470
|
+
scriptit session current # which session am I on, and why
|
|
471
|
+
scriptit session new # start a fresh one
|
|
472
|
+
scriptit context # fetch this session's agent instructions
|
|
473
|
+
scriptit session use ses_abc123 # reattach to an earlier one
|
|
474
|
+
scriptit session list # recent sessions
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
The session has its own directory, and that directory is the working directory
|
|
478
|
+
for every command you run. Your workspaces are mounted inside it, so a script at
|
|
479
|
+
`/workspaces/<wid>/my-script` is also `workspaces/<wid>/my-script` from where
|
|
480
|
+
commands land. It is a mount, not a copy — anything you change is immediately
|
|
481
|
+
visible in the app and to every other session. `data_files/` is the session's
|
|
482
|
+
own scratch space.
|
|
483
|
+
|
|
484
|
+
To run one command in a different session without disturbing the sticky one:
|
|
485
|
+
|
|
486
|
+
```bash
|
|
487
|
+
SCRIPTIT_SESSION=ses_abc123 scriptit exec -- ls
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
That is also how an agent harness gives each task its own transcript.
|
|
491
|
+
|
|
492
|
+
### Machine-readable output
|
|
493
|
+
|
|
494
|
+
Add `--json` to any of `auth`, `context`, `fs`, `session`, `sandbox` or
|
|
495
|
+
`version`.
|
|
496
|
+
**stdout becomes exactly one JSON document, and everything else — progress,
|
|
497
|
+
prompts, warnings, errors — goes to stderr**, so you can pipe stdout straight
|
|
498
|
+
into a parser:
|
|
499
|
+
|
|
500
|
+
```bash
|
|
501
|
+
scriptit sandbox status --json | jq -r '.sandboxes[].state'
|
|
502
|
+
scriptit context --json | jq -r '.skills'
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
On failure the document is `{"error": "..."}` and the exit code is non-zero —
|
|
506
|
+
including when the argument parser is the thing that rejected the command, so
|
|
507
|
+
there is no case where stdout comes back empty.
|
|
508
|
+
|
|
509
|
+
`auth login --json` still opens a browser and prints its progress, but to
|
|
510
|
+
stderr; the document it returns is the resulting login. `fs read` is the one
|
|
511
|
+
exception: it writes the file's bytes unmodified, so `--json` is accepted and
|
|
512
|
+
ignored rather than promising a document it will not produce. `exec` likewise
|
|
513
|
+
streams the command's own output. Forwarded commands pass `--json` through to
|
|
514
|
+
Script.it, which decides what it means.
|
|
515
|
+
|
|
516
|
+
### Which commands are which
|
|
517
|
+
|
|
518
|
+
This client answers `auth`, `context`, `exec`, `fs`, `session`, `sandbox` and
|
|
519
|
+
`version` itself. **Everything else is forwarded** — `start`, `status`, `logs`,
|
|
520
|
+
`wait`, `validate`, `describe`, `trigger *`, `integrations *`, `skills *`, … —
|
|
521
|
+
and answered by Script.it.
|
|
522
|
+
|
|
523
|
+
That is deliberate: the platform stays the single source of behavior, so a
|
|
524
|
+
feature added there works through the client you already have. No upgrade
|
|
525
|
+
needed, and no command list here to fall out of date.
|
|
526
|
+
|
|
527
|
+
`scriptit --help` covers the local commands; `scriptit describe --concepts`
|
|
528
|
+
covers the structured platform reference, and `scriptit describe --system`
|
|
529
|
+
renders that runtime knowledge for agent context.
|
|
530
|
+
|
|
531
|
+
## Use it from a coding agent
|
|
532
|
+
|
|
533
|
+
One file — [`agent-skills/scriptit/`](agent-skills/scriptit/SKILL.md) — installed
|
|
534
|
+
into the agent host once, as the Claude Code or Codex plugin or as a plain
|
|
535
|
+
skill file;
|
|
536
|
+
[Set up your coding agent](#set-up-your-coding-agent) above has the commands.
|
|
537
|
+
|
|
538
|
+
The skill carries almost no platform knowledge on purpose. It creates a fresh
|
|
539
|
+
session, then runs `scriptit context` to fetch one complete live bundle of
|
|
540
|
+
runtime guidance, product behavior, external-agent workflow, authoritative app
|
|
541
|
+
links, connected integrations, and current skills. The workstation client only
|
|
542
|
+
transports and prints that bundle, so agent behavior is updated with the
|
|
543
|
+
platform instead of being copied into each CLI release.
|
|
544
|
+
|
|
545
|
+
## Good to know
|
|
546
|
+
|
|
547
|
+
- **Sessions run one command at a time.** A second command queues rather than
|
|
548
|
+
interleaving; the client waits for you.
|
|
549
|
+
- **Paused environments wake automatically.** Any command resumes yours and
|
|
550
|
+
waits until it is ready, so there is nothing to start by hand.
|
|
551
|
+
- **V2 output is read in full, in pages.** Commands stay readable in the app,
|
|
552
|
+
and their actual exit codes reach your terminal. The saved transcript preview
|
|
553
|
+
can be shorter than the output returned to the CLI. Older v1 environments use
|
|
554
|
+
a separate compatibility path that recovers output beyond their SSE text cap.
|
|
555
|
+
- **V2 event connections can reconnect.** The client resumes from its last
|
|
556
|
+
event cursor without submitting the command again. Missing output or an
|
|
557
|
+
unconfirmed result is reported as an error, never success.
|
|
558
|
+
- **No interactive shell.** Commands are dispatched fire-and-forget and their
|
|
559
|
+
lifecycle is observed through an event stream, with no channel for stdin — so
|
|
560
|
+
`scriptit exec -- vim` cannot work. Use one-shot commands, or the app.
|
|
561
|
+
- **Update notices, not auto-update.** The client checks at most once a day, in
|
|
562
|
+
the background, and prints one line to stderr when a newer release exists.
|
|
563
|
+
`SCRIPTIT_NO_UPDATE_CHECK=1` silences it.
|
|
564
|
+
- **Anonymous usage analytics, opt-out.** Command names and exit codes, never
|
|
565
|
+
their contents or arguments. `DO_NOT_TRACK=1` turns it off.
|
|
566
|
+
|
|
567
|
+
### Exit codes
|
|
568
|
+
|
|
569
|
+
| Code | Meaning |
|
|
570
|
+
|---|---|
|
|
571
|
+
| the command's own | forwarded verbatim, exactly as it exited |
|
|
572
|
+
| `2` | not connected — run `scriptit auth login` |
|
|
573
|
+
| `124` | `--timeout` expired; the command was stopped |
|
|
574
|
+
| `125` | it ran, but its status could not be recovered. **Not success.** |
|
|
575
|
+
| `130` | you interrupted the client; the command may still be running |
|
|
576
|
+
|
|
577
|
+
## Environment variables
|
|
578
|
+
|
|
579
|
+
| Variable | What it does |
|
|
580
|
+
|---|---|
|
|
581
|
+
| `SCRIPTIT_PROFILE` | use a named profile for one invocation |
|
|
582
|
+
| `SCRIPTIT_SESSION` | run in a named session for one invocation |
|
|
583
|
+
| `SCRIPTIT_CLIENT` | label the session with the agent driving it (`claude-code`, `codex`, …) |
|
|
584
|
+
| `XDG_CONFIG_HOME` | where credentials and state live (default `~/.config`) |
|
|
585
|
+
|
|
586
|
+
## Contributing
|
|
587
|
+
|
|
588
|
+
Issues and pull requests are welcome — see [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
589
|
+
for setup and the one architectural rule this repo keeps.
|
|
590
|
+
|
|
591
|
+
## Security
|
|
592
|
+
|
|
593
|
+
Found a vulnerability? Please report it privately through GitHub's
|
|
594
|
+
[**Report a vulnerability**](https://github.com/script-it/cli/security/advisories/new)
|
|
595
|
+
form rather than opening an issue — see [SECURITY.md](SECURITY.md).
|
|
596
|
+
|
|
597
|
+
## License
|
|
598
|
+
|
|
599
|
+
[Apache-2.0](LICENSE)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
scriptit_cli/__init__.py,sha256=sRvnTq8aeIGDtVjGYeICIBB-_gfcZmvun36u3hnAyrA,746
|
|
2
|
+
scriptit_cli/analytics.py,sha256=ZVGlOSlO6Q_PJKeO6s0FULmBVfccKSjmhGKmPVTMpLQ,7707
|
|
3
|
+
scriptit_cli/auth.py,sha256=RN-U2IdVblIovZuv2sxFegNmOMPcTPsN8Enkl8r1AOo,22547
|
|
4
|
+
scriptit_cli/client.py,sha256=qc7peY0LR31DJb_rQVAd3qhauWYGFMk9Gg6Ex7ZXvXM,1670
|
|
5
|
+
scriptit_cli/commands.py,sha256=8-rmzWukJqurcobK8bl1nldUyFiYsTdBnKvn2jWyqGI,11445
|
|
6
|
+
scriptit_cli/config.py,sha256=A6xrormZAI_7OxCbIzWac_LyWzFriSa0Pi1rVAtanYA,571
|
|
7
|
+
scriptit_cli/errors.py,sha256=20twQae6uNSNaJYCIz1lqVsRr_Nf_i4yfA2Jq1_5_cs,704
|
|
8
|
+
scriptit_cli/main.py,sha256=f8nPlLrfPKhvjaXGKQyhwjF4TYs4ORYF8gHvpWl0sZg,6713
|
|
9
|
+
scriptit_cli/output.py,sha256=a0GHIQuffu0XyFltkHjvzTJk5N2iH5_FwJlZs-W7lUw,2285
|
|
10
|
+
scriptit_cli/remote.py,sha256=_Npk3PFuU9mUroNVY7tKmc7foj88hJubqskN-9GSFsg,56406
|
|
11
|
+
scriptit_cli/remote_auth.py,sha256=G4Dl2LD9B-K92DJrIZGHAB3CuCd7hEwZ63OOaBAvGZY,18135
|
|
12
|
+
scriptit_cli/update_check.py,sha256=NuaV1q-tlz8ap0ajeFz1S0zm2H30d5ymvZDZLtU82MU,3653
|
|
13
|
+
scriptit_cli/util.py,sha256=KpDgkJhxQYie-cF-Zx7K5ApVZjnBIrtRbPQ5d0gv0M0,3412
|
|
14
|
+
scriptit_cli-0.2.2.dist-info/METADATA,sha256=QKZ4g3PbDmOORTes2OQMv-lr3RIDwMyzxBi7HUt-6gg,28718
|
|
15
|
+
scriptit_cli-0.2.2.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
16
|
+
scriptit_cli-0.2.2.dist-info/entry_points.txt,sha256=NAnUK5LzAyK_tBJ3hGNDt9eKLP9iDwvjYCKypRsRXHw,52
|
|
17
|
+
scriptit_cli-0.2.2.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
18
|
+
scriptit_cli-0.2.2.dist-info/RECORD,,
|