@pedrohnas/opencode-telegram 1.2.1 → 1.3.1

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 (39) hide show
  1. package/.claude/skills/playwright-cli/data/page-2026-02-09T02-40-45-070Z.png +0 -0
  2. package/.claude/skills/playwright-cli/data/page-2026-02-09T02-41-15-698Z.yml +168 -0
  3. package/.claude/skills/playwright-cli/data/page-2026-02-09T02-41-25-514Z.yml +219 -0
  4. package/.claude/skills/playwright-cli/data/page-2026-02-09T02-41-40-888Z.yml +221 -0
  5. package/.claude/skills/playwright-cli/data/page-2026-02-09T02-41-46-079Z.yml +230 -0
  6. package/.claude/skills/playwright-cli/data/page-2026-02-09T02-41-53-985Z.yml +235 -0
  7. package/.claude/skills/playwright-cli/data/page-2026-02-09T02-42-03-227Z.yml +235 -0
  8. package/.claude/skills/playwright-cli/data/page-2026-02-09T02-42-08-587Z.yml +248 -0
  9. package/.claude/skills/playwright-cli/data/page-2026-02-09T02-42-16-524Z.yml +234 -0
  10. package/.claude/skills/playwright-cli/data/page-2026-02-09T02-42-26-086Z.yml +196 -0
  11. package/docs/AUDIT.md +193 -0
  12. package/docs/PROGRESS.md +191 -0
  13. package/docs/plans/phase-5.md +410 -0
  14. package/docs/plans/phase-6.5.md +426 -0
  15. package/docs/plans/phase-6.md +349 -0
  16. package/e2e/helpers.ts +34 -0
  17. package/e2e/phase-5.test.ts +295 -0
  18. package/e2e/phase-6.5.test.ts +239 -0
  19. package/e2e/phase-6.test.ts +302 -0
  20. package/package.json +5 -2
  21. package/src/api-server.test.ts +309 -0
  22. package/src/api-server.ts +201 -0
  23. package/src/bot.test.ts +354 -0
  24. package/src/bot.ts +200 -2
  25. package/src/config.test.ts +16 -0
  26. package/src/config.ts +4 -0
  27. package/src/event-bus.test.ts +337 -1
  28. package/src/event-bus.ts +83 -3
  29. package/src/handlers/agents.test.ts +122 -0
  30. package/src/handlers/agents.ts +93 -0
  31. package/src/handlers/media.test.ts +264 -0
  32. package/src/handlers/media.ts +168 -0
  33. package/src/handlers/models.test.ts +319 -0
  34. package/src/handlers/models.ts +191 -0
  35. package/src/index.ts +15 -0
  36. package/src/send/draft-stream.test.ts +76 -0
  37. package/src/send/draft-stream.ts +13 -1
  38. package/src/session-manager.test.ts +46 -0
  39. package/src/session-manager.ts +10 -1
