@aopslabs/aops 0.3.27 → 0.3.28
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/agent-assets-release/agent-assets/core/bc42dd7792dbe66040e99a7ef3d80b3bc788c72b369b5a065cf936aef29f53fb/manifest.json +2 -2
- package/agent-assets-release/agent-assets/inventory.json +3 -3
- package/agent-assets-release/agent-assets-release.json +8 -8
- package/agent-assets-release/agent-assets-release.sigstore.json +23 -24
- package/dist/commands/community-setup.js +1 -0
- package/dist/lib/agent-assets/native-fs.js +2 -2
- package/dist/lib/pg-client-acquisition.js +90 -0
- package/dist/lib/pg-tool-location.js +55 -19
- package/dist/lib/setup-init-orchestrator.js +49 -0
- package/native/manifest.json +1 -1
- package/native/qualifications/win32-x64.json +1 -1
- package/package.json +6 -5
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
"name": "aops",
|
|
11
11
|
"optional": false,
|
|
12
12
|
"packageSha256": "bc42dd7792dbe66040e99a7ef3d80b3bc788c72b369b5a065cf936aef29f53fb",
|
|
13
|
-
"version": "0.3.
|
|
14
|
-
"versionId": "community-core-0.3.
|
|
13
|
+
"version": "0.3.28",
|
|
14
|
+
"versionId": "community-core-0.3.28"
|
|
15
15
|
},
|
|
16
16
|
"gateway": {
|
|
17
17
|
"byteLength": 621,
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"kind": "aops-community-agent-assets-inventory-v1",
|
|
23
23
|
"schemaVersion": 1,
|
|
24
24
|
"source": {
|
|
25
|
-
"commit": "
|
|
25
|
+
"commit": "4b74e2bab67b40ecc4ea37a972d2747491f7a8b2",
|
|
26
26
|
"repository": "git+https://github.com/eeemzs/aops-platform",
|
|
27
27
|
"root": "apps/aops-cli/assets/agent-assets"
|
|
28
28
|
}
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"name": "aops",
|
|
12
12
|
"optional": false,
|
|
13
13
|
"packageSha256": "bc42dd7792dbe66040e99a7ef3d80b3bc788c72b369b5a065cf936aef29f53fb",
|
|
14
|
-
"version": "0.3.
|
|
15
|
-
"versionId": "community-core-0.3.
|
|
14
|
+
"version": "0.3.28",
|
|
15
|
+
"versionId": "community-core-0.3.28"
|
|
16
16
|
},
|
|
17
17
|
"files": [
|
|
18
18
|
{
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
{
|
|
119
119
|
"byteLength": 3811,
|
|
120
120
|
"ref": "agent-assets/core/bc42dd7792dbe66040e99a7ef3d80b3bc788c72b369b5a065cf936aef29f53fb/manifest.json",
|
|
121
|
-
"sha256": "
|
|
121
|
+
"sha256": "a7d0ddab5014eb99f6bae0b3b6ef74a5a8c85139a2c4d219c965f36c8e1bd807"
|
|
122
122
|
},
|
|
123
123
|
{
|
|
124
124
|
"byteLength": 621,
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
{
|
|
129
129
|
"byteLength": 926,
|
|
130
130
|
"ref": "agent-assets/inventory.json",
|
|
131
|
-
"sha256": "
|
|
131
|
+
"sha256": "6eb29fbf8c2399e854083ef13c2428440ce23f5088824877dc905a8520e47c1b"
|
|
132
132
|
},
|
|
133
133
|
{
|
|
134
134
|
"byteLength": 281,
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
},
|
|
145
145
|
"inventory": {
|
|
146
146
|
"ref": "agent-assets/inventory.json",
|
|
147
|
-
"sha256": "
|
|
147
|
+
"sha256": "6eb29fbf8c2399e854083ef13c2428440ce23f5088824877dc905a8520e47c1b"
|
|
148
148
|
},
|
|
149
149
|
"kind": "aops-community-agent-assets-release-v1",
|
|
150
150
|
"projection": {
|
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
},
|
|
154
154
|
"root": "agent-assets",
|
|
155
155
|
"schemaVersion": 1,
|
|
156
|
-
"setSha256": "
|
|
156
|
+
"setSha256": "02ea968111c9cdad8fe406cb8d9e57e6f26a58644ac193c04f00a6aa577ec3dc"
|
|
157
157
|
},
|
|
158
158
|
"evidence": {
|
|
159
159
|
"signature": {
|
|
@@ -161,10 +161,10 @@
|
|
|
161
161
|
}
|
|
162
162
|
},
|
|
163
163
|
"kind": "aops-community-agent-assets-bundle-v1",
|
|
164
|
-
"releaseVersion": "0.3.
|
|
164
|
+
"releaseVersion": "0.3.28",
|
|
165
165
|
"schemaVersion": 1,
|
|
166
166
|
"source": {
|
|
167
|
-
"commit": "
|
|
167
|
+
"commit": "4b74e2bab67b40ecc4ea37a972d2747491f7a8b2",
|
|
168
168
|
"repository": "git+https://github.com/eeemzs/aops-platform",
|
|
169
169
|
"root": "apps/aops-cli/assets/agent-assets"
|
|
170
170
|
}
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
"x509CertificateChain": {
|
|
5
5
|
"certificates": [
|
|
6
6
|
{
|
|
7
|
-
"rawBytes": "
|
|
7
|
+
"rawBytes": "MIIHdDCCBvugAwIBAgIUKz3TRlv3SyEK3rhBdC6XVPKLd6swCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwODIxMjEyMDMyWhcNMjYwODIxMjEzMDMyWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsdWUtMvNxb87LwPcaNwM+ylP9oVfnBeqdNEMwKKRzhu+wZWY8MaiqO2RpMY1rw6C2qW8eweTV4DNiaFS9ab5W6OCBhowggYWMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUJJHZBd+BtXs20lbN1levZtQde+swHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wdAYDVR0RAQH/BGowaIZmaHR0cHM6Ly9naXRodWIuY29tL2VlZW16cy9hb3BzLXBsYXRmb3JtLy5naXRodWIvd29ya2Zsb3dzL3NpZ24tcHVibGljLWFnZW50LWFzc2V0cy55bWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoNGI3NGUyYmFiNjdiNDBlY2M0ZWEzN2E5NzJkMjc0NzQ5MWY3YThiMjAxBgorBgEEAYO/MAEEBCNTaWduIGV4YWN0IHB1YmxpYyBBT1BTIGFnZW50IGFzc2V0czAiBgorBgEEAYO/MAEFBBRlZWVtenMvYW9wcy1wbGF0Zm9ybTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMHYGCisGAQQBg78wAQkEaAxmaHR0cHM6Ly9naXRodWIuY29tL2VlZW16cy9hb3BzLXBsYXRmb3JtLy5naXRodWIvd29ya2Zsb3dzL3NpZ24tcHVibGljLWFnZW50LWFzc2V0cy55bWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoNGI3NGUyYmFiNjdiNDBlY2M0ZWEzN2E5NzJkMjc0NzQ5MWY3YThiMjAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwNwYKKwYBBAGDvzABDAQpDCdodHRwczovL2dpdGh1Yi5jb20vZWVlbXpzL2FvcHMtcGxhdGZvcm0wOAYKKwYBBAGDvzABDQQqDCg0Yjc0ZTJiYWI2N2I0MGVjYzRlYTM3YTk3MmQyNzQ3NDkxZjdhOGIyMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTMxNjI1NTAyNjApBgorBgEEAYO/MAEQBBsMGWh0dHBzOi8vZ2l0aHViLmNvbS9lZWVtenMwGQYKKwYBBAGDvzABEQQLDAkxMDkzMTA3NzQwdgYKKwYBBAGDvzABEgRoDGZodHRwczovL2dpdGh1Yi5jb20vZWVlbXpzL2FvcHMtcGxhdGZvcm0vLmdpdGh1Yi93b3JrZmxvd3Mvc2lnbi1wdWJsaWMtYWdlbnQtYXNzZXRzLnltbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABEwQqDCg0Yjc0ZTJiYWI2N2I0MGVjYzRlYTM3YTk3MmQyNzQ3NDkxZjdhOGIyMCEGCisGAQQBg78wARQEEwwRd29ya2Zsb3dfZGlzcGF0Y2gwWwYKKwYBBAGDvzABFQRNDEtodHRwczovL2dpdGh1Yi5jb20vZWVlbXpzL2FvcHMtcGxhdGZvcm0vYWN0aW9ucy9ydW5zLzMyNTI3OTU1NTExL2F0dGVtcHRzLzEwFwYKKwYBBAGDvzABFgQJDAdwcml2YXRlMFIGCisGAQQBg78wARgERAxCcmVwbzplZWVtenNAMTA5MzEwNzc0L2FvcHMtcGxhdGZvcm1AMTMxNjI1NTAyNjpyZWY6cmVmcy9oZWFkcy9tYWluMIGLBgorBgEEAdZ5AgQCBH0EewB5AHcA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGgJjJnNwAABAMASDBGAiEA1NThMhpMbIHSlcM1R1pZAUb+aMbHgfImv4eywNO+13MCIQCNDGdt/WC4r93RO2pbQFb2LZla78d+Y9aDRw7/evS6mjAKBggqhkjOPQQDAwNnADBkAjA2pREYTGp5wwefgH33D2euXopPmsY72LFbAd3ML7fN46JqfXyO1U188leQZbfeMrICMEpLodjpfLfJuKeLhF3pE6QtEJxau3rMvIfv4v0mFxf0M7kUybG59dt5OTENDNC88A=="
|
|
8
8
|
}
|
|
9
9
|
]
|
|
10
10
|
},
|
|
11
11
|
"tlogEntries": [
|
|
12
12
|
{
|
|
13
|
-
"logIndex": "
|
|
13
|
+
"logIndex": "2553771214",
|
|
14
14
|
"logId": {
|
|
15
15
|
"keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="
|
|
16
16
|
},
|
|
@@ -18,28 +18,27 @@
|
|
|
18
18
|
"kind": "hashedrekord",
|
|
19
19
|
"version": "0.0.1"
|
|
20
20
|
},
|
|
21
|
-
"integratedTime": "
|
|
21
|
+
"integratedTime": "1787347232",
|
|
22
22
|
"inclusionPromise": {
|
|
23
|
-
"signedEntryTimestamp": "
|
|
23
|
+
"signedEntryTimestamp": "MEQCIDfcm9LkMQJMVzC1y8Zz+3W4lZCSfSEcqVcokF3cL9OQAiA2t3KDqtR5h61DxjgR/24n+diVWnRr1HroMr7gtnRX1g=="
|
|
24
24
|
},
|
|
25
25
|
"inclusionProof": {
|
|
26
|
-
"logIndex": "
|
|
27
|
-
"rootHash": "
|
|
28
|
-
"treeSize": "
|
|
26
|
+
"logIndex": "2431866952",
|
|
27
|
+
"rootHash": "FzfjDKMb7RwLCOsn5MqV4EI4I6He4TxvmsSWsJabXUo=",
|
|
28
|
+
"treeSize": "2431866964",
|
|
29
29
|
"hashes": [
|
|
30
|
-
"
|
|
31
|
-
"/
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"yqyiMHfdl4qv1WrmtBYfbvpXnXVW3U2mKAE7FuRLIgc=",
|
|
30
|
+
"TkmstTcLV80Z8cCC14nTYMmgLh+WDktBMOMgkpTc0BM=",
|
|
31
|
+
"ee0gHJOEFErA2/e5JNqBpVFZmpI9p/162qHYajKcUJ4=",
|
|
32
|
+
"LtPS7ZHwKewZie+9kcDo3GEi+K/OyYmhduazzRJBpwk=",
|
|
33
|
+
"yDZ7T4a4ZoMY72uid/bnC3pm3ukVkmrYVR15KKrmiks=",
|
|
34
|
+
"M07J7P95IA48Te8doVTxWxwMs9wCzLp1n4CivkC90ls=",
|
|
35
|
+
"Ifr+B23ijUQ8mSxGm2huQ33ngNbAkh45/6YVvJ6YkC8=",
|
|
36
|
+
"PDl2+2g31pAzh7inLT1wKZBgs8IQEH6UbNBtW6NlY/g=",
|
|
37
|
+
"Oy8zIaaZ4Jjs8LgOH36qYR5qfnXId5Ya/7xJobY3FRQ=",
|
|
38
|
+
"nb2F2HW8++pxo5kubryZYX4S4GpLlrAHfvhIygp7i48=",
|
|
39
|
+
"TajTE5zxXucFXS1a0NWZQSd8UUQtAjDtaQ47uEBlsAw=",
|
|
40
|
+
"LVkP/pXcdaXlrM7GmttJ9G/8UlAsG9peo4xRdefiIdE=",
|
|
41
|
+
"6pok3vcu/J36uan+mjVjYgeDF8aod94o/h6fjqQvlMA=",
|
|
43
42
|
"V26C/ZbgRB037k4IypmNXaS2AKEAq+mYdBpCYzUHZaI=",
|
|
44
43
|
"9573PZDNoVVnalVG+4BpJVrKEFneAwqHLpVdOEfbE0Y=",
|
|
45
44
|
"RhRQJE8gq9XjV+FJY/OHh6ZhCnS6INvqNxL9MyobX54=",
|
|
@@ -47,10 +46,10 @@
|
|
|
47
46
|
"xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="
|
|
48
47
|
],
|
|
49
48
|
"checkpoint": {
|
|
50
|
-
"envelope": "rekor.sigstore.dev - 1193050959916656506\
|
|
49
|
+
"envelope": "rekor.sigstore.dev - 1193050959916656506\n2431866964\nFzfjDKMb7RwLCOsn5MqV4EI4I6He4TxvmsSWsJabXUo=\n\n— rekor.sigstore.dev wNI9ajBGAiEA3FKcKQyuF1Qinx8qvAOOpwvjarVMsXB66iDktb8uABkCIQDf7gkJs+AkOBETCt8Asn/QLbwZ65ZXdNgZsi95zCIMsQ==\n"
|
|
51
50
|
}
|
|
52
51
|
},
|
|
53
|
-
"canonicalizedBody": "
|
|
52
|
+
"canonicalizedBody": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI0MjFjY2FhMGYwOTM3NDA3Zjc3MTMxOGM3ZjJlZmQyYjQxNDdhYmM5MjgyNmUwOGMxNmY0YWZjZWRjMDc0YmI3In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUUNOU3pFMnhoanhEdHJVWUFJY3VEZjVHYmhCRFpISU9KazVlR3FLUzZxVWl3SWhBS1R3RVoyOFFTNlJmQXY2MkJWMSsrZUxOQ0Qxc1NLNmpqTzllWFpuV2VHQSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaGtSRU5EUW5aMVowRjNTVUpCWjBsVlMzb3pWRkpzZGpOVGVVVkxNM0pvUW1SRE5saFdVRXRNWkRaemQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlFU1hoTmFrVjVUVVJOZVZkb1kwNU5hbGwzVDBSSmVFMXFSWHBOUkUxNVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZ6WkZkVmRFMTJUbmhpT0RkTWQxQmpZVTUzVFN0NWJGQTViMVptYmtKbGNXUk9SVTBLZDB0TFVucG9kU3QzV2xkWk9FMWhhWEZQTWxKd1RWa3hjbmMyUXpKeFZ6aGxkMlZVVmpSRVRtbGhSbE01WVdJMVZ6WlBRMEpvYjNkbloxbFhUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZLU2toYUNrSmtLMEowV0hNeU1HeGlUakZzWlhaYWRGRmtaU3R6ZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJSQldVUldVakJTUVZGSUwwSkhiM2RoU1ZwdFlVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKV2JGcFhNVFpqZVRsb1lqTkNlZ3BNV0VKeldWaFNiV0l6U25STWVUVnVZVmhTYjJSWFNYWmtNamw1WVRKYWMySXpaSHBNTTA1d1dqSTBkR05JVm1saVIyeHFURmRHYmxwWE5UQk1WMFo2Q21NeVZqQmplVFUxWWxkNFFXTnRWbTFqZVRsdldsZEdhMk41T1hSWlYyeDFUVVJyUjBOcGMwZEJVVkZDWnpjNGQwRlJSVVZMTW1nd1pFaENlazlwT0hZS1pFYzVjbHBYTkhWWlYwNHdZVmM1ZFdONU5XNWhXRkp2WkZkS01XTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNTSGRaUzB0M1dVSkNRVWRFZG5wQlFncEJaMUZTWkRJNWVXRXlXbk5pTTJSbVdrZHNlbU5IUmpCWk1tZDNUbWRaUzB0M1dVSkNRVWRFZG5wQlFrRjNVVzlPUjBrelRrZFZlVmx0Um1sT2FtUnBDazVFUW14Wk1rMHdXbGRGZWs0eVJUVk9la3ByVFdwak1FNTZVVFZOVjFreldWUm9hVTFxUVhoQ1oyOXlRbWRGUlVGWlR5OU5RVVZGUWtOT1ZHRlhaSFVLU1VkV05GbFhUakJKU0VJeFdXMTRjRmw1UWtKVU1VSlVTVWRHYmxwWE5UQkpSMFo2WXpKV01HTjZRV2xDWjI5eVFtZEZSVUZaVHk5TlFVVkdRa0pTYkFwYVYxWjBaVzVOZGxsWE9YZGplVEYzWWtkR01GcHRPWGxpVkVGa1FtZHZja0puUlVWQldVOHZUVUZGUjBKQk9YbGFWMXA2VERKb2JGbFhVbnBNTWpGb0NtRlhOSGRQZDFsTFMzZFpRa0pCUjBSMmVrRkNRMEZSZEVSRGRHOWtTRkozWTNwdmRrd3pVblpoTWxaMVRHMUdhbVJIYkhaaWJrMTFXakpzTUdGSVZta0taRmhPYkdOdFRuWmlibEpzWW01UmRWa3lPWFJOU0ZsSFEybHpSMEZSVVVKbk56aDNRVkZyUldGQmVHMWhTRkl3WTBoTk5reDVPVzVoV0ZKdlpGZEpkUXBaTWpsMFRESldiRnBYTVRaamVUbG9Zak5DZWt4WVFuTlpXRkp0WWpOS2RFeDVOVzVoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3elRuQmFNalIwQ21OSVZtbGlSMnhxVEZkR2JscFhOVEJNVjBaNll6SldNR041TlRWaVYzaEJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOUkdkSFEybHpSMEZSVVVJS1p6YzRkMEZSYjBWTFozZHZUa2RKTTA1SFZYbFpiVVpwVG1wa2FVNUVRbXhaTWswd1dsZEZlazR5UlRWT2VrcHJUV3BqTUU1NlVUVk5WMWt6V1ZSb2FRcE5ha0ZrUW1kdmNrSm5SVVZCV1U4dlRVRkZURUpCT0UxRVYyUndaRWRvTVZscE1XOWlNMDR3V2xkUmQwNTNXVXRMZDFsQ1FrRkhSSFo2UVVKRVFWRndDa1JEWkc5a1NGSjNZM3B2ZGt3eVpIQmtSMmd4V1drMWFtSXlNSFphVjFac1lsaHdla3d5Um5aalNFMTBZMGQ0YUdSSFduWmpiVEIzVDBGWlMwdDNXVUlLUWtGSFJIWjZRVUpFVVZGeFJFTm5NRmxxWXpCYVZFcHBXVmRKTWs0eVNUQk5SMVpxV1hwU2JGbFVUVE5aVkdzelRXMVJlVTU2VVROT1JHdDRXbXBrYUFwUFIwbDVUVUk0UjBOcGMwZEJVVkZDWnpjNGQwRlJORVZGVVhkUVkyMVdiV041T1c5YVYwWnJZM2s1ZEZsWGJIVk5RbTlIUTJselIwRlJVVUpuTnpoM0NrRlJPRVZFUVhkTFRWUk5lRTVxU1RGT1ZFRjVUbXBCY0VKbmIzSkNaMFZGUVZsUEwwMUJSVkZDUW5OTlIxZG9NR1JJUW5wUGFUaDJXakpzTUdGSVZta0tURzFPZG1KVE9XeGFWMVowWlc1TmQwZFJXVXRMZDFsQ1FrRkhSSFo2UVVKRlVWRk1SRUZyZUUxRWEzcE5WRUV6VG5wUmQyUm5XVXRMZDFsQ1FrRkhSQXAyZWtGQ1JXZFNiMFJIV205a1NGSjNZM3B2ZGt3eVpIQmtSMmd4V1drMWFtSXlNSFphVjFac1lsaHdla3d5Um5aalNFMTBZMGQ0YUdSSFduWmpiVEIyQ2t4dFpIQmtSMmd4V1drNU0ySXpTbkphYlhoMlpETk5kbU15Ykc1aWFURjNaRmRLYzJGWFRYUlpWMlJzWW01UmRGbFlUbnBhV0ZKNlRHNXNkR0pGUW5rS1dsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JYZFJjVVJEWnpCWmFtTXdXbFJLYVZsWFNUSk9Na2t3VFVkV2FncFplbEpzV1ZSTk0xbFVhek5OYlZGNVRucFJNMDVFYTNoYWFtUm9UMGRKZVUxRFJVZERhWE5IUVZGUlFtYzNPSGRCVWxGRlJYZDNVbVF5T1hsaE1scHpDbUl6WkdaYVIyeDZZMGRHTUZreVozZFhkMWxMUzNkWlFrSkJSMFIyZWtGQ1JsRlNUa1JGZEc5a1NGSjNZM3B2ZGt3eVpIQmtSMmd4V1drMWFtSXlNSFlLV2xkV2JHSlljSHBNTWtaMlkwaE5kR05IZUdoa1IxcDJZMjB3ZGxsWFRqQmhWemwxWTNrNWVXUlhOWHBNZWsxNVRsUkpNMDlVVlRGT1ZFVjRUREpHTUFwa1IxWjBZMGhTZWt4NlJYZEdkMWxMUzNkWlFrSkJSMFIyZWtGQ1JtZFJTa1JCWkhkamJXd3lXVmhTYkUxR1NVZERhWE5IUVZGUlFtYzNPSGRCVW1kRkNsSkJlRU5qYlZaM1lucHdiRnBYVm5SbGJrNUJUVlJCTlUxNlJYZE9lbU13VERKR2RtTklUWFJqUjNob1pFZGFkbU50TVVGTlZFMTRUbXBKTVU1VVFYa0tUbXB3ZVZwWFdUWmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFKUjB4Q1oyOXlRbWRGUlVGa1dqVkJaMUZEUWtnd1JXVjNRalZCU0dOQk0xUXdkd3BoYzJKSVJWUktha2RTTkdOdFYyTXpRWEZLUzFoeWFtVlFTek12YURSd2VXZERPSEEzYnpSQlFVRkhaMHBxU201T2QwRkJRa0ZOUVZORVFrZEJhVVZCQ2pGT1ZHaE5hSEJOWWtsSVUyeGpUVEZTTVhCYVFWVmlLMkZOWWtoblprbHRkalJsZVhkT1R5c3hNMDFEU1ZGRFRrUkhaSFF2VjBNMGNqa3pVazh5Y0dJS1VVWmlNa3hhYkdFM09HUXJXVGxoUkZKM055OWxkbE0yYldwQlMwSm5aM0ZvYTJwUFVGRlJSRUYzVG01QlJFSnJRV3BCTW5CU1JWbFVSM0ExZDNkbFpncG5TRE16UkRKbGRWaHZjRkJ0YzFrM01reEdZa0ZrTTAxTU4yWk9ORFpLY1daWWVVOHhWVEU0T0d4bFVWcGlabVZOY2tsRFRVVndURzlrYW5CbVRHWktDblZMWlV4b1JqTndSVFpSZEVWS2VHRjFNM0pOZGtsbWRqUjJNRzFHZUdZd1RUZHJWWGxpUnpVNVpIUTFUMVJGVGtST1F6ZzRRVDA5Q2kwdExTMHRSVTVFSUVORlVsUkpSa2xEUVZSRkxTMHRMUzBLIn19fX0="
|
|
54
53
|
}
|
|
55
54
|
],
|
|
56
55
|
"timestampVerificationData": {}
|
|
@@ -58,8 +57,8 @@
|
|
|
58
57
|
"messageSignature": {
|
|
59
58
|
"messageDigest": {
|
|
60
59
|
"algorithm": "SHA2_256",
|
|
61
|
-
"digest": "
|
|
60
|
+
"digest": "QhzKoPCTdAf3cTGMfy79K0FHq8koJuCMFvSvztwHS7c="
|
|
62
61
|
},
|
|
63
|
-
"signature": "
|
|
62
|
+
"signature": "MEYCIQCNSzE2xhjxDtrUYAIcuDf5GbhBDZHIOJk5eGqKS6qUiwIhAKTwEZ28QS6RfAv62BV1++eLNCD1sSK6jjO9eXZnWeGA"
|
|
64
63
|
}
|
|
65
64
|
}
|
|
@@ -128,6 +128,7 @@ function addSetupInitOptions(command) {
|
|
|
128
128
|
return command
|
|
129
129
|
.option('--path <path>', 'Setup path: 1 | 2 | 3 | 4 (semantic ids are also accepted)')
|
|
130
130
|
.option('--postgres-config <path>', 'PostgreSQL env file override for path 1, or private output path for path 3')
|
|
131
|
+
.option('--postgres-bin-dir <path>', 'Directory holding PostgreSQL client tools you installed yourself; setup will not look for or install any')
|
|
131
132
|
.option('--postgres-tls <policy>', 'PostgreSQL TLS policy: disable | require | verify-full')
|
|
132
133
|
.option('--local-postgres-host <host>', 'Path 3 local PostgreSQL loopback host (default: 127.0.0.1)')
|
|
133
134
|
.option('--local-postgres-port <port>', 'Path 3 local PostgreSQL port (default: 5432)', (value) => Number.parseInt(String(value), 10))
|
|
@@ -543,9 +543,9 @@ function defaultNativeRoot() {
|
|
|
543
543
|
return moduleDirectory.endsWith(`${path.sep}dist`) ? bundled : compiledOrSource;
|
|
544
544
|
}
|
|
545
545
|
function injectedNativeManifestSha256() {
|
|
546
|
-
return typeof "
|
|
546
|
+
return typeof "50600a98d6f7643b0dd62d7f6fb9c9761a8d384210dda72b10d4bbb761d3e14a" === 'undefined'
|
|
547
547
|
? undefined
|
|
548
|
-
: "
|
|
548
|
+
: "50600a98d6f7643b0dd62d7f6fb9c9761a8d384210dda72b10d4bbb761d3e14a";
|
|
549
549
|
}
|
|
550
550
|
function sha256(bytes) {
|
|
551
551
|
return createHash('sha256').update(bytes).digest('hex');
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
export function distributionCodename(readOsRelease = () => readFileSync('/etc/os-release', 'utf8')) {
|
|
4
|
+
let content;
|
|
5
|
+
try {
|
|
6
|
+
content = readOsRelease();
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
const match = /^VERSION_CODENAME=("?)([a-z][a-z0-9]*)\1\s*$/mu.exec(content);
|
|
12
|
+
return match?.[2];
|
|
13
|
+
}
|
|
14
|
+
export function planPgClientAcquisition(major, options = {}) {
|
|
15
|
+
const platform = options.platform ?? process.platform;
|
|
16
|
+
const hasCommand = options.hasCommand ?? (() => true);
|
|
17
|
+
if (!Number.isInteger(major) || major <= 0)
|
|
18
|
+
return undefined;
|
|
19
|
+
if (platform === 'darwin') {
|
|
20
|
+
if (!hasCommand('brew'))
|
|
21
|
+
return undefined;
|
|
22
|
+
const args = ['install', `postgresql@${major}`];
|
|
23
|
+
return {
|
|
24
|
+
platform,
|
|
25
|
+
major,
|
|
26
|
+
steps: [{ command: 'brew', args }],
|
|
27
|
+
display: `brew ${args.join(' ')}`,
|
|
28
|
+
needsPrivilege: false,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
if (platform === 'win32') {
|
|
32
|
+
if (!hasCommand('winget'))
|
|
33
|
+
return undefined;
|
|
34
|
+
const args = ['install', '--exact', '--silent', `PostgreSQL.PostgreSQL.${major}`];
|
|
35
|
+
return {
|
|
36
|
+
platform,
|
|
37
|
+
major,
|
|
38
|
+
steps: [{ command: 'winget', args }],
|
|
39
|
+
display: `winget ${args.join(' ')}`,
|
|
40
|
+
needsPrivilege: false,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
if (!hasCommand('apt-get'))
|
|
44
|
+
return undefined;
|
|
45
|
+
const keyPath = '/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc';
|
|
46
|
+
const codename = options.codename ?? distributionCodename();
|
|
47
|
+
if (!codename)
|
|
48
|
+
return undefined;
|
|
49
|
+
const listLine = `deb [signed-by=${keyPath}] https://apt.postgresql.org/pub/repos/apt ${codename}-pgdg main`;
|
|
50
|
+
return {
|
|
51
|
+
platform,
|
|
52
|
+
major,
|
|
53
|
+
steps: [
|
|
54
|
+
{ command: 'apt-get', args: ['update'] },
|
|
55
|
+
{ command: 'apt-get', args: ['install', '-y', 'curl', 'ca-certificates', 'gnupg'] },
|
|
56
|
+
{ command: 'install', args: ['-d', '/usr/share/postgresql-common/pgdg'] },
|
|
57
|
+
{ command: 'curl', args: ['-fsSL', '-o', keyPath, 'https://www.postgresql.org/media/keys/ACCC4CF8.asc'] },
|
|
58
|
+
{ command: 'sh', args: ['-c', `echo '${listLine}' > /etc/apt/sources.list.d/pgdg.list`] },
|
|
59
|
+
{ command: 'apt-get', args: ['update'] },
|
|
60
|
+
{ command: 'apt-get', args: ['install', '-y', `postgresql-client-${major}`] },
|
|
61
|
+
],
|
|
62
|
+
display: `sudo apt-get install -y postgresql-client-${major} (after adding apt.postgresql.org)`,
|
|
63
|
+
needsPrivilege: true,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export function acquirePgClient(options) {
|
|
67
|
+
const plan = planPgClientAcquisition(options.major, {
|
|
68
|
+
platform: options.platform,
|
|
69
|
+
hasCommand: options.hasCommand,
|
|
70
|
+
...(options.codename ? { codename: options.codename } : {}),
|
|
71
|
+
});
|
|
72
|
+
if (!plan)
|
|
73
|
+
return { status: 'unavailable', major: options.major };
|
|
74
|
+
const privileged = options.isPrivileged ?? (() => typeof process.getuid === 'function' && process.getuid() === 0);
|
|
75
|
+
if (plan.needsPrivilege && !privileged()) {
|
|
76
|
+
return { status: 'failed', plan, reason: 'pg_client_acquisition_requires_privilege' };
|
|
77
|
+
}
|
|
78
|
+
try {
|
|
79
|
+
for (const step of plan.steps)
|
|
80
|
+
options.run(step.command, step.args);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
return { status: 'failed', plan, reason: error instanceof Error ? error.message : 'pg_client_acquisition_failed' };
|
|
84
|
+
}
|
|
85
|
+
return { status: 'acquired', plan };
|
|
86
|
+
}
|
|
87
|
+
export function explicitPgBinDir(input) {
|
|
88
|
+
const value = String(input ?? '').trim();
|
|
89
|
+
return value.length > 0 ? path.resolve(value) : undefined;
|
|
90
|
+
}
|
|
@@ -1,16 +1,43 @@
|
|
|
1
|
-
import { existsSync } from 'node:fs';
|
|
1
|
+
import { existsSync, readdirSync } from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
+
function windowsClientDirectories(listDirectory) {
|
|
4
|
+
const root = 'C:\\Program Files\\PostgreSQL';
|
|
5
|
+
const list = listDirectory ?? ((directory) => {
|
|
6
|
+
try {
|
|
7
|
+
return readdirSync(directory);
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
return [];
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
return list(root)
|
|
14
|
+
.map((entry) => ({ entry, major: Number(entry) }))
|
|
15
|
+
.filter((candidate) => Number.isInteger(candidate.major) && candidate.major > 0)
|
|
16
|
+
.sort((left, right) => right.major - left.major)
|
|
17
|
+
.map((candidate) => `${root}\\${candidate.entry}\\bin`);
|
|
18
|
+
}
|
|
19
|
+
export function pgToolCandidates(tool, options = {}) {
|
|
20
|
+
const platform = options.platform ?? process.platform;
|
|
21
|
+
const executable = platform === 'win32' ? `${tool}.exe` : tool;
|
|
22
|
+
const directories = platform === 'darwin'
|
|
23
|
+
? ['/Applications/pgAdmin 4.app/Contents/SharedSupport', '/opt/homebrew/bin', '/usr/local/bin']
|
|
24
|
+
: platform === 'win32'
|
|
25
|
+
? windowsClientDirectories(options.listDirectory)
|
|
26
|
+
: ['/usr/bin', '/usr/local/bin'];
|
|
27
|
+
return [executable, ...directories.map((directory) => path.join(directory, executable))];
|
|
28
|
+
}
|
|
3
29
|
export function resolvePgTool(tool, options = {}) {
|
|
4
30
|
const exists = options.exists ?? existsSync;
|
|
5
|
-
const
|
|
31
|
+
const platform = options.platform ?? process.platform;
|
|
32
|
+
const executable = platform === 'win32' ? `${tool}.exe` : tool;
|
|
6
33
|
if (options.explicit)
|
|
7
34
|
return options.explicit;
|
|
8
35
|
if (options.binDir)
|
|
9
36
|
return path.join(options.binDir, executable);
|
|
10
|
-
const candidates =
|
|
37
|
+
const candidates = platform === 'darwin'
|
|
11
38
|
? ['/Applications/pgAdmin 4.app/Contents/SharedSupport', '/opt/homebrew/bin', '/usr/local/bin']
|
|
12
|
-
:
|
|
13
|
-
?
|
|
39
|
+
: platform === 'win32'
|
|
40
|
+
? windowsClientDirectories(options.listDirectory)
|
|
14
41
|
: ['/usr/bin', '/usr/local/bin'];
|
|
15
42
|
for (const dir of candidates) {
|
|
16
43
|
const candidate = path.join(dir, executable);
|
|
@@ -64,30 +91,39 @@ export function pgEnvironmentFromUrl(repoUrl) {
|
|
|
64
91
|
return env;
|
|
65
92
|
}
|
|
66
93
|
export function parsePgToolMajor(reported) {
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const major = Number(
|
|
71
|
-
return Number.isInteger(major) ? major : undefined;
|
|
94
|
+
const line = reported.trim();
|
|
95
|
+
const marked = /\(PostgreSQL\)\s+(\d+)/i.exec(line);
|
|
96
|
+
const fallback = /(?:^|\s)(\d+)\.\d+/.exec(line);
|
|
97
|
+
const major = Number((marked ?? fallback)?.[1] ?? Number.NaN);
|
|
98
|
+
return Number.isInteger(major) && major > 0 ? major : undefined;
|
|
72
99
|
}
|
|
73
100
|
export function inspectPgToolchain(options) {
|
|
74
101
|
const requiredMajor = options.serverMajor;
|
|
75
102
|
const tools = [];
|
|
76
103
|
let cause;
|
|
77
104
|
for (const tool of ['pg_dump', 'pg_restore']) {
|
|
78
|
-
|
|
79
|
-
|
|
105
|
+
let located;
|
|
106
|
+
let major;
|
|
107
|
+
for (const candidate of pgToolCandidates(tool, { platform: options.platform })) {
|
|
108
|
+
let reported;
|
|
109
|
+
try {
|
|
110
|
+
reported = options.run(candidate, ['--version']);
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
const parsed = parsePgToolMajor(reported);
|
|
116
|
+
located = candidate;
|
|
117
|
+
if (parsed !== undefined) {
|
|
118
|
+
major = parsed;
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (located === undefined) {
|
|
80
123
|
tools.push({ tool });
|
|
81
124
|
cause ??= `community_pg_toolchain_missing:${tool}:required_major_${requiredMajor}`;
|
|
82
125
|
continue;
|
|
83
126
|
}
|
|
84
|
-
let major;
|
|
85
|
-
try {
|
|
86
|
-
major = parsePgToolMajor(options.run(located, ['--version']));
|
|
87
|
-
}
|
|
88
|
-
catch {
|
|
89
|
-
major = undefined;
|
|
90
|
-
}
|
|
91
127
|
tools.push({ tool, path: located, major });
|
|
92
128
|
if (major === undefined) {
|
|
93
129
|
cause ??= `community_pg_toolchain_unusable:${tool}:required_major_${requiredMajor}`;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { acquirePgClient, explicitPgBinDir } from './pg-client-acquisition.js';
|
|
2
|
+
import { inspectPgToolchain } from './pg-tool-location.js';
|
|
3
|
+
import { spawnSync } from 'node:child_process';
|
|
1
4
|
import path from 'node:path';
|
|
2
5
|
import { logInfo, logSuccess, logWarn } from '@aopslabs/xf-cli-ui';
|
|
3
6
|
import { canonicalCommercialJson, managedInstallationLayoutBinding, sha256Commercial, } from '@aopslabs/artifact-trust-contracts';
|
|
@@ -197,6 +200,51 @@ function resolveOfficialCatalogReleasePath(value) {
|
|
|
197
200
|
}
|
|
198
201
|
return path.resolve(normalized);
|
|
199
202
|
}
|
|
203
|
+
async function ensureBackupToolchain(connection, options) {
|
|
204
|
+
const serverMajor = Number(connection.serverMajor);
|
|
205
|
+
if (!Number.isInteger(serverMajor) || serverMajor <= 0) {
|
|
206
|
+
return { action: 'setup.backup-toolchain', status: 'skipped', reason: 'server_major_unknown' };
|
|
207
|
+
}
|
|
208
|
+
const binDir = explicitPgBinDir(options.postgresBinDir);
|
|
209
|
+
const probe = (command, args) => {
|
|
210
|
+
const result = spawnSync(command, args, { encoding: 'utf8' });
|
|
211
|
+
if (result.error || result.status !== 0)
|
|
212
|
+
throw new Error('pg_client_probe_failed');
|
|
213
|
+
return `${result.stdout ?? ''}`;
|
|
214
|
+
};
|
|
215
|
+
const before = inspectPgToolchain({ serverMajor, run: probe, ...(binDir ? { binDir } : {}) });
|
|
216
|
+
if (before.ready) {
|
|
217
|
+
return { action: 'setup.backup-toolchain', status: 'ready', serverMajor, source: binDir ? 'operator' : 'host' };
|
|
218
|
+
}
|
|
219
|
+
const outcome = acquirePgClient({
|
|
220
|
+
major: serverMajor,
|
|
221
|
+
run: (command, args) => {
|
|
222
|
+
const result = spawnSync(command, [...args], { encoding: 'utf8' });
|
|
223
|
+
if (result.error)
|
|
224
|
+
throw result.error;
|
|
225
|
+
if (result.status !== 0)
|
|
226
|
+
throw new Error(`${command} exited with ${result.status ?? 'unknown'}`);
|
|
227
|
+
},
|
|
228
|
+
});
|
|
229
|
+
if (outcome.status !== 'acquired') {
|
|
230
|
+
return {
|
|
231
|
+
action: 'setup.backup-toolchain',
|
|
232
|
+
status: 'action-required',
|
|
233
|
+
serverMajor,
|
|
234
|
+
cause: before.cause,
|
|
235
|
+
...(outcome.status === 'failed' ? { install: outcome.plan.display, reason: outcome.reason } : {}),
|
|
236
|
+
next: 'Install PostgreSQL client tools of this major, or pass --postgres-bin-dir if they are already installed.',
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
const after = inspectPgToolchain({ serverMajor, run: probe, ...(binDir ? { binDir } : {}) });
|
|
240
|
+
return {
|
|
241
|
+
action: 'setup.backup-toolchain',
|
|
242
|
+
status: after.ready ? 'installed' : 'action-required',
|
|
243
|
+
serverMajor,
|
|
244
|
+
installed: outcome.plan.display,
|
|
245
|
+
...(after.ready ? {} : { cause: after.cause }),
|
|
246
|
+
};
|
|
247
|
+
}
|
|
200
248
|
export async function runSetupInitOrchestrator(options = {}, dependencies = {}) {
|
|
201
249
|
const inspectReadiness = dependencies.inspectReadiness ?? inspectSetupReadiness;
|
|
202
250
|
const setupCommunityServer = dependencies.setupCommunityServer ?? runCommunityServerSetup;
|
|
@@ -408,6 +456,7 @@ export async function runSetupInitOrchestrator(options = {}, dependencies = {})
|
|
|
408
456
|
throw error;
|
|
409
457
|
}
|
|
410
458
|
steps.push({ action: 'setup.postgres-connection', ...connection });
|
|
459
|
+
steps.push(await ensureBackupToolchain(connection, options));
|
|
411
460
|
}
|
|
412
461
|
if (selectedPath === 'native-local') {
|
|
413
462
|
const localCheck = initial.checks.find((check) => check.id === 'local-postgresql');
|
package/native/manifest.json
CHANGED
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"capabilityClass": "windows-ntfs-crash-recoverable-v1",
|
|
43
43
|
"qualification": {
|
|
44
44
|
"relativePath": "qualifications/win32-x64.json",
|
|
45
|
-
"sha256": "
|
|
45
|
+
"sha256": "8cc3d15f86ed5b243b4d2ba834f239e57db89c0a9987e5d7ca30ab13cc6b2706"
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
]
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"filesystem": "NTFS",
|
|
8
8
|
"primitiveProfile": "windows-createfile-flush-movefileex-v1",
|
|
9
9
|
"capabilityClass": "windows-ntfs-crash-recoverable-v1",
|
|
10
|
-
"evidenceSha256": "
|
|
10
|
+
"evidenceSha256": "8d22f4416cad09beaa5f8b81b01b3da95cf9f2dca5d270f6f25ce7b67b8dd778",
|
|
11
11
|
"crashInjectionPoints": [
|
|
12
12
|
"authority-history",
|
|
13
13
|
"authority-current",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aopslabs/aops",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.28",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AOPS CLI and terminal setup application.",
|
|
6
6
|
"aopsDockerServerVersion": "0.2.17",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"test:setup-docker": "node --test test/setup-docker-server.test.mjs",
|
|
24
24
|
"test:native-lifecycle": "node --test test/community-native-lifecycle.test.mjs",
|
|
25
25
|
"test:migration-snapshot-gate": "node --test test/community-migration-snapshot-gate.test.mjs",
|
|
26
|
-
"test:backup-gate-parity": "node --test test/community-backup-gate-parity.test.mjs test/community-backup-list.test.mjs test/community-native-backup.test.mjs",
|
|
26
|
+
"test:backup-gate-parity": "node --test test/community-backup-gate-parity.test.mjs test/community-backup-list.test.mjs test/community-native-backup.test.mjs test/pg-client-acquisition.test.mjs",
|
|
27
27
|
"test:migration-auto-dump": "node --test test/community-migration-auto-dump.test.mjs",
|
|
28
28
|
"test:memory-search-window": "node --test test/memory-search-window-shape.test.mjs",
|
|
29
29
|
"test:db-restore-source-root": "node --test test/db-restore-source-root.test.mjs",
|
|
@@ -70,15 +70,16 @@
|
|
|
70
70
|
"test:chat-wake-watch": "node --test test/chat-wake-watch.test.mjs",
|
|
71
71
|
"test:codex-wake": "node --test test/codex-wake.test.mjs",
|
|
72
72
|
"test:commercial-lifecycle-evidence": "node --test test/commercial-lifecycle-evidence.test.mjs test/commercial-lifecycle-evidence-projection.test.mjs",
|
|
73
|
-
"test:commercial-effects": "node --test test/commercial-interruption-removal-effects.test.mjs test/commercial-natural-controls-effects.test.mjs test/commercial-transition-effects.test.mjs"
|
|
73
|
+
"test:commercial-effects": "node --test test/commercial-interruption-removal-effects.test.mjs test/commercial-natural-controls-effects.test.mjs test/commercial-transition-effects.test.mjs",
|
|
74
|
+
"test:pg-client-acquisition": "node --test test/pg-client-acquisition.test.mjs"
|
|
74
75
|
},
|
|
75
76
|
"dependencies": {
|
|
76
77
|
"@aopslabs/aops-agent-runtime": "0.1.0",
|
|
77
|
-
"@aopslabs/aops-server": "0.2.
|
|
78
|
+
"@aopslabs/aops-server": "0.2.22",
|
|
78
79
|
"@aopslabs/artifact-trust-contracts": "0.3.1",
|
|
79
80
|
"@aopslabs/cli-kit": "0.1.0",
|
|
80
81
|
"@aopslabs/aops-host-registration": "0.2.2",
|
|
81
|
-
"@aopslabs/aops-pg-bootstrap": "0.2.
|
|
82
|
+
"@aopslabs/aops-pg-bootstrap": "0.2.7",
|
|
82
83
|
"@aopslabs/aops-runtime-config": "0.2.2",
|
|
83
84
|
"@sigstore/bundle": "4.0.0",
|
|
84
85
|
"@sigstore/protobuf-specs": "0.5.1",
|