@cremini/skillpack 1.0.9-im.0 → 1.0.9-im.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.
@@ -9,6 +9,7 @@
9
9
  "version": "1.0.0",
10
10
  "dependencies": {
11
11
  "@mariozechner/pi-coding-agent": "^0.57.1",
12
+ "@slack/bolt": "^4.6.0",
12
13
  "express": "^5.1.0",
13
14
  "node-telegram-bot-api": "^0.66.0",
14
15
  "ws": "^8.19.0"
@@ -1343,6 +1344,162 @@
1343
1344
  "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==",
1344
1345
  "license": "MIT"
1345
1346
  },
1347
+ "node_modules/@slack/bolt": {
1348
+ "version": "4.6.0",
1349
+ "resolved": "https://registry.npmjs.org/@slack/bolt/-/bolt-4.6.0.tgz",
1350
+ "integrity": "sha512-xPgfUs2+OXSugz54Ky07pA890+Qydk22SYToi8uGpXeHSt1JWwFJkRyd/9Vlg5I1AdfdpGXExDpwnbuN9Q/2dQ==",
1351
+ "license": "MIT",
1352
+ "dependencies": {
1353
+ "@slack/logger": "^4.0.0",
1354
+ "@slack/oauth": "^3.0.4",
1355
+ "@slack/socket-mode": "^2.0.5",
1356
+ "@slack/types": "^2.18.0",
1357
+ "@slack/web-api": "^7.12.0",
1358
+ "axios": "^1.12.0",
1359
+ "express": "^5.0.0",
1360
+ "path-to-regexp": "^8.1.0",
1361
+ "raw-body": "^3",
1362
+ "tsscmp": "^1.0.6"
1363
+ },
1364
+ "engines": {
1365
+ "node": ">=18",
1366
+ "npm": ">=8.6.0"
1367
+ },
1368
+ "peerDependencies": {
1369
+ "@types/express": "^5.0.0"
1370
+ }
1371
+ },
1372
+ "node_modules/@slack/logger": {
1373
+ "version": "4.0.1",
1374
+ "resolved": "https://registry.npmjs.org/@slack/logger/-/logger-4.0.1.tgz",
1375
+ "integrity": "sha512-6cmdPrV/RYfd2U0mDGiMK8S7OJqpCTm7enMLRR3edccsPX8j7zXTLnaEF4fhxxJJTAIOil6+qZrnUPTuaLvwrQ==",
1376
+ "license": "MIT",
1377
+ "dependencies": {
1378
+ "@types/node": ">=18"
1379
+ },
1380
+ "engines": {
1381
+ "node": ">= 18",
1382
+ "npm": ">= 8.6.0"
1383
+ }
1384
+ },
1385
+ "node_modules/@slack/oauth": {
1386
+ "version": "3.0.5",
1387
+ "resolved": "https://registry.npmjs.org/@slack/oauth/-/oauth-3.0.5.tgz",
1388
+ "integrity": "sha512-exqFQySKhNDptWYSWhvRUJ4/+ndu2gayIy7vg/JfmJq3wGtGdHk531P96fAZyBm5c1Le3yaPYqv92rL4COlU3A==",
1389
+ "license": "MIT",
1390
+ "dependencies": {
1391
+ "@slack/logger": "^4.0.1",
1392
+ "@slack/web-api": "^7.15.0",
1393
+ "@types/jsonwebtoken": "^9",
1394
+ "@types/node": ">=18",
1395
+ "jsonwebtoken": "^9"
1396
+ },
1397
+ "engines": {
1398
+ "node": ">=18",
1399
+ "npm": ">=8.6.0"
1400
+ }
1401
+ },
1402
+ "node_modules/@slack/socket-mode": {
1403
+ "version": "2.0.6",
1404
+ "resolved": "https://registry.npmjs.org/@slack/socket-mode/-/socket-mode-2.0.6.tgz",
1405
+ "integrity": "sha512-Aj5RO3MoYVJ+b2tUjHUXuA3tiIaCUMOf1Ss5tPiz29XYVUi6qNac2A8ulcU1pUPERpXVHTmT1XW6HzQIO74daQ==",
1406
+ "license": "MIT",
1407
+ "dependencies": {
1408
+ "@slack/logger": "^4.0.1",
1409
+ "@slack/web-api": "^7.15.0",
1410
+ "@types/node": ">=18",
1411
+ "@types/ws": "^8",
1412
+ "eventemitter3": "^5",
1413
+ "ws": "^8"
1414
+ },
1415
+ "engines": {
1416
+ "node": ">= 18",
1417
+ "npm": ">= 8.6.0"
1418
+ }
1419
+ },
1420
+ "node_modules/@slack/socket-mode/node_modules/eventemitter3": {
1421
+ "version": "5.0.4",
1422
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz",
1423
+ "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==",
1424
+ "license": "MIT"
1425
+ },
1426
+ "node_modules/@slack/types": {
1427
+ "version": "2.20.1",
1428
+ "resolved": "https://registry.npmjs.org/@slack/types/-/types-2.20.1.tgz",
1429
+ "integrity": "sha512-eWX2mdt1ktpn8+40iiMc404uGrih+2fxiky3zBcPjtXKj6HLRdYlmhrPkJi7JTJm8dpXR6BWVWEDBXtaWMKD6A==",
1430
+ "license": "MIT",
1431
+ "engines": {
1432
+ "node": ">= 12.13.0",
1433
+ "npm": ">= 6.12.0"
1434
+ }
1435
+ },
1436
+ "node_modules/@slack/web-api": {
1437
+ "version": "7.15.0",
1438
+ "resolved": "https://registry.npmjs.org/@slack/web-api/-/web-api-7.15.0.tgz",
1439
+ "integrity": "sha512-va7zYIt3QHG1x9M/jqXXRPFMoOVlVSSRHC5YH+DzKYsrz5xUKOA3lR4THsu/Zxha9N1jOndbKFKLtr0WOPW1Vw==",
1440
+ "license": "MIT",
1441
+ "dependencies": {
1442
+ "@slack/logger": "^4.0.1",
1443
+ "@slack/types": "^2.20.1",
1444
+ "@types/node": ">=18",
1445
+ "@types/retry": "0.12.0",
1446
+ "axios": "^1.13.5",
1447
+ "eventemitter3": "^5.0.1",
1448
+ "form-data": "^4.0.4",
1449
+ "is-electron": "2.2.2",
1450
+ "is-stream": "^2",
1451
+ "p-queue": "^6",
1452
+ "p-retry": "^4",
1453
+ "retry": "^0.13.1"
1454
+ },
1455
+ "engines": {
1456
+ "node": ">= 18",
1457
+ "npm": ">= 8.6.0"
1458
+ }
1459
+ },
1460
+ "node_modules/@slack/web-api/node_modules/eventemitter3": {
1461
+ "version": "5.0.4",
1462
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz",
1463
+ "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==",
1464
+ "license": "MIT"
1465
+ },
1466
+ "node_modules/@slack/web-api/node_modules/form-data": {
1467
+ "version": "4.0.5",
1468
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
1469
+ "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
1470
+ "license": "MIT",
1471
+ "dependencies": {
1472
+ "asynckit": "^0.4.0",
1473
+ "combined-stream": "^1.0.8",
1474
+ "es-set-tostringtag": "^2.1.0",
1475
+ "hasown": "^2.0.2",
1476
+ "mime-types": "^2.1.12"
1477
+ },
1478
+ "engines": {
1479
+ "node": ">= 6"
1480
+ }
1481
+ },
1482
+ "node_modules/@slack/web-api/node_modules/mime-db": {
1483
+ "version": "1.52.0",
1484
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1485
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
1486
+ "license": "MIT",
1487
+ "engines": {
1488
+ "node": ">= 0.6"
1489
+ }
1490
+ },
1491
+ "node_modules/@slack/web-api/node_modules/mime-types": {
1492
+ "version": "2.1.35",
1493
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1494
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1495
+ "license": "MIT",
1496
+ "dependencies": {
1497
+ "mime-db": "1.52.0"
1498
+ },
1499
+ "engines": {
1500
+ "node": ">= 0.6"
1501
+ }
1502
+ },
1346
1503
  "node_modules/@smithy/abort-controller": {
1347
1504
  "version": "4.2.12",
1348
1505
  "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.12.tgz",
@@ -2027,7 +2184,6 @@
2027
2184
  "version": "1.19.6",
2028
2185
  "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz",
2029
2186
  "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==",
2030
- "dev": true,
2031
2187
  "license": "MIT",
2032
2188
  "dependencies": {
2033
2189
  "@types/connect": "*",
@@ -2045,7 +2201,6 @@
2045
2201
  "version": "3.4.38",
2046
2202
  "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
2047
2203
  "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
2048
- "dev": true,
2049
2204
  "license": "MIT",
2050
2205
  "dependencies": {
2051
2206
  "@types/node": "*"
@@ -2055,7 +2210,6 @@
2055
2210
  "version": "5.0.6",
2056
2211
  "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz",
2057
2212
  "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==",
2058
- "dev": true,
2059
2213
  "license": "MIT",
2060
2214
  "dependencies": {
2061
2215
  "@types/body-parser": "*",
@@ -2067,7 +2221,6 @@
2067
2221
  "version": "5.1.1",
2068
2222
  "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz",
2069
2223
  "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==",
2070
- "dev": true,
2071
2224
  "license": "MIT",
2072
2225
  "dependencies": {
2073
2226
  "@types/node": "*",
@@ -2080,15 +2233,30 @@
2080
2233
  "version": "2.0.5",
2081
2234
  "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz",
2082
2235
  "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==",
2083
- "dev": true,
2084
2236
  "license": "MIT"
2085
2237
  },
2238
+ "node_modules/@types/jsonwebtoken": {
2239
+ "version": "9.0.10",
2240
+ "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz",
2241
+ "integrity": "sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==",
2242
+ "license": "MIT",
2243
+ "dependencies": {
2244
+ "@types/ms": "*",
2245
+ "@types/node": "*"
2246
+ }
2247
+ },
2086
2248
  "node_modules/@types/mime-types": {
2087
2249
  "version": "2.1.4",
2088
2250
  "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz",
2089
2251
  "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==",
2090
2252
  "license": "MIT"
2091
2253
  },
2254
+ "node_modules/@types/ms": {
2255
+ "version": "2.1.0",
2256
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
2257
+ "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
2258
+ "license": "MIT"
2259
+ },
2092
2260
  "node_modules/@types/node": {
2093
2261
  "version": "22.19.15",
2094
2262
  "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.15.tgz",
@@ -2113,14 +2281,12 @@
2113
2281
  "version": "6.15.0",
2114
2282
  "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz",
2115
2283
  "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==",
2116
- "dev": true,
2117
2284
  "license": "MIT"
2118
2285
  },
2119
2286
  "node_modules/@types/range-parser": {
2120
2287
  "version": "1.2.7",
2121
2288
  "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
2122
2289
  "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
2123
- "dev": true,
2124
2290
  "license": "MIT"
2125
2291
  },
2126
2292
  "node_modules/@types/request": {
@@ -2146,7 +2312,6 @@
2146
2312
  "version": "1.2.1",
2147
2313
  "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz",
2148
2314
  "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==",
2149
- "dev": true,
2150
2315
  "license": "MIT",
2151
2316
  "dependencies": {
2152
2317
  "@types/node": "*"
@@ -2156,7 +2321,6 @@
2156
2321
  "version": "2.2.0",
2157
2322
  "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz",
2158
2323
  "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==",
2159
- "dev": true,
2160
2324
  "license": "MIT",
2161
2325
  "dependencies": {
2162
2326
  "@types/http-errors": "*",
@@ -2174,7 +2338,6 @@
2174
2338
  "version": "8.18.1",
2175
2339
  "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz",
2176
2340
  "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==",
2177
- "dev": true,
2178
2341
  "license": "MIT",
2179
2342
  "dependencies": {
2180
2343
  "@types/node": "*"
@@ -2407,6 +2570,54 @@
2407
2570
  "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==",
2408
2571
  "license": "MIT"
2409
2572
  },
2573
+ "node_modules/axios": {
2574
+ "version": "1.13.6",
2575
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz",
2576
+ "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==",
2577
+ "license": "MIT",
2578
+ "dependencies": {
2579
+ "follow-redirects": "^1.15.11",
2580
+ "form-data": "^4.0.5",
2581
+ "proxy-from-env": "^1.1.0"
2582
+ }
2583
+ },
2584
+ "node_modules/axios/node_modules/form-data": {
2585
+ "version": "4.0.5",
2586
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
2587
+ "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
2588
+ "license": "MIT",
2589
+ "dependencies": {
2590
+ "asynckit": "^0.4.0",
2591
+ "combined-stream": "^1.0.8",
2592
+ "es-set-tostringtag": "^2.1.0",
2593
+ "hasown": "^2.0.2",
2594
+ "mime-types": "^2.1.12"
2595
+ },
2596
+ "engines": {
2597
+ "node": ">= 6"
2598
+ }
2599
+ },
2600
+ "node_modules/axios/node_modules/mime-db": {
2601
+ "version": "1.52.0",
2602
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
2603
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
2604
+ "license": "MIT",
2605
+ "engines": {
2606
+ "node": ">= 0.6"
2607
+ }
2608
+ },
2609
+ "node_modules/axios/node_modules/mime-types": {
2610
+ "version": "2.1.35",
2611
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
2612
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
2613
+ "license": "MIT",
2614
+ "dependencies": {
2615
+ "mime-db": "1.52.0"
2616
+ },
2617
+ "engines": {
2618
+ "node": ">= 0.6"
2619
+ }
2620
+ },
2410
2621
  "node_modules/balanced-match": {
2411
2622
  "version": "4.0.4",
2412
2623
  "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
@@ -3438,6 +3649,26 @@
3438
3649
  "url": "https://opencollective.com/express"
3439
3650
  }
3440
3651
  },
3652
+ "node_modules/follow-redirects": {
3653
+ "version": "1.15.11",
3654
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
3655
+ "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
3656
+ "funding": [
3657
+ {
3658
+ "type": "individual",
3659
+ "url": "https://github.com/sponsors/RubenVerborgh"
3660
+ }
3661
+ ],
3662
+ "license": "MIT",
3663
+ "engines": {
3664
+ "node": ">=4.0"
3665
+ },
3666
+ "peerDependenciesMeta": {
3667
+ "debug": {
3668
+ "optional": true
3669
+ }
3670
+ }
3671
+ },
3441
3672
  "node_modules/for-each": {
3442
3673
  "version": "0.3.5",
3443
3674
  "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
@@ -4248,6 +4479,12 @@
4248
4479
  "url": "https://github.com/sponsors/ljharb"
4249
4480
  }
4250
4481
  },
4482
+ "node_modules/is-electron": {
4483
+ "version": "2.2.2",
4484
+ "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz",
4485
+ "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==",
4486
+ "license": "MIT"
4487
+ },
4251
4488
  "node_modules/is-finalizationregistry": {
4252
4489
  "version": "1.1.1",
4253
4490
  "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz",
@@ -4382,6 +4619,18 @@
4382
4619
  "url": "https://github.com/sponsors/ljharb"
4383
4620
  }
4384
4621
  },
4622
+ "node_modules/is-stream": {
4623
+ "version": "2.0.1",
4624
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
4625
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
4626
+ "license": "MIT",
4627
+ "engines": {
4628
+ "node": ">=8"
4629
+ },
4630
+ "funding": {
4631
+ "url": "https://github.com/sponsors/sindresorhus"
4632
+ }
4633
+ },
4385
4634
  "node_modules/is-string": {
4386
4635
  "version": "1.1.1",
4387
4636
  "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz",
@@ -4558,6 +4807,28 @@
4558
4807
  "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
4559
4808
  "license": "ISC"
4560
4809
  },
4810
+ "node_modules/jsonwebtoken": {
4811
+ "version": "9.0.3",
4812
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz",
4813
+ "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==",
4814
+ "license": "MIT",
4815
+ "dependencies": {
4816
+ "jws": "^4.0.1",
4817
+ "lodash.includes": "^4.3.0",
4818
+ "lodash.isboolean": "^3.0.3",
4819
+ "lodash.isinteger": "^4.0.4",
4820
+ "lodash.isnumber": "^3.0.3",
4821
+ "lodash.isplainobject": "^4.0.6",
4822
+ "lodash.isstring": "^4.0.1",
4823
+ "lodash.once": "^4.0.0",
4824
+ "ms": "^2.1.1",
4825
+ "semver": "^7.5.4"
4826
+ },
4827
+ "engines": {
4828
+ "node": ">=12",
4829
+ "npm": ">=6"
4830
+ }
4831
+ },
4561
4832
  "node_modules/jsprim": {
4562
4833
  "version": "2.0.2",
4563
4834
  "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz",
@@ -4611,6 +4882,48 @@
4611
4882
  "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
4612
4883
  "license": "MIT"
4613
4884
  },
4885
+ "node_modules/lodash.includes": {
4886
+ "version": "4.3.0",
4887
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
4888
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
4889
+ "license": "MIT"
4890
+ },
4891
+ "node_modules/lodash.isboolean": {
4892
+ "version": "3.0.3",
4893
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
4894
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
4895
+ "license": "MIT"
4896
+ },
4897
+ "node_modules/lodash.isinteger": {
4898
+ "version": "4.0.4",
4899
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
4900
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
4901
+ "license": "MIT"
4902
+ },
4903
+ "node_modules/lodash.isnumber": {
4904
+ "version": "3.0.3",
4905
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
4906
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
4907
+ "license": "MIT"
4908
+ },
4909
+ "node_modules/lodash.isplainobject": {
4910
+ "version": "4.0.6",
4911
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
4912
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
4913
+ "license": "MIT"
4914
+ },
4915
+ "node_modules/lodash.isstring": {
4916
+ "version": "4.0.1",
4917
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
4918
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
4919
+ "license": "MIT"
4920
+ },
4921
+ "node_modules/lodash.once": {
4922
+ "version": "4.1.1",
4923
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
4924
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
4925
+ "license": "MIT"
4926
+ },
4614
4927
  "node_modules/long": {
4615
4928
  "version": "5.3.2",
4616
4929
  "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz",
@@ -4969,6 +5282,37 @@
4969
5282
  "url": "https://github.com/sponsors/ljharb"
4970
5283
  }
4971
5284
  },
5285
+ "node_modules/p-finally": {
5286
+ "version": "1.0.0",
5287
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
5288
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
5289
+ "license": "MIT",
5290
+ "engines": {
5291
+ "node": ">=4"
5292
+ }
5293
+ },
5294
+ "node_modules/p-queue": {
5295
+ "version": "6.6.2",
5296
+ "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz",
5297
+ "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==",
5298
+ "license": "MIT",
5299
+ "dependencies": {
5300
+ "eventemitter3": "^4.0.4",
5301
+ "p-timeout": "^3.2.0"
5302
+ },
5303
+ "engines": {
5304
+ "node": ">=8"
5305
+ },
5306
+ "funding": {
5307
+ "url": "https://github.com/sponsors/sindresorhus"
5308
+ }
5309
+ },
5310
+ "node_modules/p-queue/node_modules/eventemitter3": {
5311
+ "version": "4.0.7",
5312
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
5313
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
5314
+ "license": "MIT"
5315
+ },
4972
5316
  "node_modules/p-retry": {
4973
5317
  "version": "4.6.2",
4974
5318
  "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz",
@@ -4982,6 +5326,18 @@
4982
5326
  "node": ">=8"
4983
5327
  }
4984
5328
  },
5329
+ "node_modules/p-timeout": {
5330
+ "version": "3.2.0",
5331
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz",
5332
+ "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==",
5333
+ "license": "MIT",
5334
+ "dependencies": {
5335
+ "p-finally": "^1.0.0"
5336
+ },
5337
+ "engines": {
5338
+ "node": ">=8"
5339
+ }
5340
+ },
4985
5341
  "node_modules/pac-proxy-agent": {
4986
5342
  "version": "7.2.0",
4987
5343
  "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz",
@@ -5743,6 +6099,18 @@
5743
6099
  "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
5744
6100
  "license": "MIT"
5745
6101
  },
6102
+ "node_modules/semver": {
6103
+ "version": "7.7.4",
6104
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
6105
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
6106
+ "license": "ISC",
6107
+ "bin": {
6108
+ "semver": "bin/semver.js"
6109
+ },
6110
+ "engines": {
6111
+ "node": ">=10"
6112
+ }
6113
+ },
5746
6114
  "node_modules/send": {
5747
6115
  "version": "1.2.1",
5748
6116
  "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz",
@@ -6358,6 +6726,15 @@
6358
6726
  "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
6359
6727
  "license": "0BSD"
6360
6728
  },
6729
+ "node_modules/tsscmp": {
6730
+ "version": "1.0.6",
6731
+ "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
6732
+ "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==",
6733
+ "license": "MIT",
6734
+ "engines": {
6735
+ "node": ">=0.6.x"
6736
+ }
6737
+ },
6361
6738
  "node_modules/tunnel-agent": {
6362
6739
  "version": "0.6.0",
6363
6740
  "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -7,16 +7,17 @@
7
7
  "start": "node dist/index.js"
8
8
  },
9
9
  "dependencies": {
10
- "express": "^5.1.0",
11
10
  "@mariozechner/pi-coding-agent": "^0.57.1",
12
- "ws": "^8.19.0",
13
- "node-telegram-bot-api": "^0.66.0"
11
+ "@slack/bolt": "^4.6.0",
12
+ "express": "^5.1.0",
13
+ "node-telegram-bot-api": "^0.66.0",
14
+ "ws": "^8.19.0"
14
15
  },
15
16
  "devDependencies": {
16
17
  "@types/express": "^5.0.0",
17
- "@types/ws": "^8.18.0",
18
18
  "@types/node": "^22.0.0",
19
19
  "@types/node-telegram-bot-api": "^0.64.0",
20
+ "@types/ws": "^8.18.0",
20
21
  "typescript": "^5.9.3"
21
22
  }
22
- }
23
+ }
@@ -25,20 +25,10 @@
25
25
  </div>
