6c92f85d10
Bring the Nexus/Praxis/Hexis integration in line with MAVEN_ECOSYSTEM_ARCHITECTURE.md: - Praxis over HTTP: drop the in-process praxis.db open (praxisstore/ praxistools) and call praxisd's /api/v1/tools/* API via a new praxisClient. Honors the "no component reads another's DB" invariant (AC#12). PraxisConfig.DBPath -> URL. - Hexis confirmation gate: mutating capabilities (ReadOnly=false) now park a bound pendingHexis confirmation and require a spoken "да" before executing; read-only run immediately (AC#7, no auto attention->action). - Capability safety: >1 verb match is ambiguous -> ask instead of firing the first; ambiguous Nexus resolution asks for clarification (AC#2). - Correlation IDs on Hexis execute, recorded in the cross-service trace. - Bug: importance arrives as JSON float64 over HTTP, not int. - Tests: confirm-gate, decline, read-only, and ambiguity paths. Build: vendor/ bakes in the hexis client (replace-directed at a sibling repo outside the Docker context); Dockerfile builds from vendor and no longer `go mod download`s the unreachable replace paths. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
239 lines
7.0 KiB
Go
239 lines
7.0 KiB
Go
// Code generated by modernc.org/undup from the per-target sqlite_*.go files; DO NOT EDIT.
|
|
|
|
//go:build (darwin && amd64) || (darwin && arm64) || (freebsd && 386) || (freebsd && amd64)
|
|
|
|
package sqlite3
|
|
|
|
import (
|
|
"unsafe"
|
|
|
|
"modernc.org/libc"
|
|
)
|
|
|
|
// C documentation
|
|
//
|
|
// /*
|
|
// ** Compare the 19-character string zNum against the text representation
|
|
// ** value 2^63: 9223372036854775808. Return negative, zero, or positive
|
|
// ** if zNum is less than, equal to, or greater than the string.
|
|
// ** Note that zNum must contain exactly 19 characters.
|
|
// **
|
|
// ** Unlike memcmp() this routine is guaranteed to return the difference
|
|
// ** in the values of the last digit if the only difference is in the
|
|
// ** last digit. So, for example,
|
|
// **
|
|
// ** compare2pow63("9223372036854775800", 1)
|
|
// **
|
|
// ** will return -8.
|
|
// */
|
|
func _compare2pow63(tls *libc.TLS, zNum uintptr, incr int32) (r int32) {
|
|
var c, i int32
|
|
var pow63 uintptr
|
|
_, _, _ = c, i, pow63
|
|
c = 0
|
|
/* 012345678901234567 */
|
|
pow63 = __ccgo_ts + 1813
|
|
i = 0
|
|
for {
|
|
if !(c == 0 && i < int32(18)) {
|
|
break
|
|
}
|
|
c = (int32(**(**int8)(__ccgo_up(zNum + uintptr(i*incr)))) - int32(**(**int8)(__ccgo_up(pow63 + uintptr(i))))) * int32(10)
|
|
goto _1
|
|
_1:
|
|
;
|
|
i = i + 1
|
|
}
|
|
if c == 0 {
|
|
c = int32(**(**int8)(__ccgo_up(zNum + uintptr(int32(18)*incr)))) - int32('8')
|
|
}
|
|
return c
|
|
}
|
|
|
|
// C documentation
|
|
//
|
|
// /*
|
|
// ** Parse times of the form HH:MM or HH:MM:SS or HH:MM:SS.FFFF.
|
|
// ** The HH, MM, and SS must each be exactly 2 digits. The
|
|
// ** fractional seconds FFFF can be one or more digits.
|
|
// **
|
|
// ** Return 1 if there is a parsing error and 0 on success.
|
|
// */
|
|
func _parseHhMmSs(tls *libc.TLS, zDate uintptr, p uintptr) (r int32) {
|
|
bp := tls.Alloc(48)
|
|
defer tls.Free(48)
|
|
var ms, rScale float64
|
|
var _ /* h at bp+0 */ int32
|
|
var _ /* m at bp+4 */ int32
|
|
var _ /* s at bp+8 */ int32
|
|
_, _ = ms, rScale
|
|
ms = float64(0)
|
|
if _getDigits(tls, zDate, __ccgo_ts+1202, libc.VaList(bp+24, bp, bp+4)) != int32(2) {
|
|
return int32(1)
|
|
}
|
|
zDate = zDate + uintptr(5)
|
|
if int32(**(**int8)(__ccgo_up(zDate))) == int32(':') {
|
|
zDate = zDate + 1
|
|
if _getDigits(tls, zDate, __ccgo_ts+1210, libc.VaList(bp+24, bp+8)) != int32(1) {
|
|
return int32(1)
|
|
}
|
|
zDate = zDate + uintptr(2)
|
|
if int32(**(**int8)(__ccgo_up(zDate))) == int32('.') && libc.Int32FromUint8(_sqlite3CtypeMap[libc.Uint8FromInt8(**(**int8)(__ccgo_up(zDate + 1)))])&int32(0x04) != 0 {
|
|
rScale = float64(1)
|
|
zDate = zDate + 1
|
|
for libc.Int32FromUint8(_sqlite3CtypeMap[libc.Uint8FromInt8(**(**int8)(__ccgo_up(zDate)))])&int32(0x04) != 0 {
|
|
ms = float64(ms*float64(10)) + float64(**(**int8)(__ccgo_up(zDate))) - libc.Float64FromUint8('0')
|
|
rScale = rScale * float64(10)
|
|
zDate = zDate + 1
|
|
}
|
|
ms = ms / rScale
|
|
/* Truncate to avoid problems with sub-milliseconds
|
|
** rounding. https://sqlite.org/forum/forumpost/766a2c9231 */
|
|
if ms > float64(0.999) {
|
|
ms = float64(0.999)
|
|
}
|
|
}
|
|
} else {
|
|
**(**int32)(__ccgo_up(bp + 8)) = 0
|
|
}
|
|
(*TDateTime)(unsafe.Pointer(p)).FvalidJD = 0
|
|
libc.SetBitFieldPtr8Uint32(p+44, libc.Uint32FromInt32(0), 0, 0x1)
|
|
(*TDateTime)(unsafe.Pointer(p)).FvalidHMS = int8(1)
|
|
(*TDateTime)(unsafe.Pointer(p)).Fh = **(**int32)(__ccgo_up(bp))
|
|
(*TDateTime)(unsafe.Pointer(p)).Fm = **(**int32)(__ccgo_up(bp + 4))
|
|
(*TDateTime)(unsafe.Pointer(p)).Fs = float64(**(**int32)(__ccgo_up(bp + 8))) + ms
|
|
if _parseTimezone(tls, zDate, p) != 0 {
|
|
return int32(1)
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// C documentation
|
|
//
|
|
// /*
|
|
// ** Parse a timezone extension on the end of a date-time.
|
|
// ** The extension is of the form:
|
|
// **
|
|
// ** (+/-)HH:MM
|
|
// **
|
|
// ** Or the "zulu" notation:
|
|
// **
|
|
// ** Z
|
|
// **
|
|
// ** If the parse is successful, write the number of minutes
|
|
// ** of change in p->tz and return 0. If a parser error occurs,
|
|
// ** return non-zero.
|
|
// **
|
|
// ** A missing specifier is not considered an error.
|
|
// */
|
|
func _parseTimezone(tls *libc.TLS, zDate uintptr, p uintptr) (r int32) {
|
|
bp := tls.Alloc(32)
|
|
defer tls.Free(32)
|
|
var c, sgn int32
|
|
var _ /* nHr at bp+0 */ int32
|
|
var _ /* nMn at bp+4 */ int32
|
|
_, _ = c, sgn
|
|
sgn = 0
|
|
for libc.Int32FromUint8(_sqlite3CtypeMap[libc.Uint8FromInt8(**(**int8)(__ccgo_up(zDate)))])&int32(0x01) != 0 {
|
|
zDate = zDate + 1
|
|
}
|
|
(*TDateTime)(unsafe.Pointer(p)).Ftz = 0
|
|
c = int32(**(**int8)(__ccgo_up(zDate)))
|
|
if c == int32('-') {
|
|
sgn = -int32(1)
|
|
} else {
|
|
if c == int32('+') {
|
|
sgn = +libc.Int32FromInt32(1)
|
|
} else {
|
|
if c == int32('Z') || c == int32('z') {
|
|
zDate = zDate + 1
|
|
libc.SetBitFieldPtr8Uint32(p+44, libc.Uint32FromInt32(0), 4, 0x10)
|
|
libc.SetBitFieldPtr8Uint32(p+44, libc.Uint32FromInt32(1), 3, 0x8)
|
|
goto zulu_time
|
|
} else {
|
|
return libc.BoolInt32(c != 0)
|
|
}
|
|
}
|
|
}
|
|
zDate = zDate + 1
|
|
if _getDigits(tls, zDate, __ccgo_ts+1194, libc.VaList(bp+16, bp, bp+4)) != int32(2) {
|
|
return int32(1)
|
|
}
|
|
zDate = zDate + uintptr(5)
|
|
(*TDateTime)(unsafe.Pointer(p)).Ftz = sgn * (**(**int32)(__ccgo_up(bp + 4)) + **(**int32)(__ccgo_up(bp))*int32(60))
|
|
if (*TDateTime)(unsafe.Pointer(p)).Ftz == 0 { /* Forum post 2025-09-17T10:12:14z */
|
|
libc.SetBitFieldPtr8Uint32(p+44, libc.Uint32FromInt32(0), 4, 0x10)
|
|
libc.SetBitFieldPtr8Uint32(p+44, libc.Uint32FromInt32(1), 3, 0x8)
|
|
}
|
|
goto zulu_time
|
|
zulu_time:
|
|
;
|
|
for libc.Int32FromUint8(_sqlite3CtypeMap[libc.Uint8FromInt8(**(**int8)(__ccgo_up(zDate)))])&int32(0x01) != 0 {
|
|
zDate = zDate + 1
|
|
}
|
|
return libc.BoolInt32(int32(**(**int8)(__ccgo_up(zDate))) != 0)
|
|
}
|
|
|
|
// C documentation
|
|
//
|
|
// /*
|
|
// ** Parse dates of the form
|
|
// **
|
|
// ** YYYY-MM-DD HH:MM:SS.FFF
|
|
// ** YYYY-MM-DD HH:MM:SS
|
|
// ** YYYY-MM-DD HH:MM
|
|
// ** YYYY-MM-DD
|
|
// **
|
|
// ** Write the result into the DateTime structure and return 0
|
|
// ** on success and 1 if the input string is not a well-formed
|
|
// ** date.
|
|
// */
|
|
func _parseYyyyMmDd(tls *libc.TLS, zDate uintptr, p uintptr) (r int32) {
|
|
bp := tls.Alloc(48)
|
|
defer tls.Free(48)
|
|
var neg, v1 int32
|
|
var _ /* D at bp+8 */ int32
|
|
var _ /* M at bp+4 */ int32
|
|
var _ /* Y at bp+0 */ int32
|
|
_, _ = neg, v1
|
|
if int32(**(**int8)(__ccgo_up(zDate))) == int32('-') {
|
|
zDate = zDate + 1
|
|
neg = int32(1)
|
|
} else {
|
|
neg = 0
|
|
}
|
|
if _getDigits(tls, zDate, __ccgo_ts+1214, libc.VaList(bp+24, bp, bp+4, bp+8)) != int32(3) {
|
|
return int32(1)
|
|
}
|
|
zDate = zDate + uintptr(10)
|
|
for libc.Int32FromUint8(_sqlite3CtypeMap[libc.Uint8FromInt8(**(**int8)(__ccgo_up(zDate)))])&int32(0x01) != 0 || int32('T') == libc.Int32FromUint8(**(**Tu8)(__ccgo_up(zDate))) {
|
|
zDate = zDate + 1
|
|
}
|
|
if _parseHhMmSs(tls, zDate, p) == 0 {
|
|
/* We got the time */
|
|
} else {
|
|
if int32(**(**int8)(__ccgo_up(zDate))) == 0 {
|
|
(*TDateTime)(unsafe.Pointer(p)).FvalidHMS = 0
|
|
} else {
|
|
return int32(1)
|
|
}
|
|
}
|
|
(*TDateTime)(unsafe.Pointer(p)).FvalidJD = 0
|
|
(*TDateTime)(unsafe.Pointer(p)).FvalidYMD = int8(1)
|
|
if neg != 0 {
|
|
v1 = -**(**int32)(__ccgo_up(bp))
|
|
} else {
|
|
v1 = **(**int32)(__ccgo_up(bp))
|
|
}
|
|
(*TDateTime)(unsafe.Pointer(p)).FY = v1
|
|
(*TDateTime)(unsafe.Pointer(p)).FM = **(**int32)(__ccgo_up(bp + 4))
|
|
(*TDateTime)(unsafe.Pointer(p)).FD = **(**int32)(__ccgo_up(bp + 8))
|
|
_computeFloor(tls, p)
|
|
if (*TDateTime)(unsafe.Pointer(p)).Ftz != 0 {
|
|
_computeJD(tls, p)
|
|
}
|
|
return 0
|
|
}
|
|
|
|
/* Forward declaration */
|