@@ -0,0 +1,168 @@
1
+ - generic [ref=e3]:
2
+ - region "Site notifications" [ref=e4]:
3
+ - generic [ref=e8]:
4
+ - generic [ref=e9]: ⚠️
5
+ - alert [ref=e11]:
6
+ - text: "Security Update: Classic tokens have been revoked. Granular tokens are now limited to 90 days and require 2FA by default. Update your CI/CD workflows to avoid disruption."
7
+ - link "Learn more about npm authentication changes" [ref=e12] [cursor=pointer]:
8
+ - /url: https://gh.io/all-npm-classic-tokens-revoked
9
+ - text: Learn more
10
+ - text: .
11
+ - button "Close notification" [ref=e13] [cursor=pointer]: ×
12
+ - generic [ref=e14]:
13
+ - banner [ref=e15]:
14
+ - generic [ref=e16]:
15
+ - generic [ref=e17]:
16
+ - text: "skip to:"
17
+ - link "skip to content" [ref=e18] [cursor=pointer]:
18
+ - /url: "#main"
19
+ - text: content
20
+ - link "skip to package search" [ref=e19] [cursor=pointer]:
21
+ - /url: "#search"
22
+ - text: package search
23
+ - generic [ref=e20]:
24
+ - generic [ref=e21]: ❤
25
+ - navigation "Product Navigation" [ref=e22]:
26
+ - list [ref=e23]:
27
+ - listitem [ref=e24]:
28
+ - link "Pro" [ref=e25] [cursor=pointer]:
29
+ - /url: /products/pro
30
+ - listitem [ref=e26]:
31
+ - link "Teams" [ref=e27] [cursor=pointer]:
32
+ - /url: /products/teams
33
+ - listitem [ref=e28]:
34
+ - link "Pricing" [ref=e29] [cursor=pointer]:
35
+ - /url: /products
36
+ - listitem [ref=e30]:
37
+ - link "Documentation" [ref=e31] [cursor=pointer]:
38
+ - /url: https://docs.npmjs.com
39
+ - generic [ref=e33]:
40
+ - generic [ref=e34]: npm
41
+ - link "Npm" [ref=e36] [cursor=pointer]:
42
+ - /url: /
43
+ - img [ref=e37]
44
+ - generic [ref=e40]:
45
+ - generic [ref=e42]:
46
+ - img [ref=e44]
47
+ - combobox "Search packages" [ref=e50]
48
+ - button "Search" [ref=e52]
49
+ - navigation [ref=e54]:
50
+ - button "Profile menu" [ref=e55]:
51
+ - generic [ref=e56]: Menu
52
+ - img [ref=e57]
53
+ - img [ref=e59]
54
+ - main [ref=e62]:
55
+ - generic [ref=e63]:
56
+ - complementary [ref=e64]:
57
+ - heading "Sidebar" [level=2] [ref=e65]
58
+ - generic [ref=e66]:
59
+ - navigation "Settings navigation" [ref=e67]:
60
+ - list [ref=e68]:
61
+ - listitem [ref=e69]:
62
+ - link "Profile" [ref=e70] [cursor=pointer]:
63
+ - /url: /~pedrohnas
64
+ - img [ref=e71]
65
+ - text: Profile
66
+ - listitem [ref=e73]:
67
+ - link "Packages" [ref=e74] [cursor=pointer]:
68
+ - /url: /settings/pedrohnas/packages
69
+ - img [ref=e75]
70
+ - text: Packages
71
+ - listitem [ref=e77]:
72
+ - link "Account" [ref=e78] [cursor=pointer]:
73
+ - /url: /settings/pedrohnas/profile
74
+ - img [ref=e79]
75
+ - text: Account
76
+ - listitem [ref=e81]:
77
+ - link "Billing Info" [ref=e82] [cursor=pointer]:
78
+ - /url: /settings/pedrohnas/billing
79
+ - img [ref=e83]
80
+ - text: Billing Info
81
+ - listitem [ref=e85]:
82
+ - link "Access Tokens" [ref=e86] [cursor=pointer]:
83
+ - /url: /settings/pedrohnas/tokens
84
+ - img [ref=e87]
85
+ - text: Access Tokens
86
+ - generic [ref=e89]:
87
+ - heading "Organizations" [level=3] [ref=e90]
88
+ - link "Create New Organization" [ref=e91] [cursor=pointer]:
89
+ - /url: /org/create
90
+ - text: +
91
+ - generic [ref=e92]: Create New Organization
92
+ - paragraph [ref=e93]: None
93
+ - generic [ref=e97]:
94
+ - generic [ref=e98]:
95
+ - generic [ref=e99]:
96
+ - heading "Access Tokens" [level=1] [ref=e100]
97
+ - link "Generate New Token" [ref=e102] [cursor=pointer]:
98
+ - /url: /settings/pedrohnas/tokens/granular-access-tokens/new
99
+ - button "Delete Selected Tokens" [ref=e104]
100
+ - table [ref=e106]:
101
+ - rowgroup [ref=e107]:
102
+ - row "Select all Name Bypass 2FA Created Last used Expires Delete" [ref=e108]:
103
+ - columnheader "Select all" [ref=e109]:
104
+ - checkbox "Select all" [checked] [ref=e110]
105
+ - columnheader "Name" [ref=e111]
106
+ - columnheader "Bypass 2FA" [ref=e112]
107
+ - columnheader "Created" [ref=e113]
108
+ - columnheader "Last used" [ref=e114]
109
+ - columnheader "Expires" [ref=e115]
110
+ - columnheader "Delete" [ref=e116]:
111
+ - generic [ref=e117]: Delete
112
+ - rowgroup
113
+ - generic [ref=e120]: Rows 1 to 0 of 0
114
+ - paragraph [ref=e121]:
115
+ - link "📋 Read the Documentation" [ref=e122] [cursor=pointer]:
116
+ - /url: https://docs.npmjs.com/about-authentication-tokens
117
+ - contentinfo [ref=e123]:
118
+ - heading "Footer" [level=2] [ref=e124]
119
+ - generic [ref=e125]:
120
+ - generic [ref=e126]:
121
+ - link "Visit npm GitHub page" [ref=e128] [cursor=pointer]:
122
+ - /url: https://github.com/npm
123
+ - img [ref=e129]
124
+ - link "GitHub" [ref=e133] [cursor=pointer]:
125
+ - /url: https://github.com
126
+ - img [ref=e134]
127
+ - generic [ref=e136]:
128
+ - heading "Support" [level=3] [ref=e137]
129
+ - list "Support" [ref=e138]:
130
+ - listitem [ref=e139]:
131
+ - link "Help" [ref=e140] [cursor=pointer]:
132
+ - /url: https://docs.npmjs.com
133
+ - listitem [ref=e141]:
134
+ - link "Advisories" [ref=e142] [cursor=pointer]:
135
+ - /url: https://github.com/advisories
136
+ - listitem [ref=e143]:
137
+ - link "Status" [ref=e144] [cursor=pointer]:
138
+ - /url: http://status.npmjs.org/
139
+ - listitem [ref=e145]:
140
+ - link "Contact npm" [ref=e146] [cursor=pointer]:
141
+ - /url: /support
142
+ - generic [ref=e147]:
143
+ - heading "Company" [level=3] [ref=e148]
144
+ - list "Company" [ref=e149]:
145
+ - listitem [ref=e150]:
146
+ - link "About" [ref=e151] [cursor=pointer]:
147
+ - /url: /about
148
+ - listitem [ref=e152]:
149
+ - link "Blog" [ref=e153] [cursor=pointer]:
150
+ - /url: https://github.blog/tag/npm/
151
+ - listitem [ref=e154]:
152
+ - link "Press" [ref=e155] [cursor=pointer]:
153
+ - /url: /press
154
+ - generic [ref=e156]:
155
+ - heading "Terms & Policies" [level=3] [ref=e157]
156
+ - list "Terms & Policies" [ref=e158]:
157
+ - listitem [ref=e159]:
158
+ - link "Policies" [ref=e160] [cursor=pointer]:
159
+ - /url: /policies/
160
+ - listitem [ref=e161]:
161
+ - link "Terms of Use" [ref=e162] [cursor=pointer]:
162
+ - /url: /policies/terms
163
+ - listitem [ref=e163]:
164
+ - link "Code of Conduct" [ref=e164] [cursor=pointer]:
165
+ - /url: /policies/conduct
166
+ - listitem [ref=e165]:
167
+ - link "Privacy" [ref=e166] [cursor=pointer]:
168
+ - /url: /policies/privacy
@@ -0,0 +1,219 @@
1
+ - generic [active] [ref=e1]:
2
+ - generic [ref=e3]:
3
+ - region "Site notifications" [ref=e4]:
4
+ - generic [ref=e8]:
5
+ - generic [ref=e9]: ⚠️
6
+ - alert [ref=e11]:
7
+ - text: "Security Update: Classic tokens have been revoked. Granular tokens are now limited to 90 days and require 2FA by default. Update your CI/CD workflows to avoid disruption."
8
+ - link "Learn more about npm authentication changes" [ref=e12] [cursor=pointer]:
9
+ - /url: https://gh.io/all-npm-classic-tokens-revoked
10
+ - text: Learn more
11
+ - text: .
12
+ - button "Close notification" [ref=e13] [cursor=pointer]: ×
13
+ - generic [ref=e14]:
14
+ - banner [ref=e15]:
15
+ - generic [ref=e16]:
16
+ - generic [ref=e17]:
17
+ - text: "skip to:"
18
+ - link "skip to content" [ref=e18] [cursor=pointer]:
19
+ - /url: "#main"
20
+ - text: content
21
+ - link "skip to package search" [ref=e19] [cursor=pointer]:
22
+ - /url: "#search"
23
+ - text: package search
24
+ - generic [ref=e20]:
25
+ - generic [ref=e21]: ❤
26
+ - navigation "Product Navigation" [ref=e22]:
27
+ - list [ref=e23]:
28
+ - listitem [ref=e24]:
29
+ - link "Pro" [ref=e25] [cursor=pointer]:
30
+ - /url: /products/pro
31
+ - listitem [ref=e26]:
32
+ - link "Teams" [ref=e27] [cursor=pointer]:
33
+ - /url: /products/teams
34
+ - listitem [ref=e28]:
35
+ - link "Pricing" [ref=e29] [cursor=pointer]:
36
+ - /url: /products
37
+ - listitem [ref=e30]:
38
+ - link "Documentation" [ref=e31] [cursor=pointer]:
39
+ - /url: https://docs.npmjs.com
40
+ - generic [ref=e33]:
41
+ - generic [ref=e34]: npm
42
+ - link "Npm" [ref=e36] [cursor=pointer]:
43
+ - /url: /
44
+ - img [ref=e37]
45
+ - generic [ref=e40]:
46
+ - generic [ref=e42]:
47
+ - img [ref=e44]
48
+ - combobox "Search packages" [ref=e50]
49
+ - button "Search" [ref=e52]
50
+ - navigation [ref=e54]:
51
+ - button "Profile menu" [ref=e55]:
52
+ - generic [ref=e56]: Menu
53
+ - img [ref=e57]
54
+ - img [ref=e59]
55
+ - main [ref=e62]:
56
+ - generic [ref=e63]:
57
+ - complementary [ref=e64]:
58
+ - heading "Sidebar" [level=2] [ref=e65]
59
+ - generic [ref=e66]:
60
+ - navigation "Settings navigation" [ref=e67]:
61
+ - list [ref=e68]:
62
+ - listitem [ref=e69]:
63
+ - link "Profile" [ref=e70] [cursor=pointer]:
64
+ - /url: /~pedrohnas
65
+ - img [ref=e71]
66
+ - text: Profile
67
+ - listitem [ref=e73]:
68
+ - link "Packages" [ref=e74] [cursor=pointer]:
69
+ - /url: /settings/pedrohnas/packages
70
+ - img [ref=e75]
71
+ - text: Packages
72
+ - listitem [ref=e77]:
73
+ - link "Account" [ref=e78] [cursor=pointer]:
74
+ - /url: /settings/pedrohnas/profile
75
+ - img [ref=e79]
76
+ - text: Account
77
+ - listitem [ref=e81]:
78
+ - link "Billing Info" [ref=e82] [cursor=pointer]:
79
+ - /url: /settings/pedrohnas/billing
80
+ - img [ref=e83]
81
+ - text: Billing Info
82
+ - listitem [ref=e85]:
83
+ - link "Access Tokens" [ref=e86] [cursor=pointer]:
84
+ - /url: /settings/pedrohnas/tokens
85
+ - img [ref=e87]
86
+ - text: Access Tokens
87
+ - generic [ref=e89]:
88
+ - heading "Organizations" [level=3] [ref=e90]
89
+ - link "Create New Organization" [ref=e91] [cursor=pointer]:
90
+ - /url: /org/create
91
+ - text: +
92
+ - generic [ref=e92]: Create New Organization
93
+ - paragraph [ref=e93]: None
94
+ - generic [ref=e169]:
95
+ - generic [ref=e170]:
96
+ - generic [ref=e171]:
97
+ - heading "New Granular Access Token" [level=1] [ref=e172]
98
+ - link "View token documentation" [ref=e173] [cursor=pointer]:
99
+ - /url: https://docs.npmjs.com/creating-and-viewing-access-tokens#creating-granular-access-tokens-on-the-website
100
+ - paragraph [ref=e176]:
101
+ - link "Granular access tokens" [ref=e177] [cursor=pointer]:
102
+ - /url: https://docs.npmjs.com/about-access-tokens#about-granular-access-tokens
103
+ - text: provide the most control by allowing you to configure fine-grained, tightly scoped permissions for your packages and organizations.
104
+ - generic [ref=e178]:
105
+ - generic [ref=e179]:
106
+ - heading "General" [level=2] [ref=e180]
107
+ - generic [ref=e182]:
108
+ - generic [ref=e183]: Token name *
109
+ - caption [ref=e184]: Provide a unique name.
110
+ - textbox "Token name" [ref=e186]
111
+ - generic [ref=e187]:
112
+ - generic [ref=e189]: Description (optional)
113
+ - caption [ref=e190]: What is this token for?
114
+ - textbox "Description (optional)" [ref=e192]
115
+ - generic [ref=e195]:
116
+ - checkbox "Bypass two-factor authentication (2FA) for this token" [ref=e196]
117
+ - generic [ref=e197]: Bypass two-factor authentication (2FA)
118
+ - group "Allowed IP ranges (optional) Must be valid CIDR notation." [ref=e198]:
119
+ - generic [ref=e199]:
120
+ - generic [ref=e200]: Allowed IP ranges (optional)
121
+ - caption [ref=e201]:
122
+ - text: Must be valid
123
+ - link "CIDR notation" [ref=e202] [cursor=pointer]:
124
+ - /url: https://docs.npmjs.com/creating-and-viewing-access-tokens/#cidr-restricted-token-errors
125
+ - text: .
126
+ - generic [ref=e204]:
127
+ - text: Input Range 1
128
+ - textbox "Input Range 1" [ref=e205]
129
+ - button "Add IP Range" [ref=e206]
130
+ - generic [ref=e207]:
131
+ - heading "Packages and scopes" [level=2] [ref=e208]
132
+ - generic [ref=e210]:
133
+ - paragraph [ref=e211]: Permissions
134
+ - group [ref=e212]:
135
+ - generic "Packages and scopes Permissions" [ref=e213] [cursor=pointer]:
136
+ - text: No access
137
+ - img [ref=e215]
138
+ - paragraph
139
+ - generic [ref=e218]:
140
+ - heading "Organizations" [level=2] [ref=e219]
141
+ - generic [ref=e221]:
142
+ - paragraph [ref=e222]: Permissions
143
+ - group [ref=e223]:
144
+ - generic "Organizations Permissions" [ref=e224] [cursor=pointer]:
145
+ - text: No access
146
+ - img [ref=e226]
147
+ - paragraph
148
+ - generic [ref=e229]:
149
+ - heading "Expiration" [level=2] [ref=e230]
150
+ - generic [ref=e232]:
151
+ - generic [ref=e233]: Expiration Date
152
+ - group [ref=e236]:
153
+ - generic "Expiration Date" [ref=e237] [cursor=pointer]:
154
+ - text: 30 days
155
+ - img [ref=e239]
156
+ - generic [ref=e242]:
157
+ - heading "Summary" [level=2] [ref=e243]
158
+ - generic [ref=e245]:
159
+ - paragraph [ref=e246]: "This token will:"
160
+ - list [ref=e247]:
161
+ - listitem [ref=e248]: Provide no access to packages and scopes
162
+ - listitem [ref=e249]: Provide no access to organizations
163
+ - listitem [ref=e250]: Expires on Tuesday, March 10, 2026
164
+ - generic [ref=e252]:
165
+ - button "Generate token" [ref=e253]
166
+ - button "Cancel" [ref=e254]
167
+ - contentinfo [ref=e123]:
168
+ - heading "Footer" [level=2] [ref=e124]
169
+ - generic [ref=e125]:
170
+ - generic [ref=e126]:
171
+ - link "Visit npm GitHub page" [ref=e128] [cursor=pointer]:
172
+ - /url: https://github.com/npm
173
+ - img [ref=e129]
174
+ - link "GitHub" [ref=e133] [cursor=pointer]:
175
+ - /url: https://github.com
176
+ - img [ref=e134]
177
+ - generic [ref=e136]:
178
+ - heading "Support" [level=3] [ref=e137]
179
+ - list "Support" [ref=e138]:
180
+ - listitem [ref=e139]:
181
+ - link "Help" [ref=e140] [cursor=pointer]:
182
+ - /url: https://docs.npmjs.com
183
+ - listitem [ref=e141]:
184
+ - link "Advisories" [ref=e142] [cursor=pointer]:
185
+ - /url: https://github.com/advisories
186
+ - listitem [ref=e143]:
187
+ - link "Status" [ref=e144] [cursor=pointer]:
188
+ - /url: http://status.npmjs.org/
189
+ - listitem [ref=e145]:
190
+ - link "Contact npm" [ref=e146] [cursor=pointer]:
191
+ - /url: /support
192
+ - generic [ref=e147]:
193
+ - heading "Company" [level=3] [ref=e148]
194
+ - list "Company" [ref=e149]:
195
+ - listitem [ref=e150]:
196
+ - link "About" [ref=e151] [cursor=pointer]:
197
+ - /url: /about
198
+ - listitem [ref=e152]:
199
+ - link "Blog" [ref=e153] [cursor=pointer]:
200
+ - /url: https://github.blog/tag/npm/
201
+ - listitem [ref=e154]:
202
+ - link "Press" [ref=e155] [cursor=pointer]:
203
+ - /url: /press
204
+ - generic [ref=e156]:
205
+ - heading "Terms & Policies" [level=3] [ref=e157]
206
+ - list "Terms & Policies" [ref=e158]:
207
+ - listitem [ref=e159]:
208
+ - link "Policies" [ref=e160] [cursor=pointer]:
209
+ - /url: /policies/
210
+ - listitem [ref=e161]:
211
+ - link "Terms of Use" [ref=e162] [cursor=pointer]:
212
+ - /url: /policies/terms
213
+ - listitem [ref=e163]:
214
+ - link "Code of Conduct" [ref=e164] [cursor=pointer]:
215
+ - /url: /policies/conduct
216
+ - listitem [ref=e165]:
217
+ - link "Privacy" [ref=e166] [cursor=pointer]:
218
+ - /url: /policies/privacy
219
+ - generic [ref=e168]: New Granular Access Token
@@ -0,0 +1,221 @@
1
+ - generic [ref=e1]:
2
+ - generic [ref=e3]:
3
+ - region "Site notifications" [ref=e4]:
4
+ - generic [ref=e8]:
5
+ - generic [ref=e9]: ⚠️
6
+ - alert [ref=e11]:
7
+ - text: "Security Update: Classic tokens have been revoked. Granular tokens are now limited to 90 days and require 2FA by default. Update your CI/CD workflows to avoid disruption."
8
+ - link "Learn more about npm authentication changes" [ref=e12] [cursor=pointer]:
9
+ - /url: https://gh.io/all-npm-classic-tokens-revoked
10
+ - text: Learn more
11
+ - text: .
12
+ - button "Close notification" [ref=e13] [cursor=pointer]: ×
13
+ - generic [ref=e14]:
14
+ - banner [ref=e15]:
15
+ - generic [ref=e16]:
16
+ - generic [ref=e17]:
17
+ - text: "skip to:"
18
+ - link "skip to content" [ref=e18] [cursor=pointer]:
19
+ - /url: "#main"
20
+ - text: content
21
+ - link "skip to package search" [ref=e19] [cursor=pointer]:
22
+ - /url: "#search"
23
+ - text: package search
24
+ - generic [ref=e20]:
25
+ - generic [ref=e21]: ❤
26
+ - navigation "Product Navigation" [ref=e22]:
27
+ - list [ref=e23]:
28
+ - listitem [ref=e24]:
29
+ - link "Pro" [ref=e25] [cursor=pointer]:
30
+ - /url: /products/pro
31
+ - listitem [ref=e26]:
32
+ - link "Teams" [ref=e27] [cursor=pointer]:
33
+ - /url: /products/teams
34
+ - listitem [ref=e28]:
35
+ - link "Pricing" [ref=e29] [cursor=pointer]:
36
+ - /url: /products
37
+ - listitem [ref=e30]:
38
+ - link "Documentation" [ref=e31] [cursor=pointer]:
39
+ - /url: https://docs.npmjs.com
40
+ - generic [ref=e33]:
41
+ - generic [ref=e34]: npm
42
+ - link "Npm" [ref=e36] [cursor=pointer]:
43
+ - /url: /
44
+ - img [ref=e37]
45
+ - generic [ref=e40]:
46
+ - generic [ref=e42]:
47
+ - img [ref=e44]
48
+ - combobox "Search packages" [ref=e50]
49
+ - button "Search" [ref=e52]
50
+ - navigation [ref=e54]:
51
+ - button "Profile menu" [ref=e55]:
52
+ - generic [ref=e56]: Menu
53
+ - img [ref=e57]
54
+ - img [ref=e59]
55
+ - main [ref=e62]:
56
+ - generic [ref=e63]:
57
+ - complementary [ref=e64]:
58
+ - heading "Sidebar" [level=2] [ref=e65]
59
+ - generic [ref=e66]:
60
+ - navigation "Settings navigation" [ref=e67]:
61
+ - list [ref=e68]:
62
+ - listitem [ref=e69]:
63
+ - link "Profile" [ref=e70] [cursor=pointer]:
64
+ - /url: /~pedrohnas
65
+ - img [ref=e71]
66
+ - text: Profile
67
+ - listitem [ref=e73]:
68
+ - link "Packages" [ref=e74] [cursor=pointer]:
69
+ - /url: /settings/pedrohnas/packages
70
+ - img [ref=e75]
71
+ - text: Packages
72
+ - listitem [ref=e77]:
73
+ - link "Account" [ref=e78] [cursor=pointer]:
74
+ - /url: /settings/pedrohnas/profile
75
+ - img [ref=e79]
76
+ - text: Account
77
+ - listitem [ref=e81]:
78
+ - link "Billing Info" [ref=e82] [cursor=pointer]:
79
+ - /url: /settings/pedrohnas/billing
80
+ - img [ref=e83]
81
+ - text: Billing Info
82
+ - listitem [ref=e85]:
83
+ - link "Access Tokens" [ref=e86] [cursor=pointer]:
84
+ - /url: /settings/pedrohnas/tokens
85
+ - img [ref=e87]
86
+ - text: Access Tokens
87
+ - generic [ref=e89]:
88
+ - heading "Organizations" [level=3] [ref=e90]
89
+ - link "Create New Organization" [ref=e91] [cursor=pointer]:
90
+ - /url: /org/create
91
+ - text: +
92
+ - generic [ref=e92]: Create New Organization
93
+ - paragraph [ref=e93]: None
94
+ - generic [ref=e169]:
95
+ - generic [ref=e170]:
96
+ - generic [ref=e171]:
97
+ - heading "New Granular Access Token" [level=1] [ref=e172]
98
+ - link "View token documentation" [ref=e173] [cursor=pointer]:
99
+ - /url: https://docs.npmjs.com/creating-and-viewing-access-tokens#creating-granular-access-tokens-on-the-website
100
+ - paragraph [ref=e176]:
101
+ - link "Granular access tokens" [ref=e177] [cursor=pointer]:
102
+ - /url: https://docs.npmjs.com/about-access-tokens#about-granular-access-tokens
103
+ - text: provide the most control by allowing you to configure fine-grained, tightly scoped permissions for your packages and organizations.
104
+ - generic [ref=e178]:
105
+ - generic [ref=e179]:
106
+ - heading "General" [level=2] [ref=e180]
107
+ - generic [ref=e182]:
108
+ - generic [ref=e183]: Token name *
109
+ - caption [ref=e184]: Provide a unique name.
110
+ - textbox "Token name" [ref=e186]: opencode-telegram-publish
111
+ - generic [ref=e187]:
112
+ - generic [ref=e189]: Description (optional)
113
+ - caption [ref=e190]: What is this token for?
114
+ - textbox "Description (optional)" [ref=e192]
115
+ - generic [ref=e193]:
116
+ - generic [ref=e195]:
117
+ - checkbox "Bypass two-factor authentication (2FA) for this token" [checked] [active] [ref=e196]
118
+ - generic [ref=e197]: Bypass two-factor authentication (2FA)
119
+ - paragraph [ref=e256]: There are security risks with this option. For automation or CI/CD uses, please use Trusted Publishing instead.
120
+ - group "Allowed IP ranges (optional) Must be valid CIDR notation." [ref=e198]:
121
+ - generic [ref=e199]:
122
+ - generic [ref=e200]: Allowed IP ranges (optional)
123
+ - caption [ref=e201]:
124
+ - text: Must be valid
125
+ - link "CIDR notation" [ref=e202] [cursor=pointer]:
126
+ - /url: https://docs.npmjs.com/creating-and-viewing-access-tokens/#cidr-restricted-token-errors
127
+ - text: .
128
+ - generic [ref=e204]:
129
+ - text: Input Range 1
130
+ - textbox "Input Range 1" [ref=e205]
131
+ - button "Add IP Range" [ref=e206]
132
+ - generic [ref=e207]:
133
+ - heading "Packages and scopes" [level=2] [ref=e208]
134
+ - generic [ref=e210]:
135
+ - paragraph [ref=e211]: Permissions
136
+ - group [ref=e212]:
137
+ - generic "Packages and scopes Permissions" [ref=e213] [cursor=pointer]:
138
+ - text: No access
139
+ - img [ref=e215]
140
+ - paragraph
141
+ - generic [ref=e218]:
142
+ - heading "Organizations" [level=2] [ref=e219]
143
+ - generic [ref=e221]:
144
+ - paragraph [ref=e222]: Permissions
145
+ - group [ref=e223]:
146
+ - generic "Organizations Permissions" [ref=e224] [cursor=pointer]:
147
+ - text: No access
148
+ - img [ref=e226]
149
+ - paragraph
150
+ - generic [ref=e229]:
151
+ - heading "Expiration" [level=2] [ref=e230]
152
+ - generic [ref=e232]:
153
+ - generic [ref=e233]: Expiration Date
154
+ - group [ref=e236]:
155
+ - generic "Expiration Date" [ref=e237] [cursor=pointer]:
156
+ - text: 30 days
157
+ - img [ref=e239]
158
+ - generic [ref=e242]:
159
+ - heading "Summary" [level=2] [ref=e243]
160
+ - generic [ref=e245]:
161
+ - paragraph [ref=e246]: "This token will:"
162
+ - list [ref=e247]:
163
+ - listitem [ref=e248]: Provide no access to packages and scopes
164
+ - listitem [ref=e249]: Provide no access to organizations
165
+ - listitem [ref=e250]: Expires on Tuesday, March 10, 2026
166
+ - generic [ref=e252]:
167
+ - button "Generate token" [ref=e253]
168
+ - button "Cancel" [ref=e254]
169
+ - contentinfo [ref=e123]:
170
+ - heading "Footer" [level=2] [ref=e124]
171
+ - generic [ref=e125]:
172
+ - generic [ref=e126]:
173
+ - link "Visit npm GitHub page" [ref=e128] [cursor=pointer]:
174
+ - /url: https://github.com/npm
175
+ - img [ref=e129]
176
+ - link "GitHub" [ref=e133] [cursor=pointer]:
177
+ - /url: https://github.com
178
+ - img [ref=e134]
179
+ - generic [ref=e136]:
180
+ - heading "Support" [level=3] [ref=e137]
181
+ - list "Support" [ref=e138]:
182
+ - listitem [ref=e139]:
183
+ - link "Help" [ref=e140] [cursor=pointer]:
184
+ - /url: https://docs.npmjs.com
185
+ - listitem [ref=e141]:
186
+ - link "Advisories" [ref=e142] [cursor=pointer]:
187
+ - /url: https://github.com/advisories
188
+ - listitem [ref=e143]:
189
+ - link "Status" [ref=e144] [cursor=pointer]:
190
+ - /url: http://status.npmjs.org/
191
+ - listitem [ref=e145]:
192
+ - link "Contact npm" [ref=e146] [cursor=pointer]:
193
+ - /url: /support
194
+ - generic [ref=e147]:
195
+ - heading "Company" [level=3] [ref=e148]
196
+ - list "Company" [ref=e149]:
197
+ - listitem [ref=e150]:
198
+ - link "About" [ref=e151] [cursor=pointer]:
199
+ - /url: /about
200
+ - listitem [ref=e152]:
201
+ - link "Blog" [ref=e153] [cursor=pointer]:
202
+ - /url: https://github.blog/tag/npm/
203
+ - listitem [ref=e154]:
204
+ - link "Press" [ref=e155] [cursor=pointer]:
205
+ - /url: /press
206
+ - generic [ref=e156]:
207
+ - heading "Terms & Policies" [level=3] [ref=e157]
208
+ - list "Terms & Policies" [ref=e158]:
209
+ - listitem [ref=e159]:
210
+ - link "Policies" [ref=e160] [cursor=pointer]:
211
+ - /url: /policies/
212
+ - listitem [ref=e161]:
213
+ - link "Terms of Use" [ref=e162] [cursor=pointer]:
214
+ - /url: /policies/terms
215
+ - listitem [ref=e163]:
216
+ - link "Code of Conduct" [ref=e164] [cursor=pointer]:
217
+ - /url: /policies/conduct
218
+ - listitem [ref=e165]:
219
+ - link "Privacy" [ref=e166] [cursor=pointer]:
220
+ - /url: /policies/privacy
221
+ - generic [ref=e168]: New Granular Access Token