26
26
 
27
27
  <div class="sidebar-section">
28
- <h3>API KEYS</h3>
29
- <div class="provider-select-wrapper">
30
- <select id="provider-select">
31
- <option value="openai">OpenAI</option>
32
- <option value="anthropic">Anthropic</option>
33
- </select>
34
- </div>
35
- <div class="api-key-form">
36
- <input type="password" id="api-key-input" placeholder="sk-..." />
37
- </div>
38
- <div class="api-key-footer">
39
- <p id="key-status" class="status-text"></p>
40
- <button id="save-key-btn">Save</button>
41
- </div>
28
+ <button id="open-settings-btn" class="settings-trigger-btn">
29
+ <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="btn-icon"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg>
30
+ Settings
31
+ </button>
42
32
  </div>
43
33
  </aside>
44
34
 
@@ -65,8 +55,61 @@
65
55
  </div>
66
56
  </main>
67
57
  </div>
58
+
59
+ <!-- Settings Dialog -->
60
+ <dialog id="settings-dialog" class="settings-modal">
61
+ <div class="settings-modal-header">
62
+ <h2>Settings</h2>
63
+ <button id="close-settings-btn" class="close-btn" aria-label="Close">
64
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
65
+ </button>
66
+ </div>
67
+ <div class="settings-modal-body">
68
+ <div class="settings-sections">
69
+ <!-- General Section -->
70
+ <div class="settings-section">
71
+ <h3 class="section-title">General</h3>
72
+ <div class="form-group">
73
+ <label>Provider</label>
74
+ <div class="provider-select-wrapper">
75
+ <select id="provider-select">
76
+ <option value="openai">OpenAI</option>
77
+ <option value="anthropic">Anthropic</option>
78
+ </select>
79
+ </div>
80
+ </div>
81
+ <div class="form-group">
82
+ <label>API Key</label>
83
+ <input type="password" id="api-key-input" placeholder="sk-..." class="form-input" />
84
+ <p id="key-status" class="status-text" style="margin-top: 8px; min-height: 18px;"></p>
85
+ </div>
86
+ </div>
87
+
88
+ <!-- IM Bots Section -->
89
+ <div class="settings-section">
90
+ <h3 class="section-title">IM Bots</h3>
91
+ <div class="form-group">
92
+ <label>Telegram Bot Token</label>
93
+ <input type="password" id="telegram-token-input" placeholder="123456:ABC-DEF..." class="form-input" />
94
+ </div>
95
+ <div class="form-group">
96
+ <label>Slack Bot Token</label>
97
+ <input type="password" id="slack-bot-token-input" placeholder="xoxb-..." class="form-input" />
98
+ </div>
99
+ <div class="form-group">
100
+ <label>Slack App Token</label>
101
+ <input type="password" id="slack-app-token-input" placeholder="xapp-..." class="form-input" />
102
+ </div>
103
+ </div>
104
+ </div>
105
+ </div>
106
+ <div class="settings-modal-footer">
107
+ <button id="save-settings-btn" class="primary-btn">Save Settings</button>
108
+ </div>
109
+ </dialog>
110
+
68
111
  <script src="marked.min.js"></script>
69
- <script src="app.js"></script>
112
+ <script type="module" src="js/main.js"></script>
70
113
  </body>
71
114
 
72
115
  </html>